Issue Management Workflow Design and Implementation

 

[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:

  1. Start User (Requester)
  2. Requester
  3. Reviewer
  4. Stakeholder
  5. Assignee
  6. 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 JavaDelegate used for sending mails from the workflow.

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 JavaDelegate used for sending mails from the workflow.

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.