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}"/>