8.2 Blog

(Difference between pages)
No edit summary
 
No edit summary
 
Line 1: Line 1:
{{DISPLAYTITLE:Blog}}
{{DISPLAYTITLE:Workflows}}
<bookshelf src="Book:User manual" />
==Introduction==
In BlueSpice 4.1, workflows are based on [[:de:Business_Process_Model_and_Notation|BPMN 2.0]]. Four different types of page-based workflows are already integrated. Their purpose is a page review to obtain feedback via a user vote or to trigger a page approval. In the following, these workflows are therefore called review workflows.


The extension ''BlueSpiceSocialBlog'' is part of ''BlueSpiceSocial'', the communications module of BlueSpice. In addition to the type blog, there are other types of so-called social entities, such as ''comment'', ''discussion topic'', ''attachment'', or ''microblog''.  
{| class="wikitable" style="width:100%;"
|+Types of reviews
! style="width:300px;" |Workflow type
! style="width:100px;" |Participants
!Description
|-
| style="width:300px;" |'''[[Manual:Extension/Workflows#Single user approval|Single user approval]]'''
| style="width:100px;" |1 user
|A single user is asked to vote about a page.  If a user submits a positive vote, the page is automatically approved.
|-
| style="width:300px;" |'''[[Manual:Extension/Workflows#Expert document control|Expert document control]]'''
| style="width:100px;" |3 users
|After a page has been edited by a specific user, the page is reviewed by an expert and then approved by a  user who is responsible for approvals.
|-
| style="width:300px;" |'''[[Manual:Extension/Workflows#Goup Feedback|Group feedback]]'''
| style="width:100px;" |1 group
|A group (which needs to exist in the group manager) is requested to leave a comment on a page.
|-
| style="width:300px;" |'''[[Manual:Extension/Workflows#Single user feedback|Single user feedback]]'''
| style="width:100px;" |1 user
|A user is asked to send a comment regarding a page.
|}


==About the blog==
==Workflow activities==
Basically, a blog is a list of comments, questions, or feedback from different users. The blog is often sorted chronologically.  Lively communication can arise when blog entries are further commented, recommended, linked with related articles, or placed on a personal watchlist.
All approval workflows start with a form where the necessary workflow data is entered by the workflow initiator. Each workflow results in one or more workflow activities.  
The blog is ready to use on the special page ''Special:Blog''. This page is linked directly from the main navigation in every new wiki installation. So you can start using the blog right away.
[[File:nav-blog.png|alt=Navigation link to the blog page|center|thumb|202x202px|Navigation link to the blog page]]


== Characteristics and features ==
===Single user approval===
'''Purpose:''' Approval of a draft page by a user with approval rights. This workflow only makes sense if the approval function ([[Reference:FlaggedRevs|FlaggedRevs]]) is activated on a page.


* A blog entry consists of a title and content.
'''Workflow instances:''' Only one approval workflow can run per page.


* '''Comments:''' Users can leave comments to each blog entry.
[[File:Manual:bpmn-SingleUserApproval.svg|center|thumb|750x750px|BPMN diagram of a "Single user approval" workflow|alt=BPMN diagram of a "Single user approval" workflow]]
{| class="wikitable" style="width:100%;"
! style="width:200px;" |Activity
!Description
|-
| style="width:200px;" | CollectData
|In the first workflow step, the workflow initiator enters the settings:


* '''Actions:'''
*''User:'' ser who is assigned to the task.
** '''Delete:''' Editors can delete their own posts. Administrators can delete all posts. Deleted posts are no longer displayed. Exception: Administrators see deleted items with a red background and can restore them.
*''Instructions:'' A comment or instructions for the user to understand the task.
** '''Recommend:''' Blog posts can be recommended. It is possible to generate a list of posts with the most recommendations via the timeline filter. (See: Embedding the blog on a page)
*''Send report to:'' An email report with the results will be sent to this email address when the review is finished. If a username is specified here, an email address must be stored in the user administration so that the report can be sent.
** '''Linked page:''' Every blog entry is connected to a wiki page by the system. By default, this is the main page of the wiki. However, other pages can be added as "Linked page". Blog entries can then be filtered for linked pages via the ''Special:Timeline'' page.
|-
** '''Watch:''' Own blog posts and comments are automatically added to the watch list.
| style="width:200px;" |PageCheckout
* '''Permissions:''' It is possible to allow users with read permissions on the wiki to comment on blog entries. See: [[Manual:Extension/BlueSpiceSocial#Permissions|BlueSpiceSocial Permissions]].
|The page is locked for editing by other wiki users. Only the user  with the workflow task can edit while this workflow is running.
|-
| style="width:200px;" |UserVote
|The assigned user carries out a vote and either accepts the page or rejects it. Alternatively, the task can be delegated. In the event of a rejection, the workflow skips the next step (ApprovePage).
|-
| style="width:200px;" | ApprovePage
|'''Only if''' the user has submitted a positive vote (accept), the page is set to an approved state.
|-
| style="width:200px;" |SendMail
|An email report is sent to the report recipient who was specified in the first step.
|-
| style="width:200px;" |PageCheckin
|The page is unlocked.
|}
{{Icon|bi bi-arrow-right-circle|||}}  [https://github.com/wikimedia/mediawiki-extensions-BlueSpiceDistributionConnector/blob/4.1.3/workflow/UserApproval.bpmn View BPMN]
===Expert document control===
'''Purpose:''' Approval of a draft page according to the "4-eyes principle".


==Adding the blog to a page==
'''Workflow instances:''' A page can only have one approval worfklow at a time.
It is also possible to include the blog functionality on any wiki page. Social contributions of many types can be consolidated and displayed chronologically in a timeline and filtered and sorted as needed.


=== All blog entries ===
[[File:Manual:bpmn-ExpertDocControl.svg|center|thumb|550x550px|BPMN diagram of the "Expert document control" workflow|alt=BPMN diagram of the "Expert document control" workflow]]
If you want to include a view of your blog on another page of your wiki, for example your homepage, you need to insert the necessary codeblock in the source code of your page.
{| class="wikitable" style="width:100%;"
! style="width:200px;" |Activity
! Description
|- style="height:25px;"
| style="width:200px;" |CollectData
|In the first workflow step, the workflow initiator enters the settings:
''User:'' User who is assigned to a task. Three different users have to be specified: '''Editor''', '''Reviewer''', '''Approver'''


'''To include a blog view:'''
''Instructions:'' A comment or instructions for the users to understand their tasks.


#'''Go to''' the page where you want to insert the blog or create a new page.
''Send report to:'' An email report with the results will be sent to this email address when the review is finished. If a username is specified here, an email address must be stored in the user administration so that the report can be sent.
#'''Open the page''' in ''Source editing'' mode.
|-
#'''Copy the following code block''' to the section in your page where you want to show the blog.<syntaxhighlight lang="html">
| style="width:200px;" | PageCheckout
 
|The page is locked for users who do not participate in the workflow. Only the '''Editor''' (first workflow participant) can edit the page during checkout. While the '''Reviewer''' (second participant)  of the workflow is reviewing the page, the page stays checked-out to thecan edit the page can edit the page during checkout.checkout. in case the Reviewer requests more edits.
<bs:timeline>
  {
    "showentitylistmenu": true,
    "preloadtitles": {
        "blog": "Template:Blog"
    },
    "preloadedentities": [{
        "type": "blog"
    }],
    "headlinemessagekey": "Community-Blog",
      "showheadline": true,
    "usemorescroll": false,
    "morelink": "Special:Blog",
    "limit": 5,
    "sort": [ {
        "property": "timestampcreated",
        "direction": "DESC"
    }],
    "lockedfilternames": [
        "type"
    ],
    "filter": [ {
        "type": "list",
        "property": "type",
        "value": [ "blog" ],
        "comparison": "ct"
    }]
}
</bs:timeline>
</syntaxhighlight>After saving the page, you will see a list of existing blog entries based on the filter and sorting criteria you provided.
 
=== Blog entries of a linked page ===
If you want to create a blog that only displays the posts of the blog posts created on this page, copy the following timeline tag. Here, under the preloadedentities, new blog entries are already linked to the page and filtered. Replace Blog1 under preloadedentities and in the filter section with the appropriate page name:<syntaxhighlight lang="json">
<bs:timeline>
{
    "showentitylistmenu": true,
    "preloadtitles": {
        "blog": "Vorlage:Blog"
    },
      "preloadedentities": [{
        "type": "blog",
        "tags":["Blog1"]
    }],
    "headlinemessagekey": "Community-Blog",
      "showheadline": true,
    "usemorescroll": false,
    "morelink": "Special:Blog",
    "limit": 5,
    "sort": [ {
        "property": "timestampcreated",
        "direction": "DESC"
    }],
    "lockedfilternames": [
        "type"
    ],
"filter": [ {
      "property": "type",
      "value": ["blog"],
      "comparison": "ct",
      "type": "list"},
      {
      "property": "tags",
      "value": ["Blog1"],
      "comparison": "ct",
      "type": "list" },
      {
      "property":"archived",
      "value":false,
      "type":"boolean",
      "comparison":"eq"}
  ]
 
}
</bs:timeline>         
</syntaxhighlight>
 
==Blog parameters==
 
===Output format===
The following table shows the blog elements and the necessary paramaters to create the output.
[[File:blog-layout-en.png|alt=Blog output|center|thumb|750x750px|Blog output]]
{| class="wikitable" style=""
|+
! style="width:90px;" |Element
! style="width:150px;" |Parameters
!Parameter and element description
! style="width:80px;" |Type
! style="width:80px;" |Default value
|-
|-
| rowspan="2" style="width:90px;" |1 - header
| style="width:200px;" |EditPage
| style="width:150px;" |headlinemessagekey
|The '''Editor''' user can edit the page and completes the task without comment.
|Header text
| style="width:80px;" |string
| style="width:80px;" |''Timeline''
|-
|-
| style="width:150px;" |showheadline
| style="width:200px;" |UserVote
|Show the header text
|After the '''Edito'''r step has been completed, the '''Reviewer''' user can review the page and submit a vote. Editing by the '''Reviewer''' is not possible. As an alternative, the '''Reviewer''' can delegate the task.  If the vote is positive (Approve), the workflow continues. If the '''Reviewer''' rejects, the workflow goes back to the '''Editor'''.
| style="width:80px;" |boolean
| style="width:80px;" |''true''
|-
|-
| rowspan="7" style="width:90px;" |2 - blog menu
| style="width:200px;" |PageCheckin
| style="width:150px;" |showentitylistmenu
|After the '''Reviewer''' submits a positive vote (accept), the page is checked in and the workflow continues.
|Show or hide the blog menu
| style="width:80px;" |boolean
| style="width:80px;" |''true''
|-
|-
| style="width:150px;" |showentityspawner
| style="width:200px;" |PageCheckout
|Show the menu item for creating a blog entry
|In this step, the page checkout locks the page for editing completely. The '''Approver''' user will not be able to change the page, but needs to approve it.
| style="width:80px;" |boolean
| style="width:80px;" |''true''
|-
|-
| style="width:150px;" |availablesorterfields
| style="width:200px;" |ApprovePage
|Determines which data fields are included as sorting options in the sort menu. Example: allow sorting only by date created or by the user who created a blog entry:
|The Approver can either complete or delegate the task. After the '''Approver''' (or the delegate) finishes the assigned task, the page is set from "draft" to "approved" status if the page was in draft status (only if the approver submits a positive vote). If not, this step is skipped.
<code>"availablesorterfields":["timestampcreated","ownerid"]</code>
 
[[File:Manual:blog-filter-timestampcreated.png|350x350px]]
 
[[Manual:Extension/BlueSpiceSocialBlog#Sor|List of typical sort fields]]
| style="width:80px;" |array
| style="width:80px;" |all
|-
|-
| style="width:150px;" |lockedoptionnames
| style="width:200px;" |SendMail
|Determines which settings for sorting the user cannot change.
|If an email or user was specified in the workflow settings, the report is now getting sent to that user.
| style="width:80px;" |array
| style="width:80px;" |[]
|-
|-
| style="width:150px;" |availablefilterfields
| style="width:200px;" |PageCheckin
|Determines which data fields are included as filter options in the filter menu. Example: allow filtering based on Creation date and Linked pages:
|The page gets unlocked for editing.
<code>"availablefilterfields":["timestampcreated","tags"]</code>
|}
 
<span><span /><span /><br /></span>
{{Icon|bi bi-arrow-right-circle|||}}  [https://github.com/wikimedia/mediawiki-extensions-BlueSpiceDistributionConnector/blob/4.1.3/workflow/DocumentControl.bpmn view BPMN]


[[File:Manual:blog-filter-availablefilterfields.PNG|350x350px|]]
===Group feedback===
| style="width:80px;" |array
'''Purpose:''' Obtaining feedback from the members of a user group. The group must exist in the [[Reference:BlueSpiceGroupManager|group manager]].
| style="width:80px;" |all
|-
| style="width:150px;" |lockedfilternames
|Determines which settings for filtering the user cannot change.
Example: a user cannot change the filter values for ''Linked pages.'' The text field is greyed out:


<code>"lockedfilternames": ["tags"]</code>
'''Workflow instances:''' Several feedback workflows can run independently of one another on one page at the same time.


[[File:Manual:blog-filter-lockedfilternames.png|350x350pxg|alt=|350x350px]]
[[File:Manual:bpmn-GroupFeedback..svg|center|thumb|450x450px|BPMN diagram of the "Group feedback" workflow|alt=BPMN diagram of the "Group feedback" workflow]]
<span /><span /><span /><span /><span /><span /><span /><br />
{| class="wikitable" style="width:100%;"
| style="width:80px;" |array
! style="width:200px;" |Activity
| style="width:80px;" |[]
!Description
|-
|-
| style="width:150px;" |persistsettings
| style="width:200px;" | CollectData
|Initial settings and custom sort and filter settings are included in the page url. The url can then be used to create a link to the page with the same filter and sort settings.
| In the first workflow step, the workflow initiator enters the settings:
<code>"persistsettings":true</code>


[[File:Manual:blog-filter-persistsettings.png|alt=|300x300px]]
* ''Group:'' User group who is assigned to the task.
| style="width:80px;" |boolean
* ''Instructions:'' A comment or instructions for the users to understand their task.
| style="width:80px;" |''false''
* S''end report to:'' An email report with the results will be sent to this email address when the review is finished. If a username is specified here, an email address must be stored in the user administration so that the report can be sent.
|-
|-
| style="width:90px;" |3 - new blog entry
| style="width:200px;" |GroupFeedback
| style="width:150px;" |preloadentities<span /><span /><span /><span /><span /><span /><span /><br />
|All users in the assigned group provide feedback via a comment field. This is a parallel workflow, which means that the order of the feedback does not matter.
|Shows the text field for creating a new blog entry. If it is not set, the text field is not available.
|-
To show the text field:
| style="width:200px;" |SendMail
|If an email or user was specified in the workflow settings, the report is now getting sent to that user.
|}


<code>"preloadedentities": [{"type":"blog"}]</code>
{{Icon|bi bi-arrow-right-circle|||}}  [https://github.com/wikimedia/mediawiki-extensions-Workflows/blob/4.1.1/workflow/GroupFeedback.bpmn view BPMN]


<span><span /><span /><span /><span /><span /><br /></span>
===Feedback===
If the wiki page that has a <code><nowiki><bs:timeline></nowiki></code> tag should only show its own blog entries, then all blog entries need to be automatically tagged with the current page name:
'''Purpose:''' Obtaining feedback from a single user on a page.


<code>"preloadedentities": [{</code>
'''Workflow instances:''' Multiple feedback worfklows can run independently of one another on one page at the same time.


<code>         "type": "blog",</code>
[[File:Manual:bpmn-UserFeedback.svg|center|thumb|500x500px|BPMN diagram of the "Single user feedback" workflow|alt=BPMN diagram of the "Single user feedback" workflow]]
 
{| class="wikitable" style="width:100%;"
<code>         "tags":["Blog1"]</code>
! style="width:200px;" |Activity
 
!Description
<code>     }]</code>
 
In the example above, <code>Blog1</code> is the associated page for all blog entries that are created on this page. The [[Manual:Extension/BlueSpiceSocialBlog#Filtering|blog filter]] <span>has to be adjusted accordingly to take the associated page into consideration.</span>
| style="width:80px;" |array of objects
| style="width:80px;" | -
|-
|-
| rowspan="2" style="width:90px;" |4 - existing blog entry
| style="width:200px;" |CollectData
| style="width:150px;" |outputtypes
|In the first workflow step, the workflow initiator enters the settings:
|It defines the display format of the blog entry.
 
Standard types are: ''List, Short, Default, Page.'' ([[Manual:Extension/BlueSpiceSocialBlog#Output type examples|see examples]])


Each blog entry is a "social entity".
* ''User:'' User who is assigned to the task.
| style="width:80px;" |object
* ''Instructions:'' A comment or instructions for the users to understand their task.
| style="width:80px;" |''Default''
* Send report to: An email report with the results will be sent to this email address when the review is finished. If a username is specified here, an email address must be stored in the user administration so that the report can be sent.
|-
| style="width:150px;" |limit
|Defines how many social entities are loaded initially.
| style="width:80px;" |object
| style="width:80px;" |''Default''
|-
|-
| style="width:90px;" |4a - avatar
| style="width:200px;" | UserFeedback
| style="width:150px;" |<nowiki>-</nowiki>
|The assigned user sends a comment.
|Shows the avatar of the user who created the blog entry or comment. It is displayed in all output types except ''List.''
| style="width:80px;" |<nowiki>-</nowiki>
| style="width:80px;" |<nowiki>-</nowiki>
|-
|-
| style="width:90px;" |4b - info area
| style="width:200px;" |SendMail
| style="width:150px;" |<nowiki>-</nowiki>
|If an email or user was specified in the workflow settings, the report is now getting sent to that user.
|Link to the comments and "last edit" info.
| style="width:80px;" |<nowiki>-</nowiki>
| style="width:80px;" |<nowiki>-</nowiki>
|-
| style="width:90px;" |4c - blog entry content
| style="width:150px;" |<nowiki>-</nowiki>
|Shows the text body of a blog entry. The output type ''Default'' collapses the blog entry content after the first paragraph with a "More" link.
| style="width:80px;" |<nowiki>-</nowiki>
| style="width:80px;" |<nowiki>-</nowiki>
|-
| style="width:90px;" |4d - actiion menu
| style="width:150px;" |<nowiki>-</nowiki>
|Actions: ''edit, delete, recommend, Linked page, watch''
[[File:Manual:blog-editmenu.png|200x200px]]
| style="width:80px;" |<nowiki>-</nowiki>
| style="width:80px;" |<nowiki>-</nowiki>
|-
| style="width:90px;" | 5 - new comment
| style="width:150px;" |<nowiki>-</nowiki>
|Text field for creating a new comment.
| style="width:80px;" |<nowiki>-</nowiki>
| style="width:80px;" |<nowiki>-</nowiki>
|-
| style="width:90px;" |6 - existing comment
| style="width:150px;" |<nowiki>-</nowiki>
|Comments include the social tag ''Recommend.''
 
Each comment is a "social entity".
| style="width:80px;" |<nowiki>-</nowiki>
| style="width:80px;" |<nowiki>-</nowiki>
|-
| rowspan="3" style="width:90px;" |7 - "more" button
| style="width:150px;" |morelink
|Link target of the "more" button. For blogs, it makes sense to link to the page ''Special:Blog''.
| style="width:80px;" |str
| style="width:80px;" |''Special:Timeline''
|-
| style="width:150px;" |useendlessscroll
|More blog entries are automatically loaded after the user scrolls to the end of the blog.
| style="width:80px;" |boolean
| style="width:80px;" |''true''
|-
| style="width:150px;" |showentitylistmore
| Shows a "more" button below the blog which loads more blog entries on click. This is only possible if ''useendlessscroll'' is set to ''false''.
| style="width:80px;" |boolean
| style="width:80px;" |''false''
|}
|}


===Sorting===
{{Icon|bi bi-arrow-right-circle|||}}  [https://github.com/wikimedia/mediawiki-extensions-Workflows/blob/4.1.1/workflow/UserFeedback.bpmn view BPMN]
Most commonly, a blog shows the latest blog entries first. However, there are many different options for sorting the list of blog entries.


====Syntax====
==Overview page==
<syntaxhighlight lang="json">
All workflows in the wiki are listed on the page ''Special:Workflows overview''. A view for all ''active'' workflows and a view for ''all'' workflows can be selected.
[{
[[File:Manual:wf-overview.png|alt=Workflows overview page|center|thumb|650x650px|Workflows overview page]]
=== Tasks overview===
Users are informed about new and pending tasks in their notifications. They can view assigned workflows on their  [[Reference:UnifiedTaskOverview|''My tasks'']]  page.


"property": "timestamptouched",
== Notifications ==


"direction": "DESC"
=== Events that trigger notifications ===
There are two types of events that trigger notification


}]
* '''generic:''' notifications happen for every workflow/activity type
</syntaxhighlight>
* '''activity-specifiy''': activities themselves can decide to send additional notifications


====Properties====
There are some common properties of a blog entry that are useful for sorting:
{| class="wikitable" style=""
{| class="wikitable" style=""
|+
!Triggering event
!Property
!Recipients
!Description
!Generic
!Notes
|-
|-
|timestampcreated
|'''Task started'''
|creation date
(task assigned)
|All assigned users
|Yes
|Only triggered for type  ''UserInteractiveActivity,'' i.e., only for activities that have users assigned.
|-
|-
|timestamptouched
|'''Workflow aborted'''
|last edit date
(manual or automatic)
|Initiator and all users that were assigned to the current task at time of aborting (not users who were assigned on previous tasks)
|Yes
|
|-
|-
|commentcount
|'''Workflow ended'''
|number of comments
(only when naturally ended, not when aborted)
|Initiator
|Yes
|
|-
|-
|ratingcount
|'''DueDateClose'''
|number of ratings
(2 days before Workflow will expire)
|-
|Initiator and all currently assigned users
|ownerid
|Yes
| username of the creator of a blog entry
|
|-
|ownerrealname
|real name of the user
|}
 
====Direction====
Blog entries can be sorted in descending and ascending order. Descending is the default order.
{| class="wikitable" style=""
|+
!Property
! Description
|-
|-
|DESC
|'''Workflow expired'''
|sorts the blog entries in descending order
|Initiator and all currently assigned users
|Yes
|Expiration is just a type of workflow abort, so the same notification as for abort will be sent with the reason explaining that the workflow expired.
|-
|-
|ASC
|'''Task delegated'''
|sorts the blog entries in ascending order
|User to whom the task was delegated
|No
|Specific to ''UserVote'' activity. After delegation, the newly assigned user will be considered assigned and will receive all further notifications that go out to assigned users.
|}
|}


===Filtering ===
=== Sending out notifications ===
Without setting the filter parameter, there will be no output on the page.
 
To show the blog entries of your wiki, include the following codeblock like shown in the code example above:<syntaxhighlight lang="json-object">
"filter": [ {
        "type": "list",
        "property": "type",
        "value": [ "blog" ],
        "comparison": "ct"
    }]
</syntaxhighlight>This filter includes all social entities which match the type ''blog''. Since we only want to show social entities of type ''blog'', we only include ''blog'' entries in our filter.
If you want to create a social timeline rather than a blog view, you can also add other types of social entities. The following example shows a timeline view that includes blog entries, discussion entries from wiki pages, and user profile information:<syntaxhighlight lang="json-object">
"filter": [ {
        "type": "list",
        "property": "type",
        "value": ["blog","topic","profile"],
        "comparison": "ct"
    }]
</syntaxhighlight>
 
=== <span class="mw-headline">Filtering associated pages</span> ===
Wenn ein eingebundenes Blog nur Beiträge zeigen soll, die mit dem Seitennamen (z.B. ''Blog1'') verknüpft sind, muss dieses in den [[:de:Handbuch:Erweiterung/BlueSpiceSocialBlog#Blog-Parameter|Blog-Parametern (siehe preloadedentities)]] definiert werden und anschließend im Filter angegeben werden:


If an embedded blog should only show posts that are associated with a paritcular page name (e.g., Blog1), this must be defined in the [[Manual:Extension/BlueSpiceSocialBlog#Blog parameters|blog parameters]] (see ''preloadedentities'') and then specified in the filter:<syntaxhighlight lang="json">
* Users can choose whether to subscribe to e-mail notifications in their preferenceds. All users are force-subscribed to web notifications.
"filter": [ {
* Web notifications are sent out immediatelly after triggering, while email notifications will be sent async, on runJobs.php execution. This applies to notifications in general, not only to workflows
      "property": "type",  
      "value": ["blog"],
      "comparison": "ct",
      "type": "list"},
      {
      "property": "tags",
      "value": ["Blog1"],
      "comparison": "ct",
      "type": "list" },
      {
      "property":"archived",
      "value":false,
      "type":"boolean",
      "comparison":"eq"}
  ]


</syntaxhighlight>
== Workflow triggers ==
Workflows can either be started manually on each wiki page or started only under certain conditions using individual [[Manual:Extension/Workflows/Triggers|workflow triggers]]. Triggers also allow to define in which namespaces both manual and automatic workflows are available.


==Output type examples==
==How to add a custom workflow==
The output type for a blog is added using the ''outputtypes'' parameter. Don't forget to include a comma before and after this parameter (unless this is the last parameter in your code):<syntaxhighlight lang="json-object">
Users can upload an xml-file of a BPMN diagram with custom activities to the wiki. Currently, the following predefined activities exist:  
"outputtypes": {
        "blog": "Default"
    }
</syntaxhighlight>


===Default===
'''Extension: Workflows'''  
The output type ''Default'' shows the content of a blog entry truncated after the first paragraph. To view the full text, users can click on the ''More'' link.
[[File:Manual:blog-output-default.png|center|650x650px|alt="Default" output|thumb|"Default" output]]
<span /><span /><span /><span /><span /><span /><span /><br />


===Short===
*[[Manual:Extension/Workflows/Activity/CustomForm|CustomForm]]
The output type ''Short'' does not show the content of the blog entry. To view the content, a user has to click on the title of a blog entry. This loads the actual page for the selected blog entity.
*[[Manual:Extension/Workflows/Activity/UserVote|UserVote]]
<span /><span /><span /><span /><span /><span /><span /><br />
*[[Manual:Extension/Workflows/Activity/GroupVote|GroupVote]]
[[File:Manual:blog-output-short.png|center|650x650px|alt="Short" output|thumb|"Short" output]]
*[[Manual:Extension/Workflows/Activity/UserFeedback|UserFeedback]]
<span /><span /><span /><span /><span /><span /><span /><br />
*[[Manual:Extension/Workflows/Activity/GrouppFeedback|GroupFeedback]]
*[[Manual:Extension/Workflows/Activity/SendMail|SendMail]]
*[[Manual:Extension/Workflows/Activity/EditRequest|EditRequest]]


===Page ===
<span><span /><span /><br /></span>
The output type ''Page'' shows all blog elements, including the comments, in an expanded view.
'''Extension: PageCheckout'''
<span /><span /><span /><span /><span /><span /><span /><br />
[[File:Manual:blog-output-page.png|center|650x650px|alt="Page" output|thumb|"Page" output]]


===List===
*[[Manual:Extension/Workflows/Activity/PageCheckOut|PageCheckOut]]
The output type ''List'' only shows the title and the timestamp.
*[[Manual:Extension/Workflows/Activity/PageCheckIn|PageCheckIn]]
<span /><span /><span /><span /><span /><span /><span /><br />
[[File:Manual:blog-output-list.png|center|alt="List" output|thumb|450x450px|"List" output]]


<span><span /><span /><span /><span /><span /><span /><br /></span>
<span><span /><span /><br /></span>
==Setting blog permissions==
'''Extension: BlueSpiceFlaggedRevsConnector'''


===Using the  "commenter" role===
*[[Manual:Extension/Workflows/Activity/ApprovePage|ApprovePage]]
In general, all users with edit rights can create blog entries and comments. However, the ''commenter'' role in the [[Manual:Extension/BlueSpicePermissionManager|Permission manager]] does not allow you to create blog entries. This role only assigns the right to create comments on existing blog entries. See also [[Manual:Extension/BlueSpiceSocial#Permissions|BlueSpiceSocial permissions]].


===Using groups===
Example of a customized workflow (coming soon)
{{BSVersion|bsvFrom=4.2|bsvTo=|bsvFeature=}}
If a blog is integrated into a page, the creation and editing of discussion posts and comments can be restricted to certain user groups. This option does not exist on the ''Special:Blog'' page itself.


Add the blog to a wiki page as follows. Then, modify the ''editgroups'', c''ommentgroups, deletegroups,'' and r''eadgroups'' as needed.
<span><span /><span /><br /></span>
{{Messagebox|boxtype=important|icon=|Note text=Only set the groups that you really need, since individual rights are not inherited. Therefore, please read the following explanations carefully!|bgcolor=}}
== Permissions ==
<syntaxhighlight lang="json">
The following permissions are used by this extension:
<bs:timeline>
{
    "showentitylistmenu": true,
      "preloadedentities": [{
      "type": "groupblog",
      "editgroups": ["blog_GF"],
      "commentgroups": ["blog_commenter"],
      "deletegroups": ["blog_delete"],
      "readgroups": ["blog_reader","blog_GF","blog_commenter","blog_delete"]
    }],
    "headlinemessagekey": "My Blog",
    "showheadline": true,
    "usemorescroll": true, 
    "limit": 5,
    "sort": [ {
        "property": "timestampcreated",
        "direction": "DESC"
    }],
    "lockedfilternames": [
        "type"
    ],
    "filter": [ {
        "type": "list",
        "property": "type",
        "value": [ "groupblog" ],
        "comparison": "ct"
    }]
}
</bs:timeline>
</syntaxhighlight>Im Objekt ''preloadedentities'' werden die unterschiedlichen Berechtigungen definiert:
{| class="wikitable" style=""
{| class="wikitable" style=""
|+
|+
!Name
!Permission
!Value (examples)
!Included in role
!Description
!Description
|-
|-
|type
|<span class="ve-pasteProtect" style="color: rgb(51, 64, 85)">workflows-view</span>
|groupblog
|reader
|The type ''groupblog'' allows setting group-based permissions on a blog.
|
* <span class="ve-pasteProtect" style="color: rgb(51, 64, 85)">allows viewing workflow elements, including listing of workflows (e.g., viewing all running workflows on a page</span>
* user can view the page ''Special:Workflows_overview''  
|-
|-
|editgroups
|workflows-execute
|["blog_GF"]
|editor, reviewer, admin
|Permission to create blog entries
|
* allows starting a workflow and executing a task
|-
|-
|commentgroups
|workflows-admin
|["blog_commenter"]
|admin
|Permission to create comments
|
|-
* allows aborting, restoring and administering all workflows
|deletegroups
* user fcdan view and edit the page ''MediaWiki:WorkflowTriggers''
|["blog_delete"]
|Permission to delete blog entries and comments
|-
|readgroups
|["blog_reader","blog_GF","blog_commenter","blog_delete"]
|Read permission:
All groups listed in editgroups, commentgroups and deletegroups must also be listed here explicitly if this group is defined.
|}
|}
'''Important notes:'''
# If the blog already exists on a page and the group assignments are created later, the permissions will not be applied to existing blog entries.
#<span /><span /><span /><span /><span /><span /><span /><br />There is no inheritance if a group definition is given explicitly. E.g.,  a user group that is in editgroups but not in commentgroups (if exists) cannot add comments.
'''“editgroups”''' exists:
*Only users in these groups see the button to start a new blog entry.
'''“commentgroups”''' exists:
*Only users in these groups see the “answer here” button and can add comments.
'''“deletegroups”''' exists:
*Only users in these groups see the delete link and can delete o'''ther users'''' posts. Note: “sysop” users can always delete or restore a post. See below for sysop user read permissions.
'''“readgroups”''' exists:
* Only set if necessary, as there is no inheritance. If present, all user groups of the other blog groups must be added here.
Examples:
*If the ''blog_GF'' user group is in ''editgroups'' but not in ''readgroups'', the create button is not displayed despite explicit editing rights. If the ''blog_commenter'' user group is in ''commentgroups'' but not in ''readgroups'', the new blog entries that have this setting applied will not be visible.  If the user group ''blog_delete'' is in ''deletegroups'' but not in ''readgroups'', the new blog entries are not visible and therefore cannot be deleted.
'''user group “sysop”:'''
*If ''readgroups'' is not defined, group sysop can delete all blog entries
*If ''readgroups'' is defined and sysop is not part of this group, sysop cannot see blog posts and therefore cannot delete them from the page. But with a direct link to the actual blog page, the sysop user can delete/restore the entry from there.
{{Messagebox|boxtype=important|icon=|Note text=The default user group "sysop" cannot be added as a user group to a definition. For example, to assign read rights to an admin user (if "readgroups" exists), the user must be added to a user group defined in "readgroups" ( e.g. blog_reader)|bgcolor=}}
'''more”-button:'''
To avoid switching to the default ''Special:Blog'' page at the end of the blog, the m''ore-''button must be set as a scroll button instead of linking to the special page. To do this, set (as already indicated in the example):<syntaxhighlight lang="json">
"usemorescroll": true
</syntaxhighlight>
==Configuration==
<span><span /><span /><span /><span /><span /><span /><br /></span>
In the [[Manual:Extension/BlueSpiceConfigManager|Config manager]], you can change the following settings:
<span><span /><span /><span /><span /><span /><span /><br /></span>
{{#dpl:title=Manual:Extension/BlueSpiceConfigManager|include=#BlueSpiceSocialBlog}}
== Notifications ==
If users want to receive notifications about blog posts in the wiki or by email, the setting "Entity actions on watched pages" must be activated in the user settings ("Notifications" tab).
[[File:BlueSpiceSocialBlog notifications.png|alt=Notification settings|center|thumb|650x650px|Notification settings]]
== Letzte Blog-Einträge darstellen ==
[File:BlueSpiceSocialBlog letzteBeiträge.png|mini|Liste der letzten Blogbeiträge]]
Wenn Sie die letzten Blogeinträge eines bestimmten Blogs z.B. auf der Hauptseite darstellen wollen, sind folgende Schritte nötig:
#Timeline-Tag auf der Hauptseite einbinden
#Formatierungsanweisungen in ''MediaWiki:Common.css'' einfügen


=== Embed the timeline-Tag einbinden===
== Example tutorial ==
Kopieren Sie folgendes Timeline-Tag auf die Hauptseite (oder beliebige andere Wikiseite)<syntaxhighlight lang="json">
You can follow our [[Manual:Extension/Workflows/Tutorial|tutorial for creating a custom workflow]] that allows users to classify a document and notify a user about the classification.
<div class="bloglist"><bs:timeline>
{
    "showentitylistmenu": false,
    "preloadtitles": {
      "blog": "Vorlage:Blog"
    },
    "limit": 5,
    "sort": [ {
        "property": "timestampcreated",
        "direction": "DESC"
    }],
    "showentitylistmore": false,
    "availablefilterfields": [],
    "lockedfilternames": [
        "type"
    ],
    "outputtypes": {
        "blog": "List"
    },
    "filter": [ {
        "type": "list",
        "property": "tags",
        "value": ["blog"],
        "comparison": "ct"
}]
}
</bs:timeline>
... [[Blog1|alle Beiträge]]
</div>
</syntaxhighlight>Beachten Sie hierbei, dass die Angabe '''Blog1''' im Filter und nach dem Timeline-Tag als Link zur eigentlichen Blog-Seite mit dem wirklichen Namen ihrer Blog-Seite ausgetauscht werden muss. Damit der Wert '''Blog1'''  bzw. der Name Ihrer Blogseite auf der eigentlichen Blog-Seite automatisch für alle Blogbeiträge generiert wird, muss er im dortigen ''<nowiki><bs:timeline></nowiki>''-Tag unter ''preloadedentities'' angegeben werden:<syntaxhighlight lang="json">
"preloadedentities": [{
    "type": "blog",
    "tags":["Blog1"]
}]
</syntaxhighlight>


===Formatierungsanweisungen einfügen===
Kopieren Sie folgende Zeilen in MediaWiki:Common.css:<syntaxhighlight lang="css">
/* Simple list view of timeline items */
.bloglist .bs-social-entity .bs-social-entity-right .bs-social-entity-actions, .bs-social-entity-timecreated {display:none}
.bloglist  ul.bs-social-entitylist {background-color:transparent!important; list-style-type:disc; padding:0!important}
.bloglist  ul.bs-social-entitylist li {margin:0!important; border-bottom:1px dotted #74747488}
.bloglist  .bs-social-entity div.bs-social-entity-right {margin: 0}
.bloglist  .bs-social-entity-actions {display:none!important}
.bloglist  .bs-social-entity .bs-social-entity-title h3 {font-size: 1em!important; margin:0;}
.bloglist  .bs-social-entity-title {width:100%; margin:0!important}
#content .bloglist  .bs-social-entity-right a, #content .bloglist .bs-social-entity-right a::before {color:#08529d!important}
</syntaxhighlight>
{{Box Links-en
|Topic1=[[Manual:Extension/BlueSpiceSocialMicroBlog|Micro-Blog]]
|Topic2=[[Reference:BlueSpiceSocial]]
}}


<span><span /><span /><span /><span /><span /><span /><br /></span>
{{translation}}
{{Translation}}
[[Category:Social]]

Revision as of 11:52, 3 April 2023

Introduction

In BlueSpice 4.1, workflows are based on BPMN 2.0. Four different types of page-based workflows are already integrated. Their purpose is a page review to obtain feedback via a user vote or to trigger a page approval. In the following, these workflows are therefore called review workflows.

Types of reviews
Workflow type Participants Description
Single user approval 1 user A single user is asked to vote about a page. If a user submits a positive vote, the page is automatically approved.
Expert document control 3 users After a page has been edited by a specific user, the page is reviewed by an expert and then approved by a user who is responsible for approvals.
Group feedback 1 group A group (which needs to exist in the group manager) is requested to leave a comment on a page.
Single user feedback 1 user A user is asked to send a comment regarding a page.

Workflow activities

All approval workflows start with a form where the necessary workflow data is entered by the workflow initiator. Each workflow results in one or more workflow activities.

Single user approval

Purpose: Approval of a draft page by a user with approval rights. This workflow only makes sense if the approval function (FlaggedRevs) is activated on a page.

Workflow instances: Only one approval workflow can run per page.

BPMN diagram of a "Single user approval" workflow
BPMN diagram of a "Single user approval" workflow
Activity Description
CollectData In the first workflow step, the workflow initiator enters the settings:
  • User: ser who is assigned to the task.
  • Instructions: A comment or instructions for the user to understand the task.
  • Send report to: An email report with the results will be sent to this email address when the review is finished. If a username is specified here, an email address must be stored in the user administration so that the report can be sent.
PageCheckout The page is locked for editing by other wiki users. Only the user with the workflow task can edit while this workflow is running.
UserVote The assigned user carries out a vote and either accepts the page or rejects it. Alternatively, the task can be delegated. In the event of a rejection, the workflow skips the next step (ApprovePage).
ApprovePage Only if the user has submitted a positive vote (accept), the page is set to an approved state.
SendMail An email report is sent to the report recipient who was specified in the first step.
PageCheckin The page is unlocked.

View BPMN

Expert document control

Purpose: Approval of a draft page according to the "4-eyes principle".

Workflow instances: A page can only have one approval worfklow at a time.

BPMN diagram of the "Expert document control" workflow
BPMN diagram of the "Expert document control" workflow
Activity Description
CollectData In the first workflow step, the workflow initiator enters the settings:

User: User who is assigned to a task. Three different users have to be specified: Editor, Reviewer, Approver

Instructions: A comment or instructions for the users to understand their tasks.

Send report to: An email report with the results will be sent to this email address when the review is finished. If a username is specified here, an email address must be stored in the user administration so that the report can be sent.

PageCheckout The page is locked for users who do not participate in the workflow. Only the Editor (first workflow participant) can edit the page during checkout. While the Reviewer (second participant) of the workflow is reviewing the page, the page stays checked-out to thecan edit the page can edit the page during checkout.checkout. in case the Reviewer requests more edits.
EditPage The Editor user can edit the page and completes the task without comment.
UserVote After the Editor step has been completed, the Reviewer user can review the page and submit a vote. Editing by the Reviewer is not possible. As an alternative, the Reviewer can delegate the task. If the vote is positive (Approve), the workflow continues. If the Reviewer rejects, the workflow goes back to the Editor.
PageCheckin After the Reviewer submits a positive vote (accept), the page is checked in and the workflow continues.
PageCheckout In this step, the page checkout locks the page for editing completely. The Approver user will not be able to change the page, but needs to approve it.
ApprovePage The Approver can either complete or delegate the task. After the Approver (or the delegate) finishes the assigned task, the page is set from "draft" to "approved" status if the page was in draft status (only if the approver submits a positive vote). If not, this step is skipped.
SendMail If an email or user was specified in the workflow settings, the report is now getting sent to that user.
PageCheckin The page gets unlocked for editing.


view BPMN

Group feedback

Purpose: Obtaining feedback from the members of a user group. The group must exist in the group manager.

Workflow instances: Several feedback workflows can run independently of one another on one page at the same time.

BPMN diagram of the "Group feedback" workflow
BPMN diagram of the "Group feedback" workflow
Activity Description
CollectData In the first workflow step, the workflow initiator enters the settings:
  • Group: User group who is assigned to the task.
  • Instructions: A comment or instructions for the users to understand their task.
  • Send report to: An email report with the results will be sent to this email address when the review is finished. If a username is specified here, an email address must be stored in the user administration so that the report can be sent.
GroupFeedback All users in the assigned group provide feedback via a comment field. This is a parallel workflow, which means that the order of the feedback does not matter.
SendMail If an email or user was specified in the workflow settings, the report is now getting sent to that user.

view BPMN

Feedback

Purpose: Obtaining feedback from a single user on a page.

Workflow instances: Multiple feedback worfklows can run independently of one another on one page at the same time.

BPMN diagram of the "Single user feedback" workflow
BPMN diagram of the "Single user feedback" workflow
Activity Description
CollectData In the first workflow step, the workflow initiator enters the settings:
  • User: User who is assigned to the task.
  • Instructions: A comment or instructions for the users to understand their task.
  • Send report to: An email report with the results will be sent to this email address when the review is finished. If a username is specified here, an email address must be stored in the user administration so that the report can be sent.
UserFeedback The assigned user sends a comment.
SendMail If an email or user was specified in the workflow settings, the report is now getting sent to that user.

view BPMN

Overview page

All workflows in the wiki are listed on the page Special:Workflows overview. A view for all active workflows and a view for all workflows can be selected.

Workflows overview page
Workflows overview page

Tasks overview

Users are informed about new and pending tasks in their notifications. They can view assigned workflows on their My tasks page.

Notifications

Events that trigger notifications

There are two types of events that trigger notification

  • generic: notifications happen for every workflow/activity type
  • activity-specifiy: activities themselves can decide to send additional notifications
Triggering event Recipients Generic Notes
Task started

(task assigned)

All assigned users Yes Only triggered for type UserInteractiveActivity, i.e., only for activities that have users assigned.
Workflow aborted

(manual or automatic)

Initiator and all users that were assigned to the current task at time of aborting (not users who were assigned on previous tasks) Yes
Workflow ended

(only when naturally ended, not when aborted)

Initiator Yes
DueDateClose

(2 days before Workflow will expire)

Initiator and all currently assigned users Yes
Workflow expired Initiator and all currently assigned users Yes Expiration is just a type of workflow abort, so the same notification as for abort will be sent with the reason explaining that the workflow expired.
Task delegated User to whom the task was delegated No Specific to UserVote activity. After delegation, the newly assigned user will be considered assigned and will receive all further notifications that go out to assigned users.

Sending out notifications

  • Users can choose whether to subscribe to e-mail notifications in their preferenceds. All users are force-subscribed to web notifications.
  • Web notifications are sent out immediatelly after triggering, while email notifications will be sent async, on runJobs.php execution. This applies to notifications in general, not only to workflows

Workflow triggers

Workflows can either be started manually on each wiki page or started only under certain conditions using individual workflow triggers. Triggers also allow to define in which namespaces both manual and automatic workflows are available.

How to add a custom workflow

Users can upload an xml-file of a BPMN diagram with custom activities to the wiki. Currently, the following predefined activities exist:

Extension: Workflows


Extension: PageCheckout


Extension: BlueSpiceFlaggedRevsConnector

Example of a customized workflow (coming soon)


Permissions

The following permissions are used by this extension:

Permission Included in role Description
workflows-view reader
  • allows viewing workflow elements, including listing of workflows (e.g., viewing all running workflows on a page
  • user can view the page Special:Workflows_overview
workflows-execute editor, reviewer, admin
  • allows starting a workflow and executing a task
workflows-admin admin
  • allows aborting, restoring and administering all workflows
  • user fcdan view and edit the page MediaWiki:WorkflowTriggers

Example tutorial

You can follow our tutorial for creating a custom workflow that allows users to classify a document and notify a user about the classification.



To submit feedback about this documentation, visit our community forum.

No categories assignedEdit

Discussions