- BPMN Diagram
- Step 1: Create a new Activiti project and/or Activiti diagram
- Step 2: Change the Identifier, Name and Description of the Process
- Step 3: Create a Pool and Lanes
- Step 4: Create a Start and End Event
- Step 5: Create an Exclusive Gateway
- Step 6: Set Fallback User
- Step 7: Accept Review
- Step 8: Assign Reviewer
- Step 9: Set Reviewer Role
- Step 10: Create a Second Exclusive Gateway
- Step 11: Mark as “Under Review”
- Step 12: Analyse and Propose Solution
- Step 13: Mark as “New”
- Step 14: Create a Third Exclusive Gateway
- Step 15: Reassign Reviewer
- Step 16: Mark as “Pending”
- Step 17: Provide Information
- Step 18: Save Information
- Step 19: Mark as “Invalid”
- Step 20: Notify Rejection
- Step 21: Mark as “Submitted For Approval”
- Step 22: Approve Solution
- Step 23: Create a Fourth Exclusive Gateway
- Step 24: Mark as “Accepted”
- Step 25: Appoint Assignee or Mark as Resolved
- Step 26: Create a Fifth Exclusive Gateway
- Step 27: Mark as “In Progress”
- Step 28: Notify Requester
- Step 29: Set Assignee Role
- Step 30: Provide Solution
- Step 31: Create a Sixth Exclusive Gateway
- Step 32: Reappoint Assignee
- Step 33: Mark as “Resolution Pending”
- Step 34: Review Solution
- Step 35: Create a Seventh Exclusive Gateway
- Step 36: Mark as “Resolved”
- Step 37: Notify Resolution
[bok-callout]For a step by step walk-through and configuration of this Workflow, go to Issue Management Walk-Through.[/bok-callout]
[bok-callout]See also the user guide’s section about Issue Management, go to: Issue Management[/bok-callout]
BPMN Diagram
Step 1: Create a new Activiti project and/or Activiti diagram
The creation of a new Activiti project/diagram is explained in the section on Setting Up Your Workflow Design Workbench
Step 2: Change the Identifier, Name and Description of the Process
We refer to the section Designing Your First Workflow From Scratch, subsection “Change the Identifier, Name and Description of the Process” for an explanation on how to change the identifier, name and description. For this case, name the workflow (e.g., the default would be “Issue Managment”) and give it an identifier (e.g., the default name would be “issueManagment”).
Step 3: Create a Pool and Lanes
We refer to the section Designing Your First Workflow From Scratch, subsection “Defining a Pool and Lanes” for an explanation on how to change the identifier, name and description. Start with all 4 needed lanes:
- Start User (Requester)
- Requester
- Reviewer
- Stakeholder
- Assignee
- Issue Manager
Step 4: Create a Start and End Event
Set the properties (of the start event):
Start Event > Properties Tab > Main Config
Property | Value | Description |
---|---|---|
Initiator | requester |
Start Event > Properties Tab > Form
Configuration variables:
Id
|
Name
|
Type
|
Default
|
Required
|
Readable
|
Writeable
|
Description
|
---|---|---|---|---|---|---|---|
acceptReviewDuration | Time before escalation of “Accept Review” task | B10D | false | false | true | ||
reviewIssueDuration | Time before “Review Issue” task escalation | B2D | false | false | true | ||
provideSolutionDuration | Time before “Provide Solution” task is escalated | B7D | false | false | true | ||
moreInformationDuration | Time before “Provide more information” task is escalated | B30D | false | false | true | ||
voteWarningTimeDuration | Time before a warning is send to the stakeholders for approving the proposed solution | string | B3D | false | false | true | |
voteTimeoutDuration | Time before the approve solution by the stakeholders step is continued | B5D | false | false | true | ||
stakeholderUserExpression | User expression for stakeholders of the issue | role(Steward) | false | false | true | ||
reviewerUserExpression | User expression for reviewers of the issue | string | role(Steward) | false | false | true | |
assigneeUserExpression | User expression for Assignees of the issue | string | role(Steward) | false | false | true | |
issueManagerUserExpression | User expression for Issue Managers of the issue | string | role(Issue Manager) | true | false | true | |
sendVotingActionEmails | Send an action email to users that are required to vote in the process | boolean | false | true | false | true |
Step 5: Create an Exclusive Gateway
Create an exclusive gateway that will decide the path based on whether or not there is a reviewer assigned
Set the properties:
Exclusive Gateway > Properties Tab > General
(No properties to set except the Name)
Sequence Flow 1 > Properties Tab > Main config (If no reviewer is assigned)
Property | Value | Description |
---|---|---|
Label Width | 0 | There is no label, so the width is 0 |
Condition | ${users.isEmpty(reviewerUserExpression)} | Will return “true” if there is no user assigned to variable. See UsersBean in API Doc |
Sequence Flow 2 > Properties Tab > Main config (If no reviewer is assigned)
Property | Value | Description |
---|---|---|
Label Width | 0 | There is no label, so the width is 0 |
Condition | ${!users.isEmpty(reviewerUserExpression)} | Will return “true” if there is a user assigned to variable. See UsersBean in API Doc |
[bok-callout]Information about IsEmpty() method can be found here: <yourCollibraDomain>/docs/index.html > core > Package: com.collibra.dgc.core.workflow.activiti.bean > Class: UsersBean
[/bok-callout]
Step 6: Set Fallback User
Create a service task to assign the reviewer with a fallback user
Set the properties:
Service Task > Properties Tab > Main config
Property | Value | Description |
---|---|---|
Type | Expression | |
Expression | ${fallbackUserExpression} | See the configuration variables |
Result variable | reviewerUserExpression | The result variable of the service task |
Step 7: Accept Review
Create a user task to accept or reject the review
Set the properties:
User Task > Properties Tab > Multi Instance
Property | Value | Description |
---|---|---|
Sequential | No | |
Collection | ${users.getUserNamesWithError(reviewerUserExpression)} | Method of UsesBean creats a list based on the user group expression. This is the list that will be looped through. |
Element variable | currentReviewer | The item variable of the loop. A form will be created for each “currentReviewer” |
Completion condition | ${accept} |
User Task > Properties Tab > Main config
Property | Value | Description |
---|---|---|
Candidate users | user(${currentReviewer}) | The output from the multi instance loop |
User Task > Properties Tab > Form
Id
|
Name
|
Type
|
Default
|
Required
|
Readable
|
Writeable
|
Description
|
---|---|---|---|---|---|---|---|
accept | Accept | button | false | false | true | true | |
reject | Reject | button | false | false | true | true |
Timer Boundary Event > Properties Tab > Main Config
Property | Value | Description |
---|---|---|
Cancel activity | true | |
Time duration | ${acceptReviewDuration} | The amount of time before the connected sequence flow triggers. See the configuration variables |
[bok-callout]For more information about Duration Variables, go to Managing Workflows > Duration variables.[/bok-callout]
Step 8: Assign Reviewer
Create a user task for the Issue Manager to assign a reviewer if the current Reviewer doesn’t respond.
Set the properties:
User Task > Properties Tab > Main Config
Property | Value | Description |
---|---|---|
Candidate Users | ${issueManagerUserExpression} | See start form configuration variables |
User Task > Properties Tab > Form
Id
|
Name
|
Type
|
Default
|
Required
|
Readable
|
Writeable
|
Form Values |
Description
|
---|---|---|---|---|---|---|---|---|
userName | User | user | false | true | true | proposedValues:${proposedUsers} | ||
group | Group | group | false | true | true | |||
role | Reviewer | roleInCommunity | false | true | true | |||
assignButton | Assign | taskButton | false | true | true |
User Task > Properties Tab > Listeners
Listener implementation | Type | Event | Fields | Description |
---|---|---|---|---|
com.collibra.dgc.core.workflow.activiti.tasklistener.CheckMandatoryFieldCombinationTaskListener | class | complete | see table A | This Tasklistener checks if the configured combination of form property input fields have at least one value field filled in. If not a error message will be shown to the user |
com.collibra.dgc.core.workflow.activiti.tasklistener.SetValueTaskListener | class | create | see table B | This TaskListener can be used to evaluate expressions or user expressions and store the parsed value in a task LOCAL variable. This means as soon as you exit the current user task, the variable will not be available anymore. |
com.collibra.dgc.core.workflow.activiti.tasklistener.SetFormSubtitleTaskListener | class | create | see table C | This TaskListener sets a given string value as the subtitle for the form to be displayed on the task. With this you can tweak the form presented to the user with custom subtitles. |
table A: CheckMandatoryFieldCombinationTaskListener
Field Name | String Value | Expression | Description |
---|---|---|---|
formFields | userName,role,group | a csv of form property ids to do the mandatory check on. |
table B: SetValueTaskListener
Field Name | String Value | Expression | Description |
---|---|---|---|
resultVariable | proposedUsers | the name of the variable to store the result in. | |
userExpression | ${reviewerUserExpression} | a csv of user expressions that will be evaluated to a comma separated list of user names and stored in the given resultVariable . Only one of valuesExpression or userExpression is expected and will be evaluated. |
table C: SetFormSubtitleTaskListener
Field Name | String Value | Expression | Description |
---|---|---|---|
subtitle | workflowReassignSubtitle | the string value for the form subtitle. |
[bok-callout]Information about the SetValueTaskListener class can be found here: <yourCollibraDomain>/docs/index.html > core > Package: com.collibra.dgc.core.workflow.activiti.tasklistener > Class: SetValueTaskListener
[/bok-callout]
[bok-callout]Information about the CheckMandatoryFieldCombinationTaskListener class can be found here: <yourCollibraDomain>/docs/index.html > core > Package: com.collibra.dgc.core.workflow.activiti.tasklistener > Class: CheckMandatoryFieldCombinationTaskListener
[/bok-callout]
[bok-callout]Information about the SetFormSubtitleTaskListenerclass can be found here: <yourCollibraDomain>/docs/index.html > core > Package: com.collibra.dgc.core.workflow.activiti.tasklistener > Class: SetFormSubtitleTaskListener
[/bok-callout]
Step 9: Set Reviewer Role
Create a service task to set the users picked by the Issue Manager as the Reviewer.
Set the properties:
Service Task > Properties Tab > Main config
Property | Value | Description |
---|---|---|
Type | Java Class | Setting for delegate |
Service Class | com.collibra.dgc.core.workflow.activiti.delegate.GetUserNames | The GetUserNames delegate class |
Fields:
Field name | String value | Expression | Description |
---|---|---|---|
userNames | ${userName} | a CSV of usernames you want to have included in the result | |
groupNames | ${group} | a CSV of groupnames you want to have evaluated and included in the result | |
userExpressions | ${role} | a CSV of user expressions you want to have evaluated and included in the result |
The default output variable is ‘assembledUserNames’. It stores the CSV of user names.
Service Task > Properties Tab > Listeners
Listener implementation | Type | Event | Fields | Description |
---|---|---|---|---|
com.collibra.dgc.core.workflow.activiti.executionlistener.SetMembersExecutionListener | class | complete | see table A | This ExecutionListener will set the specified members on the business item of the workflow |
table A:
Field Name | String Value | Expression | Description |
---|---|---|---|
roleName | Reviewer | the name of the role. You can only specify one role to use. | |
userNames | ${assembledUserNames} | a csv of usernames you want to set a member for. | |
clearExisting | true | if ‘true’ all existing members on the curent business item will be deleted prior to adding new ones (OPTIONAL). If empty no clearing is performed. |
[bok-callout]Information about the GetUserNames delegate can be found here: <yourCollibraDomain>/docs/index.html > core > Package: com.collibra.dgc.core.workflow.activiti.delgate > Class: GetUserNames
[/bok-callout]
[bok-callout]Information about the SetMembersExecutionListener class can be found here: <yourCollibraDomain>/docs/index.html > core > Package: com.collibra.dgc.core.workflow.activiti.executionlistener > Class: GetUserNames
[/bok-callout]
Step 10: Create a Second Exclusive Gateway
Set the properties:
Exclusive Gateway > Properties Tab > General
(No properties to set except the Name)
Sequence Flow 1 > Properties Tab > Main config (If reviewer accepts)
Property | Value | Description |
---|---|---|
Label Width | 0 | There is no label, so the width is 0 |
Condition | ${accept} | Will return “true” and follow this path if the Reviewer presses the accept button. See UsersBean in API Doc |
Sequence Flow 1 > Properties Tab > Listeners
Listener implementation | Type | Event | Fields | Description |
---|---|---|---|---|
com.collibra.dgc.core.workflow.activiti.executionlistener.SetMembersExecutionListener | class | complete | see table A | This ExecutionListener will set the specified members on the business item of the workflow |
table A:
Field Name | String Value | Expression | Description |
---|---|---|---|
roleName | Reviewer | the name of the role. You can only specify one role to use. | |
userNames | ${users.current} | a csv of usernames you want to set a member for. Sets the current user as the Reviewer |
Sequence Flow 2 > Properties Tab > Main config (If no reviewer is assigned)
Property | Value | Description |
---|---|---|
Label Width | 0 | There is no label, so the width is 0 |
Condition | ${!accept} | Will return “true” and follow this path if the Reviewer presses the reject button. See UsersBean in API Doc |
Step 11: Mark as “Under Review”
Create a service task to change the status of the asset to Under Review.
Set the properties:
Service Task > Properties Tab > Main config
Property | Value | Description |
---|---|---|
Type | Java Class | Setting for delegate |
Service Class | com.collibra.dgc.core.workflow.activiti.delegate.StateChanger | JavaDelegate for changing the state of current business item in the process to specified target state. |
Fields:
Field name | String value | Expression | Description |
---|---|---|---|
targetState | 00000000-0000-0000-0000-000000005020 | the id of the target status term. |
[bok-callout]Information about the GetUserNames delegate can be found here: <yourCollibraDomain>/docs/index.html > core > Package: com.collibra.dgc.core.workflow.activiti.delgate > Class: StateChanger
[/bok-callout]
Step 12: Analyse and Propose Solution
Create a user task to create a form for the Reviewer
Set the properties:
User Task > Properties Tab > Main Config
Property | Value | Description |
---|---|---|
Candidate User | role(Reviewer) | Set the role for the user task |
Documentation | Please review, analyse and propose a solution for this issue. | This provides addition information to the user on the yellow task ribbon |
User Task > Properties Tab > Form
Id | Name | Type | Default | Required | Readable | Writeable |
---|---|---|---|---|---|---|
reassign | Reassign Reviewer | button | false | true | true | |
moreInformation | More Information | button | false | false | true | true |
rejected | Invalid Issue | button | false | false | true | true |
accepted | Request Approval | button | false | false | true | true |
Timer Boundary Event > Properties Tab > Main Config
Property | Value | Description |
---|---|---|
Cancel activity | true | |
Time duration | ${reviewIssueDuration} | The amount of time before the connected sequence flow triggers. See the configuration variables |
Step 13: Mark as “New”
Create a service task that changes the state of the asset to New
Service Task > Properties Tab > Main config
Property | Value | Description |
---|---|---|
Type | Java Class | Setting for delegate |
Service Class | com.collibra.dgc.core.workflow.activiti.delegate.StateChanger | JavaDelegate for changing the state of current business item in the process to specified target state. |
Fields:
Field name | String value | Expression | Description |
---|---|---|---|
targetState | 00000000-0000-0000-0000-000000005058 | the id of the target status term. |
Step 14: Create a Third Exclusive Gateway
Create a 4-way exclusive gateway based on the response of a user task form.
Exclusive Gateway > Properties Tab > General
(No properties to set except the Name)
Sequence Flow 1 > Properties Tab > Main config (If reviewer presses More Information button)
Property | Value | Description |
---|---|---|
Label Width | 0 | There is no label, so the width is 0 |
Condition | ${moreInformation} | Will return “true” and follow this path if the Reviewer presses the More Information button. |
Sequence Flow 2 > Properties Tab > Main config (If reviewer presses More Information button)
Property | Value | Description |
---|---|---|
Label Width | 0 | There is no label, so the width is 0 |
Condition | ${rejected} | Will return “true” and follow this path if the Reviewer presses the Reject button. |
Sequence Flow 3 > Properties Tab > Main config (If reviewer presses More Information button)
Property | Value | Description |
---|---|---|
Label Width | 0 | There is no label, so the width is 0 |
Condition | ${accepted} | Will return “true” and follow this path if the Reviewer presses the Accept button. |
Sequence Flow 4 > Properties Tab > Main config (If reviewer presses More Information button)
Property | Value | Description |
---|---|---|
Label Width | 0 | There is no label, so the width is 0 |
Condition | ${reassign} | Will return “true” and follow this path if the Reviewer presses the Reassign button. |
Step 15: Reassign Reviewer
Create a user task to set the Reviewer.
User Task > Properties Tab > Main Config
Property | Value | Description |
---|---|---|
Candidate Users | role(Reviewer) | |
Documentation | Assign a new reviewer for this issue. | The extra description on the yellow ribbon task notification |
User Task > Properties Tab > Form
Id
|
Name
|
Type
|
Default
|
Required
|
Readable
|
Writeable
|
Form Values |
---|---|---|---|---|---|---|---|
userName | User | user | false | true | true | proposedValues:${proposedUsers} | |
group | Group | group | false | true | true | ||
role | Reviewer | roleInCommunity | false | true | true | ||
reassignReviewerButton | Reassign | taskButton | false | true | true |
User Task > Properties Tab > Listeners
Listener implementation | Type | Event | Fields | Description |
---|---|---|---|---|
com.collibra.dgc.core.workflow.activiti.tasklistener.CheckMandatoryFieldCombinationTaskListener | class | complete | see table A | This Tasklistener checks if the configured combination of form property input fields have at least one value field filled in. If not a error message will be shown to the user |
com.collibra.dgc.core.workflow.activiti.tasklistener.SetValueTaskListener | class | create | see table B | This TaskListener can be used to evaluate expressions or user expressions and store the parsed value in a task LOCAL variable. This means as soon as you exit the current user task, the variable will not be available anymore. |
com.collibra.dgc.core.workflow.activiti.tasklistener.SetFormSubtitleTaskListener | class | create | see table C | This TaskListener sets a given string value as the subtitle for the form to be displayed on the task. With this you can tweak the form presented to the user with custom subtitles. |
table A: CheckMandatoryFieldCombinationTaskListener
Field Name | String Value | Expression | Description |
---|---|---|---|
formFields | userName,role,group | a csv of form property ids to do the mandatory check on. |
table B: SetValueTaskListener
Field Name | String Value | Expression | Description |
---|---|---|---|
resultVariable | proposedUsers | the name of the variable to store the result in. | |
userExpression | ${reviewerUserExpression} | a csv of user expressions that will be evaluated to a comma separated list of user names and stored in the given resultVariable . Only one of valuesExpression or userExpression is expected and will be evaluated. |
table C: SetFormSubtitleTaskListener
Field Name | String Value | Expression | Description |
---|---|---|---|
subtitle | workflowReassignSubtitle | the string value for the form subtitle. |
Step 16: Mark as “Pending”
Create a service task to change the status of the asset to Pending.
Set the properties:
Service Task > Properties Tab > Main config
Property | Value | Description |
---|---|---|
Type | Java Class | Setting for delegate |
Service Class | com.collibra.dgc.core.workflow.activiti.delegate.StateChanger | JavaDelegate for changing the state of current business item in the process to specified target state. |
Fields:
Field name | String value | Expression | Description |
---|---|---|---|
targetState | 00000000-0000-0000-0000-000000005059 | the id of the target status term. |
Step 17: Provide Information
Create a user task that prompts a form to the Requester to provide more information about the issue.
Set the properties:
User Task > Properties Tab > Main config
Property | Value | Description |
---|---|---|
Candidate users | role(Requester) | The candidate user |
Documentation | Please provide more information about this issue. | Additional text that displays on the yellow task notification ribbon |
User Task > Properties Tab > Form
Id
|
Name
|
Type
|
Default
|
Required
|
Readable
|
Writeable
|
Form Values |
Description
|
---|---|---|---|---|---|---|---|---|
info | Additional Information | textarea | true | true | true | |||
taskButton | Provide Information | taskButton | false | false | true | true | This is the button that appears on the yellow task notification ribbon |
Timer Boundary Event > Properties Tab > Main Config
Property | Value | Description |
---|---|---|
Cancel activity | true | |
Time duration | ${moreInformationDuration} | The amount of time before the connected sequence flow triggers. See the configuration variables |
Step 18: Save Information
Create a service task to add a comment
Set the properties:
Service Task > Properties Tab > Main config
Property | Value | Description |
---|---|---|
Type | Java Class | Setting for delegate |
Service Class | com.collibra.dgc.core.workflow.activiti.delegate.AddComment | JavaDelegate for adding comments to the current business item. It also supports adding comments for guest users |
Fields:
Field name | String value | Expression | Description |
---|---|---|---|
comment | ${info} | The string representation of the actual comment that needs to be added. By default the comment will be added to the current business item using the current user. | |
guestUserExpression | role(Requester) | The expression evaluating to a guest user that is adding this comment. This overrides the default behavior so that this comment is not added by the current user, but by the specified guest user instead |
[bok-callout]Information about the AddComment delegate can be found here: <yourCollibraDomain>/docs/index.html > core > Package: com.collibra.dgc.core.workflow.activiti.delgate > Class: AddComment
[/bok-callout]
Step 19: Mark as “Invalid”
Create a service task to change the state of the asset to Invalid.
Set the properties:
Service Task > Properties Tab > Main config
Property | Value | Description |
---|---|---|
Type | Java Class | Setting for delegate |
Service Class | com.collibra.dgc.core.workflow.activiti.delegate.StateChanger | JavaDelegate for changing the state of current business item in the process to specified target state. |
Fields:
Field name | String value | Expression | Description |
---|---|---|---|
targetState | 00000000-0000-0000-0000-000000005022 | the id of the target status term. |
Step 20: Notify Rejection
Create a service task to send an email to the Requester
Create
Set the properties:
Service Task > Properties Tab > Main config
Property | Value | Description |
---|---|---|
Type | Java Class | Setting for delegate |
Service Class | com.collibra.dgc.core.workflow.activiti.delegate.MailSender | JavaDelegate used for sending mails from the workflow. |
Fields:
Field name | String value | Expression | Description |
---|---|---|---|
template | rejection | the name of the template that should be used to generate the mail. | |
mailTo | role(Requester) | user expressions for users that should receive the action mail. |
[bok-callout]Information about the MailSender delegate can be found here: <yourCollibraDomain>/docs/index.html > core > Package: com.collibra.dgc.core.workflow.activiti.delgate > Class: MailSender
[/bok-callout]
Step 21: Mark as “Submitted For Approval”
Create a service task to change the status of the asset to Submitted For Approval.
Set the properties:
Service Task > Properties Tab > Main config
Property | Value | Description |
---|---|---|
Type | Java Class | Setting for delegate |
Service Class | com.collibra.dgc.core.workflow.activiti.delegate.StateChanger | JavaDelegate for changing the state of current business item in the process to specified target state. |
Fields:
Field name | String value | Expression | Description |
---|---|---|---|
targetState | 00000000-0000-0000-0000-000000005060 | the id of the target status term. |
Step 22: Approve Solution
Create a call activity to call the Voting Sub-Process.
Set the properties:
Service Call > Properties Tab > Main config
Setting | Value | Description |
---|---|---|
Called Element | votingSubProcess | This is the Id of the Voting Sub-Process that is being called |
Input Parameters | See Below | The variables or expressions that are being passed to the votingSubProcess |
Output Parameters | See Below | The output variable from the call activity |
Input Parameters: These are expressions and variables that are passed to the Voting Sub-Process
Source | Source expression | Target | Target expression |
---|---|---|---|
${“Please verify if the proposed solution is acceptable. If not, please reject and provide a reason.”} | decisionInfo | ||
stewardUserExpression | voterUserExpression | ||
${100} | votePercentage | ||
${true} | addComments | ||
${false} | earlyComplete | ||
voteWarningTimeDuration | voteWarningTimeDuration | ||
voteTimeoutDuration | voteTimeoutDuration | ||
${“Review/Reject”} | voteButtonLabel | ||
${“Approve”} | voteTaskName | ||
sendVotingActionEmails | sendActionEmail |
Output Parameters:
Source | Source expression | Target | Target expression | Description |
---|---|---|---|---|
votingResult | votingResult | This is the final result of the Voting Sub-Process. It will be true or false |
[bok-callout]For the design of the Voting Sub-Process, go to: Voting Sub-Process Design and Implementation.[/bok-callout]
Step 23: Create a Fourth Exclusive Gateway
Create an exclusive gateway and sequence flows that are determine by the result of the Voting Sub-process
Set the properties:
Exclusive Gateway > Properties Tab > General
(No properties to set except the Name)
Sequence Flow 1(Approved) > Properties Tab > Main config
Property | Value | Description |
---|---|---|
Label Width | 47 | The width of the label on the flow |
Condition | ${votingResult.votingResult} | Will return “true” and follow this path if the Voting Sub-Process receives enough votes. |
Sequence Flow 2(Rejected) > Properties Tab > Main config
Property | Value | Description |
---|---|---|
Label Width | 42 | The width of the label on the flow |
Condition | ${!votingResult.votingResult} | Will return “true” and follow this path if the Voting Sub-Process doesn’t receive enough votes. The “!” preceding the variable provides the logical opposite. |
Step 24: Mark as “Accepted”
Create a service task to change the status to Accepted.
Set the properties:
Service Task > Properties Tab > Main config
Property | Value | Description |
---|---|---|
Type | Java Class | Setting for delegate |
Service Class | com.collibra.dgc.core.workflow.activiti.delegate.StateChanger | JavaDelegate for changing the state of current business item in the process to specified target state. |
Fields:
Field name | String value | Expression | Description |
---|---|---|---|
targetState | 00000000-0000-0000-0000-000000005009 | the id of the target status term. |
Step 25: Appoint Assignee or Mark as Resolved
Create a user task to appoint the assignee to solve this issue or immediately mark this issue as resolved.
Set the properties:
User Task > Properties Tab > Main Config
Property | Value | Description |
---|---|---|
Candidate Users | role(Reviewer) | |
Documentation | Appoint the assignee to solve this issue or immediately mark this issue as resolved. | The extra description on the yellow ribbon task notification |
User Task > Properties Tab > Form
Id
|
Name
|
Type
|
Default
|
Required
|
Readable
|
Writeable
|
Form Values |
Description
|
---|---|---|---|---|---|---|---|---|
userName | User | user | false | true | true | proposedValues:${proposedUsers} | ||
group | Group | group | false | true | true | |||
role | Reviewer | roleInCommunity | false | true | true | |||
resolveButton | Resolve | button | false | false | true | true | ||
assignButton | Assign | button | false | false | true | true | ||
assignAssigneeButton | Assign or Resolve | taskButton | false | true | false | Button on the yellow task notification ribbon |
User Task > Properties Tab > Listeners
Listener implementation | Type | Event | Fields | Description |
---|---|---|---|---|
com.collibra.dgc.core.workflow.activiti.tasklistener.CheckMandatoryFieldCombinationTaskListener | class | complete | see table A | This Tasklistener checks if the configured combination of form property input fields have at least one value field filled in. If not a error message will be shown to the user |
com.collibra.dgc.core.workflow.activiti.tasklistener.SetValueTaskListener | class | create | see table B | This TaskListener can be used to evaluate expressions or user expressions and store the parsed value in a task LOCAL variable. This means as soon as you exit the current user task, the variable will not be available anymore. |
com.collibra.dgc.core.workflow.activiti.tasklistener.SetFormSubtitleTaskListener | class | create | see table C | This TaskListener sets a given string value as the subtitle for the form to be displayed on the task. With this you can tweak the form presented to the user with custom subtitles. |
table A: CheckMandatoryFieldCombinationTaskListener
Field Name | String Value | Expression | Description |
---|---|---|---|
formFields | userName,role,group | a csv of form property ids to do the mandatory check on. |
table B: SetValueTaskListener
Field Name | String Value | Expression | Description |
---|---|---|---|
resultVariable | proposedUsers | the name of the variable to store the result in. | |
userExpression | ${reviewerUserExpression} | a csv of user expressions that will be evaluated to a comma separated list of user names and stored in the given resultVariable . Only one of valuesExpression or userExpression is expected and will be evaluated. |
table C: SetFormSubtitleTaskListener
Field Name | String Value | Expression | Description |
---|---|---|---|
subtitle | workflowReassignResolveSubtitle | the string value for the form subtitle. |
Step 26: Create a Fifth Exclusive Gateway
Create an exclusive gateway based on the results of a user form
Set the properties:
Exclusive Gateway > Properties Tab > General
(No properties to set except the Name)
Sequence Flow 1(Resolve Button Pressed) > Properties Tab > Main config
Property | Value | Description |
---|---|---|
Label Width | 0 | No label on the sequence flow exists |
Condition | ${resolveButton} | Will return “true” and follow this path if the user presses the resolve button. |
Sequence Flow 2(Assign Button Pressed) > Properties Tab > Main config
Property | Value | Description |
---|---|---|
Label Width | 0 | No label on the sequence flow exists |
Condition | ${!resolveButton} | Will return “true” and follow this path if the user presses any button other than the resolveButton |
Step 27: Mark as “In Progress”
Create a service task to change the status of the asset to In Progress.
Set the properties:
Service Task > Properties Tab > Main config
Property | Value | Description |
---|---|---|
Type | Java Class | Setting for delegate |
Service Class | com.collibra.dgc.core.workflow.activiti.delegate.StateChanger | JavaDelegate for changing the state of current business item in the process to specified target state. |
Fields:
Field name | String value | Expression | Description |
---|---|---|---|
targetState | 00000000-0000-0000-0000-000000005019 | the id of the target status term. |
Step 28: Notify Requester
Create a service task to send an email to the Requester with notification that the asset is In Progress.
Set the properties:
Service Task > Properties Tab > Main config
Property | Value | Description |
---|---|---|
Type | Java Class | Setting for delegate |
Service Class | com.collibra.dgc.core.workflow.activiti.delegate.MailSender |
|
Fields:
Field name | String value | Expression | Description |
---|---|---|---|
template | in-progress | the name of the template that should be used to generate the mail. | |
mailTo | role(Requester) | user expressions for users that should receive the action mail. |
Step 29: Set Assignee Role
Create a service task to set the Assignee
Set the properties:
Service Task > Properties Tab > Main config
Property | Value | Description |
---|---|---|
Type | Java Class | Setting for delegate |
Service Class | com.collibra.dgc.core.workflow.activiti.delegate.GetUserNames | The GetUserNames delegate class |
Fields:
Field name | String value | Expression | Description |
---|---|---|---|
userNames | ${userName} | a CSV of usernames you want to have included in the result | |
groupNames | ${group} | a CSV of groupnames you want to have evaluated and included in the result | |
userExpressions | ${role} | a CSV of user expressions you want to have evaluated and included in the result |
The default output variable is ‘assembledUserNames’. It stores the CSV of user names.
Service Task > Properties Tab > Listeners
Listener implementation | Type | Event | Fields | Description |
---|---|---|---|---|
com.collibra.dgc.core.workflow.activiti.executionlistener.SetMembersExecutionListener | class | complete | see table A | This ExecutionListener will set the specified members on the business item of the workflow |
table A:
Field Name | String Value | Expression | Description |
---|---|---|---|
roleName | Assignee | the name of the role. You can only specify one role to use. | |
userNames | ${assembledUserNames} | a csv of usernames you want to set a member for. | |
clearExisting | true | if ‘true’ all existing members on the curent business item will be deleted prior to adding new ones (OPTIONAL). If empty no clearing is performed. |
Step 30: Provide Solution
Create a user task to prompt the Assignee to resolve the issue. The Assignee then decides to either solve or reassign.
Set the properties:
User Task > Properties Tab > Main config
Property | Value | Description |
---|---|---|
Candidate users | role(Assignee) | The candidate user |
Documentation | Please provide the solution for this Issue. | Additional text that displays on the yellow task notification ribbon |
User Task > Properties Tab > Form
Id
|
Name
|
Type
|
Default
|
Required
|
Readable
|
Writeable
|
Form Values |
Description
|
---|---|---|---|---|---|---|---|---|
solved | Solved | button | false | false | true | true | ||
reassign | Reassign | button | false | false | true | true |
Timer Boundary Event > Properties Tab > Main Config
Property | Value | Description |
---|---|---|
Cancel activity | true | |
Time duration | ${provideSolutionDuration} | The amount of time before the connected sequence flow triggers. See the configuration variables |
Step 31: Create a Sixth Exclusive Gateway
Create an exclusive gateway based on the response of a user form
Set the properties:
Exclusive Gateway > Properties Tab > General
(No properties to set except the Name)
Sequence Flow 1(Reassign Button Pressed) > Properties Tab > Main config
Property | Value | Description |
---|---|---|
Label Width | 0 | No label on the sequence flow exists |
Condition | ${reassign} | Will return “true” and follow this path if the user presses the Reassign button. |
Sequence Flow 2(Solved Button Pressed) > Properties Tab > Main config
Property | Value | Description |
---|---|---|
Label Width | 0 | No label on the sequence flow exists |
Condition | ${solved} | Will return “true” and follow this path if the user presses the Solved button. |
Step 32: Reappoint Assignee
Create a user to assign another person to solve this issue.
Set the properties:
User Task > Properties Tab > Main Config
Property | Value | Description |
---|---|---|
Candidate Users | role(Assignee) | |
Documentation | Assign another person to solve this issue. | The extra description on the yellow ribbon task notification |
User Task > Properties Tab > Form
Id
|
Name
|
Type
|
Default
|
Required
|
Readable
|
Writeable
|
Form Values |
Description
|
---|---|---|---|---|---|---|---|---|
userName | User | user | false | true | true | proposedValues:${proposedUsers} | ||
group | Group | group | false | true | true | |||
role | Reviewer | roleInCommunity | false | true | true | |||
reassignAssigneeButton | Reappoint Assignee | taskButton | false | true | false |
User Task > Properties Tab > Listeners
Listener implementation | Type | Event | Fields | Description |
---|---|---|---|---|
com.collibra.dgc.core.workflow.activiti.tasklistener.CheckMandatoryFieldCombinationTaskListener | class | complete | see table A | This Tasklistener checks if the configured combination of form property input fields have at least one value field filled in. If not a error message will be shown to the user |
com.collibra.dgc.core.workflow.activiti.tasklistener.SetValueTaskListener | class | create | see table B | This TaskListener can be used to evaluate expressions or user expressions and store the parsed value in a task LOCAL variable. This means as soon as you exit the current user task, the variable will not be available anymore. |
com.collibra.dgc.core.workflow.activiti.tasklistener.SetFormSubtitleTaskListener | class | create | see table C | This TaskListener sets a given string value as the subtitle for the form to be displayed on the task. With this you can tweak the form presented to the user with custom subtitles. |
table A: CheckMandatoryFieldCombinationTaskListener
Field Name | String Value | Expression | Description |
---|---|---|---|
formFields | userName,role,group | a csv of form property ids to do the mandatory check on. |
table B: SetValueTaskListener
Field Name | String Value | Expression | Description |
---|---|---|---|
resultVariable | proposedUsers | the name of the variable to store the result in. | |
userExpression | ${reviewerUserExpression} | a csv of user expressions that will be evaluated to a comma separated list of user names and stored in the given resultVariable . Only one of valuesExpression or userExpression is expected and will be evaluated. |
table C: SetFormSubtitleTaskListener
Field Name | String Value | Expression | Description |
---|---|---|---|
subtitle | workflowReassignSubtitle | the string value for the form subtitle. |
Step 33: Mark as “Resolution Pending”
Create a service task to change the status of the asset to Resolution Pending.
Set the properties:
Service Task > Properties Tab > Main config
Property | Value | Description |
---|---|---|
Type | Java Class | Setting for delegate |
Service Class | com.collibra.dgc.core.workflow.activiti.delegate.StateChanger | JavaDelegate for changing the state of current business item in the process to specified target state. |
Fields:
Field name | String value | Expression | Description |
---|---|---|---|
targetState | 00000000-0000-0000-0000-000000005056 | the id of the target status term. |
Step 34: Review Solution
Create a service task for the Reviewer to review to provided solution.
Set the properties:
User Task > Properties Tab > Main Config
Property | Value | Description |
---|---|---|
Candidate Users | role(Reviewer) | |
Documentation | Review the solution provided. | The extra description on the yellow ribbon task notification |
User Task > Properties Tab > Form
Id
|
Name
|
Type
|
Default
|
Required
|
Readable
|
Writeable
|
Form Values |
---|---|---|---|---|---|---|---|
accepted | Accept | button | false | false | true | true | |
rejected | Reject | button | false | false | true | true |
User Task > Properties Tab > Listeners
Listener implementation | Type | Event | Fields |
---|---|---|---|
com.collibra.dgc.core.workflow.activiti.listener.SetActivitityStreamListener | class | create | see table A |
table A: CheckMandatoryFieldCombinationTaskListener
Field Name | String Value | Expression | Description |
---|---|---|---|
startTask | provide_solution |
Step 35: Create a Seventh Exclusive Gateway
:
Set the properties:
Exclusive Gateway > Properties Tab > General
(No properties to set except the Name)
Sequence Flow 1(Rejected Button Pressed) > Properties Tab > Main config
Property | Value | Description |
---|---|---|
Label Width | 0 | No label on the sequence flow exists |
Condition | ${rejected} | Will return “true” and follow this path if the user presses the Rejected button. |
Sequence Flow 2 (Accpeted Button Pressed) > Properties Tab > Main config
Property | Value | Description |
---|---|---|
Label Width | 0 | No label on the sequence flow exists |
Condition | ${accepted} | Will return “true” and follow this path if the user presses the Accepted button. |
Step 36: Mark as “Resolved”
Create a service task to change the status of the asset to Resolved
Set the properties:
Service Task > Properties Tab > Main config
Property | Value | Description |
---|---|---|
Type | Java Class | Setting for delegate |
Service Class | com.collibra.dgc.core.workflow.activiti.delegate.StateChanger | JavaDelegate for changing the state of current business item in the process to specified target state. |
Fields:
Field name | String value | Expression | Description |
---|---|---|---|
targetState | 00000000-0000-0000-0000-000000005057 | the id of the target status term. |
Step 37: Notify Resolution
Create a service task to notify the Requester of resolution.
Set the properties:
Service Task > Properties Tab > Main config
Property | Value | Description |
---|---|---|
Type | Java Class | Setting for delegate |
Service Class | com.collibra.dgc.core.workflow.activiti.delegate.MailSender |
|
Fields:
Field name | String value | Expression | Description |
---|---|---|---|
template | resolution | the name of the template that should be used to generate the mail. | |
mailTo | role(Requester) | user expressions for users that should receive the action mail. |
You have to login to comment.