Oracle BPM tasks can be dynamically assigned to an individual user, application role, and / or an LDAP group depending on the human task's incoming data.
They did not have to be separate strings, but for clarity these three human task data elements have corresponding process data objects mapped into the human task in this Oracle BPM 12.2.1.2 application. Based on which one(s) is populated, the task's assignment is made.
These are set in the activity's input data association from corresponding process data objects.
The process data objects are set in the output data association of an activity upstream of the activity in the process.
Dynamic Assignment to an Individual User or to an Application Role
As shown in the Workspace task list shown below, if the individualUserAssigned and groupAssigned process data objects are not populated, and if the appRoleAssigned process data object is populated, the task is assigned to the application role (the top task below). If there is a user id set to individualUserAssigned process data object (the bottom task below), then the task is only assigned to that individual.
Similarly, if the groupAssigned process data object is populated, in the Workspace the task is assigned to that LDAP group .
More than one of the incoming values can be set. For example, if a valid user id, LDAP group and an application role are all passed in, in the Workspace the task will be assigned to all three.
The Human Task Business Rule
These dynamic assignments occurred because a business rule set was created for the human task (open the human task -> double click the user icon -> set it to use a business rule -> name the List Ruleset rule -> click OK.
With the new Rule Set selected, create three new if / then business rules. The first one assigns it to an LDAP group if a group is passed in. Note that the second parameter is set in the CreateResourceList function that assigns the task to users in the LDAP Group.
Click the + icon in the rule's toolbar to add a second rule that assigns the task to an application role if it is passed in. Note that the third parameter is set in the CreateResourceList function that assigns the task to users in the Application Role.
Click the + icon in the rule's toolbar to add a third rule that assigns the task to an individual user if one is passed in. Note that the first parameter is set in the CreateResourceList function that assigns the task to individual user(s).
Caveats to this Approach
There are a couple things you need to be aware of if you decide to take the business rule approach with human tasks.
- In order for the rule to use them as facts, the valid text needs to be passed into the human task's user id, application role, and LDAP group id. If the invalid text is passed into any one of the three (e.g., the user, group or application role does not exist), this recoverable runtime error will occur: exception.name: Error in routing slip.
exception.description: The task is assigned to an invalid {user,group, application role} in realm jazn.com.
exception.fix: Verify that the group is specified correctly in the routing slip in the task definition - While a business rule's if statement does a nice job of checking for an empty string (e.g., Task.payload.userAssigned=="""), it does not work as well when checking for null.
The Oracle BPM 12.2.1.2 application created with these business rules can be downloaded from here.
References:
- Creating Parametric Roles Using Business Rules by Dan Atwood
- Using Parametric Roles in Oracle BPM 11g by Arun Pareek
- How to manage task assignments and reassignments in Oracle BPM by Arun Pareek
- Designing Human Tasks in Oracle BPM Oracle Fusion Middleware, Developing Business Processes with Oracle Business Process Management Studio 12c (12.2.1) E59335-03