Icon
For a step by step walk-through and configuration of this Workflow, go to: Issue Management Walk-Through
Icon
See also the user guide's section about Issue Management, go to: Issue Management

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

PropertyValueDescription
Initiatorrequester 

Start Event > Properties Tab > Form

Configuration variables:

Id
Name
Type
Default
Required
Readable
Writeable
Description
acceptReviewDurationTime before escalation of "Accept Review" task B10Dfalsefalsetrue 
reviewIssueDurationTime before "Review Issue" task escalation B2Dfalsefalsetrue 
provideSolutionDurationTime before "Provide Solution" task is escalated B7Dfalsefalsetrue 
moreInformationDurationTime before "Provide more information" task is escalated B30Dfalsefalsetrue 
voteWarningTimeDurationTime before a warning is send to the stakeholders for approving the proposed solutionstringB3Dfalsefalsetrue 
voteTimeoutDurationTime before the approve solution by the stakeholders step is continued B5Dfalsefalsetrue 
stakeholderUserExpressionUser expression for stakeholders of the issue role(Steward)falsefalsetrue 
reviewerUserExpressionUser expression for reviewers of the issuestringrole(Steward)falsefalsetrue 
assigneeUserExpressionUser expression for Assignees of the issuestringrole(Steward)falsefalsetrue 
issueManagerUserExpressionUser expression for Issue Managers of the issuestringrole(Issue Manager)truefalsetrue 
sendVotingActionEmailsSend an action email to users that are required to vote in the processbooleanfalsetruefalsetrue 

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)

PropertyValueDescription
Label Width0There 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)

PropertyValueDescription
Label Width0There 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
Icon

Information about IsEmpty() method can be found here: <yourCollibraDomain>/docs/index.html > core > Package: com.collibra.dgc.core.workflow.activiti.bean > Class: UsersBean

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

PropertyValueDescription
TypeExpression 
Expression${fallbackUserExpression}See the configuration variables
Result variablereviewerUserExpressionThe 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

PropertyValueDescription
SequentialNo 
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 variablecurrentReviewerThe item variable of the loop. A form will be created for each "currentReviewer"
Completion condition${accept} 

User Task > Properties Tab > Main config

PropertyValueDescription
Candidate usersuser(${currentReviewer})The output from the multi instance loop

User Task > Properties Tab > Form

Id
Name
Type
Default
Required
Readable
Writeable
Description
acceptAcceptbuttonfalsefalsetruetrue 
rejectRejectbuttonfalsefalsetruetrue 

Timer Boundary Event > Properties Tab > Main Config

PropertyValueDescription
Cancel activitytrue 
Time duration${acceptReviewDuration}The amount of time before the connected sequence flow triggers. See the configuration variables
Icon
For more information about Duration Variables, go to: Managing Workflows > Duration variables

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

PropertyValueDescription
Candidate Users${issueManagerUserExpression}See start form configuration variables

User Task > Properties Tab > Form

Id
Name
Type
Default
Required
Readable
Writeable
Form Values
Description
userNameUseruser falsetruetrueproposedValues:${proposedUsers} 
groupGroupgroup falsetruetrue  
roleReviewerroleInCommunity falsetruetrue  
assignButtonAssigntaskButton falsetruetrue  

User Task > Properties Tab > Listeners

Listener implementationTypeEventFieldsDescription
com.collibra.dgc.core.workflow.activiti.tasklistener.CheckMandatoryFieldCombinationTaskListenerclasscompletesee table AThis 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.SetValueTaskListenerclasscreatesee table BThis 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.SetFormSubtitleTaskListenerclasscreatesee table CThis 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 NameString ValueExpressionDescription
formFieldsuserName,role,group a csv of form property ids to do the mandatory check on.

table B: SetValueTaskListener

Field NameString ValueExpressionDescription
resultVariableproposedUsers 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 NameString ValueExpressionDescription
subtitleworkflowReassignSubtitle the string value for the form subtitle.
Icon

Information about the SetValueTaskListener class can be found here: <yourCollibraDomain>/docs/index.html > core > Package: com.collibra.dgc.core.workflow.activiti.tasklistener > Class: SetValueTaskListener

Icon

Information about the CheckMandatoryFieldCombinationTaskListener class can be found here: <yourCollibraDomain>/docs/index.html > core > Package: com.collibra.dgc.core.workflow.activiti.tasklistener > Class: CheckMandatoryFieldCombinationTaskListener

Icon

Information about the SetFormSubtitleTaskListenerclass can be found here: <yourCollibraDomain>/docs/index.html > core > Package: com.collibra.dgc.core.workflow.activiti.tasklistener > Class: SetFormSubtitleTaskListener


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

PropertyValueDescription
TypeJava ClassSetting for delegate
Service Classcom.collibra.dgc.core.workflow.activiti.delegate.GetUserNamesThe GetUserNames delegate class

Fields:

Field nameString valueExpressionDescription
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 implementationTypeEventFieldsDescription
com.collibra.dgc.core.workflow.activiti.executionlistener.SetMembersExecutionListenerclasscompletesee table AThis ExecutionListener will set the specified members on the business item of the workflow

table A:

Field NameString ValueExpressionDescription
roleNameReviewer 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.
clearExistingtrue 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.
Icon

Information about the GetUserNames delegate can be found here: <yourCollibraDomain>/docs/index.html > core > Package: com.collibra.dgc.core.workflow.activiti.delgate > Class: GetUserNames

Icon

Information about the SetMembersExecutionListener class can be found here: <yourCollibraDomain>/docs/index.html > core > Package: com.collibra.dgc.core.workflow.activiti.executionlistener > Class: GetUserNames

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)

PropertyValueDescription
Label Width0There 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 implementationTypeEventFieldsDescription
com.collibra.dgc.core.workflow.activiti.executionlistener.SetMembersExecutionListenerclasscompletesee table AThis ExecutionListener will set the specified members on the business item of the workflow

table A:

Field NameString ValueExpressionDescription
roleNameReviewer 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)

PropertyValueDescription
Label Width0There 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

PropertyValueDescription
TypeJava ClassSetting for delegate
Service Classcom.collibra.dgc.core.workflow.activiti.delegate.StateChangerJavaDelegate for changing the state of current business item in the process to specified target state.

Fields:

Field nameString valueExpressionDescription
targetState00000000-0000-0000-0000-000000005020 the id of the target status term.
Icon

Information about the GetUserNames delegate can be found here: <yourCollibraDomain>/docs/index.html > core > Package: com.collibra.dgc.core.workflow.activiti.delgate > Class: StateChanger


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

PropertyValueDescription
Candidate Userrole(Reviewer)Set the role for the user task
DocumentationPlease 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

IdNameTypeDefaultRequiredReadableWriteable
reassignReassign Reviewerbutton falsetruetrue
moreInformationMore Informationbuttonfalsefalsetruetrue
rejectedInvalid Issuebuttonfalsefalsetruetrue
acceptedRequest Approvalbuttonfalsefalsetruetrue

Timer Boundary Event > Properties Tab > Main Config

 

PropertyValueDescription
Cancel activitytrue 
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

PropertyValueDescription
TypeJava ClassSetting for delegate
Service Classcom.collibra.dgc.core.workflow.activiti.delegate.StateChangerJavaDelegate for changing the state of current business item in the process to specified target state.

Fields:

Field nameString valueExpressionDescription
targetState00000000-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)

PropertyValueDescription
Label Width0There 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)

PropertyValueDescription
Label Width0There 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)

PropertyValueDescription
Label Width0There 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)

PropertyValueDescription
Label Width0There 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

PropertyValueDescription
Candidate Usersrole(Reviewer) 
DocumentationAssign 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
userNameUseruser falsetruetrueproposedValues:${proposedUsers}
groupGroupgroup falsetruetrue 
roleReviewerroleInCommunity falsetruetrue 
reassignReviewerButtonReassigntaskButton falsetruetrue 

User Task > Properties Tab > Listeners

Listener implementationTypeEventFieldsDescription
com.collibra.dgc.core.workflow.activiti.tasklistener.CheckMandatoryFieldCombinationTaskListenerclasscompletesee table AThis 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.SetValueTaskListenerclasscreatesee table BThis 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.SetFormSubtitleTaskListenerclasscreatesee table CThis 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 NameString ValueExpressionDescription
formFieldsuserName,role,group a csv of form property ids to do the mandatory check on.

table B: SetValueTaskListener

Field NameString ValueExpressionDescription
resultVariableproposedUsers 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 NameString ValueExpressionDescription
subtitleworkflowReassignSubtitle 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

PropertyValueDescription
TypeJava ClassSetting for delegate
Service Classcom.collibra.dgc.core.workflow.activiti.delegate.StateChangerJavaDelegate for changing the state of current business item in the process to specified target state.

Fields:

Field nameString valueExpressionDescription
targetState00000000-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

 

PropertyValueDescription
Candidate usersrole(Requester)The candidate user
DocumentationPlease 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
infoAdditional Informationtextarea truetruetrue  
taskButtonProvide InformationtaskButtonfalsefalsetruetrue This is the button that appears on the yellow task notification ribbon

Timer Boundary Event > Properties Tab > Main Config

PropertyValueDescription
Cancel activitytrue 
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

PropertyValueDescription
TypeJava ClassSetting for delegate
Service Classcom.collibra.dgc.core.workflow.activiti.delegate.AddCommentJavaDelegate for adding comments to the current business item. It also supports adding comments for guest users

Fields:

Field nameString valueExpressionDescription
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.
guestUserExpressionrole(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
Icon

Information about the AddComment delegate can be found here: <yourCollibraDomain>/docs/index.html > core > Package: com.collibra.dgc.core.workflow.activiti.delgate > Class: AddComment

 

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

PropertyValueDescription
TypeJava ClassSetting for delegate
Service Classcom.collibra.dgc.core.workflow.activiti.delegate.StateChangerJavaDelegate for changing the state of current business item in the process to specified target state.

Fields:

Field nameString valueExpressionDescription
targetState00000000-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

PropertyValueDescription
TypeJava ClassSetting for delegate
Service Classcom.collibra.dgc.core.workflow.activiti.delegate.MailSenderJavaDelegate used for sending mails from the workflow.

Fields:

Field nameString valueExpressionDescription
templaterejection the name of the template that should be used to generate the mail.
mailTorole(Requester) user expressions for users that should receive the action mail.
Icon

Information about the MailSender delegate can be found here: <yourCollibraDomain>/docs/index.html > core > Package: com.collibra.dgc.core.workflow.activiti.delgate > Class: MailSender

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

PropertyValueDescription
TypeJava ClassSetting for delegate
Service Classcom.collibra.dgc.core.workflow.activiti.delegate.StateChangerJavaDelegate for changing the state of current business item in the process to specified target state.

Fields:

Field nameString valueExpressionDescription
targetState00000000-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

SettingValueDescription
Called ElementvotingSubProcess

This is the Id of the Voting Sub-Process that is being called

Input ParametersSee BelowThe variables or expressions that are being passed to the votingSubProcess
Output ParametersSee BelowThe output variable from the call activity

Input Parameters: These are expressions and variables that are passed to the Voting Sub-Process

SourceSource expressionTargetTarget 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:

SourceSource expressionTargetTarget expressionDescription
votingResult votingResult This is the final result of the Voting Sub-Process. It will be true or false
Icon
For the design of the Voting Sub-Process, go to: Voting Sub-Process Design and Implementation

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

PropertyValueDescription
Label Width47The 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

PropertyValueDescription
Label Width42The 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

PropertyValueDescription
TypeJava ClassSetting for delegate
Service Classcom.collibra.dgc.core.workflow.activiti.delegate.StateChangerJavaDelegate for changing the state of current business item in the process to specified target state.

Fields:

Field nameString valueExpressionDescription
targetState00000000-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

PropertyValueDescription
Candidate Usersrole(Reviewer) 
DocumentationAppoint 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
userNameUseruser falsetruetrueproposedValues:${proposedUsers} 
groupGroupgroup falsetruetrue  
roleReviewerroleInCommunity falsetruetrue  
resolveButtonResolvebuttonfalsefalsetruetrue  
assignButtonAssignbuttonfalsefalsetruetrue  
assignAssigneeButtonAssign or ResolvetaskButton falsetruefalse Button on the yellow task notification ribbon

User Task > Properties Tab > Listeners

Listener implementationTypeEventFieldsDescription
com.collibra.dgc.core.workflow.activiti.tasklistener.CheckMandatoryFieldCombinationTaskListenerclasscompletesee table AThis 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.SetValueTaskListenerclasscreatesee table BThis 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.SetFormSubtitleTaskListenerclasscreatesee table CThis 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 NameString ValueExpressionDescription
formFieldsuserName,role,group a csv of form property ids to do the mandatory check on.

table B: SetValueTaskListener

Field NameString ValueExpressionDescription
resultVariableproposedUsers 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 NameString ValueExpressionDescription
subtitleworkflowReassignResolveSubtitle 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

PropertyValueDescription
Label Width0No 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

PropertyValueDescription
Label Width0No 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

PropertyValueDescription
TypeJava ClassSetting for delegate
Service Classcom.collibra.dgc.core.workflow.activiti.delegate.StateChangerJavaDelegate for changing the state of current business item in the process to specified target state.

Fields:

Field nameString valueExpressionDescription
targetState00000000-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

PropertyValueDescription
TypeJava ClassSetting for delegate
Service Classcom.collibra.dgc.core.workflow.activiti.delegate.MailSenderJavaDelegate used for sending mails from the workflow.

Fields:

Field nameString valueExpressionDescription
templatein-progress the name of the template that should be used to generate the mail.
mailTorole(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

PropertyValueDescription
TypeJava ClassSetting for delegate
Service Classcom.collibra.dgc.core.workflow.activiti.delegate.GetUserNamesThe GetUserNames delegate class

Fields:

Field nameString valueExpressionDescription
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 implementationTypeEventFieldsDescription
com.collibra.dgc.core.workflow.activiti.executionlistener.SetMembersExecutionListenerclasscompletesee table AThis ExecutionListener will set the specified members on the business item of the workflow

table A:

Field NameString ValueExpressionDescription
roleNameAssignee 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.
clearExistingtrue 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

PropertyValueDescription
Candidate usersrole(Assignee)The candidate user
DocumentationPlease 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
solvedSolvedbuttonfalsefalsetruetrue  
reassignReassignbuttonfalsefalsetruetrue  

Timer Boundary Event > Properties Tab > Main Config

PropertyValueDescription
Cancel activitytrue 
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

PropertyValueDescription
Label Width0No 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

PropertyValueDescription
Label Width0No 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

PropertyValueDescription
Candidate Usersrole(Assignee) 
DocumentationAssign 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
userNameUseruser falsetruetrueproposedValues:${proposedUsers} 
groupGroupgroup falsetruetrue  
roleReviewerroleInCommunity falsetruetrue  
reassignAssigneeButtonReappoint AssigneetaskButton falsetruefalse  

User Task > Properties Tab > Listeners

Listener implementationTypeEventFieldsDescription
com.collibra.dgc.core.workflow.activiti.tasklistener.CheckMandatoryFieldCombinationTaskListenerclasscompletesee table AThis 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.SetValueTaskListenerclasscreatesee table BThis 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.SetFormSubtitleTaskListenerclasscreatesee table CThis 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 NameString ValueExpressionDescription
formFieldsuserName,role,group a csv of form property ids to do the mandatory check on.

table B: SetValueTaskListener

Field NameString ValueExpressionDescription
resultVariableproposedUsers 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 NameString ValueExpressionDescription
subtitleworkflowReassignSubtitle 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

PropertyValueDescription
TypeJava ClassSetting for delegate
Service Classcom.collibra.dgc.core.workflow.activiti.delegate.StateChangerJavaDelegate for changing the state of current business item in the process to specified target state.

Fields:

Field nameString valueExpressionDescription
targetState00000000-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

PropertyValueDescription
Candidate Usersrole(Reviewer) 
DocumentationReview 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
acceptedAcceptbuttonfalsefalsetruetrue 
rejectedRejectbuttonfalsefalsetruetrue 

User Task > Properties Tab > Listeners

Listener implementationTypeEventFields
com.collibra.dgc.core.workflow.activiti.listener.SetActivitityStreamListenerclasscreatesee table A

table A: CheckMandatoryFieldCombinationTaskListener

Field NameString ValueExpressionDescription
startTaskprovide_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

PropertyValueDescription
Label Width0No 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

PropertyValueDescription
Label Width0No 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

PropertyValueDescription
TypeJava ClassSetting for delegate
Service Classcom.collibra.dgc.core.workflow.activiti.delegate.StateChangerJavaDelegate for changing the state of current business item in the process to specified target state.

Fields:

Field nameString valueExpressionDescription
targetState00000000-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

PropertyValueDescription
TypeJava ClassSetting for delegate
Service Classcom.collibra.dgc.core.workflow.activiti.delegate.MailSenderJavaDelegate used for sending mails from the workflow.

Fields:

Field nameString valueExpressionDescription
templateresolution the name of the template that should be used to generate the mail.
mailTorole(Requester) user expressions for users that should receive the action mail.

Attachments:

image2014-4-21 13:14:0.png (image/png)
image2014-4-21 13:14:42.png (image/png)
image2014-4-21 13:20:38.png (image/png)
image2014-4-21 13:21:32.png (image/png)
image2014-4-21 13:39:34.png (image/png)
image2014-4-21 13:42:58.png (image/png)
image2014-4-21 13:58:56.png (image/png)
image2014-4-21 13:59:10.png (image/png)
image2014-4-21 14:2:8.png (image/png)
image2014-4-21 14:10:8.png (image/png)
image2014-4-21 14:12:2.png (image/png)
image2014-4-21 14:21:0.png (image/png)
image2014-4-21 14:22:26.png (image/png)
image2014-4-21 14:27:39.png (image/png)
image2014-4-21 14:31:47.png (image/png)
image2014-4-21 14:32:43.png (image/png)
image2014-4-21 14:43:16.png (image/png)
image2014-4-21 14:50:37.png (image/png)
image2014-4-21 14:57:13.png (image/png)
image2014-4-21 15:6:43.png (image/png)
image2014-4-21 15:11:6.png (image/png)
image2014-4-21 15:22:29.png (image/png)
image2014-4-21 15:23:44.png (image/png)
image2014-4-21 15:24:19.png (image/png)
image2014-4-21 15:25:1.png (image/png)
image2014-4-21 20:56:45.png (image/png)
image2014-4-21 21:0:34.png (image/png)
image2014-4-21 21:12:42.png (image/png)
image2014-4-21 21:18:0.png (image/png)
image2014-4-21 21:21:34.png (image/png)
image2014-4-21 21:31:51.png (image/png)
image2014-4-21 21:36:13.png (image/png)
image2014-4-21 21:37:9.png (image/png)
image2014-4-21 21:38:38.png (image/png)
image2014-4-21 21:40:23.png (image/png)
image2014-4-21 21:45:15.png (image/png)
image2014-4-21 21:50:29.png (image/png)
image2014-4-21 21:55:1.png (image/png)
image2014-4-21 21:59:12.png (image/png)
image2014-4-21 22:3:38.png (image/png)
image2014-4-21 22:7:41.png (image/png)
image2014-4-21 22:10:34.png (image/png)
image2014-4-21 22:15:45.png (image/png)
image2014-4-21 22:16:57.png (image/png)
image2014-4-21 22:19:7.png (image/png)
image2014-4-21 22:21:26.png (image/png)
image2014-4-21 22:24:16.png (image/png)
image2014-4-21 22:25:54.png (image/png)
image2014-4-21 22:27:6.png (image/png)
image2014-4-21 22:29:6.png (image/png)
image2014-4-21 22:30:1.png (image/png)
image2014-4-21 22:30:50.png (image/png)
image2014-4-21 22:31:35.png (image/png)
image2014-4-21 22:34:49.png (image/png)
image2014-4-21 22:37:49.png (image/png)
image2014-4-21 22:39:19.png (image/png)
image2014-4-21 22:40:2.png (image/png)
image2014-4-21 22:53:51.png (image/png)
image2014-4-21 22:54:41.png (image/png)
image2014-4-21 22:55:35.png (image/png)
image2014-4-22 8:37:56.png (image/png)
image2014-4-22 8:41:45.png (image/png)
image2014-4-22 8:47:43.png (image/png)
image2014-4-22 8:52:28.png (image/png)
image2014-4-22 8:56:28.png (image/png)
image2014-4-22 8:59:34.png (image/png)
image2014-4-22 9:1:42.png (image/png)
image2014-4-22 9:5:22.png (image/png)
image2014-4-22 9:8:33.png (image/png)
image2014-4-22 9:11:46.png (image/png)
image2014-4-22 9:12:55.png (image/png)
image2014-4-22 9:15:32.png (image/png)
image2014-4-22 9:17:22.png (image/png)
image2014-4-22 9:19:40.png (image/png)
image2014-4-22 9:22:11.png (image/png)
image2014-4-22 9:25:27.png (image/png)
image2014-4-22 9:28:12.png (image/png)
image2014-4-22 9:30:28.png (image/png)
image2014-4-22 9:31:57.png (image/png)
image2014-4-22 9:38:38.png (image/png)
image2014-4-22 9:39:27.png (image/png)
image2014-4-22 9:42:1.png (image/png)
image2014-4-22 9:42:55.png (image/png)
image2014-4-22 9:44:56.png (image/png)
image2014-4-22 10:9:21.png (image/png)
image2014-4-22 10:10:59.png (image/png)
image2014-4-22 10:15:20.png (image/png)
image2014-4-22 10:22:33.png (image/png)
image2014-4-22 10:23:14.png (image/png)
image2014-4-22 10:26:23.png (image/png)
image2014-4-22 10:31:57.png (image/png)
image2014-4-22 10:33:46.png (image/png)
image2014-4-22 10:34:20.png (image/png)
image2014-4-22 10:36:10.png (image/png)
image2014-4-22 10:39:46.png (image/png)
image2014-4-22 10:40:29.png (image/png)
image2014-4-22 10:41:59.png (image/png)
image2014-4-22 10:46:6.png (image/png)
image2014-4-22 10:49:13.png (image/png)
image2014-4-22 10:50:43.png (image/png)
image2014-4-22 10:51:31.png (image/png)
image2014-4-22 10:57:17.png (image/png)
image2014-4-22 10:59:29.png (image/png)
image2014-4-22 11:0:9.png (image/png)
image2014-4-22 11:1:39.png (image/png)
image2014-4-22 11:3:42.png (image/png)
image2014-4-22 11:5:41.png (image/png)
image2014-4-22 11:6:2.png (image/png)
image2014-4-22 11:7:1.png (image/png)
image2014-4-22 11:9:39.png (image/png)
image2014-4-22 11:13:5.png (image/png)
image2014-4-22 11:13:43.png (image/png)
image2014-4-22 11:15:2.png (image/png)
image2014-4-22 11:16:27.png (image/png)
image2014-4-22 11:19:0.png (image/png)
image2014-4-22 11:20:39.png (image/png)
image2014-4-22 11:27:7.png (image/png)
image2014-4-22 11:27:54.png (image/png)
image2014-4-22 11:29:37.png (image/png)
image2014-4-22 12:49:13.png (image/png)
image2014-4-22 12:51:31.png (image/png)
image2014-4-22 12:51:51.png (image/png)
image2014-4-22 12:51:58.png (image/png)
image2014-4-22 12:52:53.png (image/png)
image2014-4-22 13:31:10.png (image/png)
image2014-4-22 13:33:5.png (image/png)
image2014-4-22 13:35:4.png (image/png)
image2014-4-22 13:38:1.png (image/png)
image2014-4-22 13:45:34.png (image/png)