9. Assignment Methods
Workingflow supports two ways to assign tasks: Static (Design-time) and Dynamic (Runtime).
Method 1: Static Assignment (Hardcoded)
Use this when assignment rules are fixed and known in advance.
Assign to Specific User
<!-- Always assigned to this specific email -->
<userTask id="adminReview" flowable:assignee="admin@workingflow.com"/>
Assign to Multiple Users
Users in the list can claim the task (comma-separated emails).
<userTask id="peerReview" flowable:candidateUsers="user1@work.com,user2@work.com"/>
Assign to Group(s)
Users in any of the listed groups can claim the task.
<!-- Assigned to Manager and Admin roles -->
<userTask id="managerReview" flowable:candidateGroups="ROLE_MANAGER,ROLE_ADMIN"/>
Method 2: Dynamic Assignment (Variable-based)
Use this when the assignee is determined during the process (e.g., selected in a previous form).
Dynamic User Assignment
<!-- Step 1: Selection Form (stores email in 'user_reviewer') -->
<activiti:formProperty id="user_reviewer" name="Select Reviewer" type="enum" required="true"/>
<!-- Step 2: Assign to selected user -->
<userTask id="reviewTask" flowable:assignee="${user_reviewer}"/>
Dynamic Multi-User Assignment
<!-- Step 1: Multi-select Form (stores 'jane@work.com,john@work.com') -->
<activiti:formProperty id="users_reviewers" name="Select Reviewers" type="enum" required="true"/>
<!-- Step 2: Assign to multiple candidate users -->
<userTask id="teamReview" flowable:candidateUsers="${users_reviewers}"/>
Dynamic Role Assignment
<!-- Step 1: Selection Form (stores role name in 'role_dept') -->
<activiti:formProperty id="role_dept" name="Select Department" type="enum" required="true"/>
<!-- Step 2: Assign to selected role -->
<userTask id="deptReview" flowable:candidateGroups="${role_dept}"/>
Multi-Role Dynamic Assignment
<!-- Step 1: Multi-select Form (stores 'ROLE_A,ROLE_B') -->
<activiti:formProperty id="roles_approvers" name="Select Approvers" type="enum" required="true"/>
<!-- Step 2: Assign to multiple roles -->
<userTask id="multiReview" flowable:candidateGroups="${roles_approvers}"/>