Assigning a task to->{group, rolebased,...}
chprvkmr Nov 30, 2005 11:16 AMHi All,
Right now Iam playing with assignment handlers and I have many confusions.
What will happen when we assign a task to
[1] group
[2] role {member ship name}
what I expected is task should be assigned to all members of group/who matched role. But here when task is assigned to group, its not getting assigned to any user and if task is assigned based on role then its getting assigned to only one user even there exists many users with that role.
Process Definition
<?xml version="1.0" encoding="UTF-8"?> <process-definition name="tmp1swimlanetest-2"> <!-- SWIMLANES (= process roles) --> <swimlane name="tosomeone"> <assignment expression="user(rajeev)" /> </swimlane> <!-- NODES --> <start-state name="tmp1swimlanetest-2-state-1"> <task swimlane="tosomeone"> <controller> <variable name="initiatorname" /> <variable name="assignmentexpression" /> </controller> </task> <transition to="tmp1swimlanetest-2-state-2" /> </start-state> <task-node name="tmp1swimlanetest-2-state-2"> <task> <assignment class='com.sample.workflow.assignments.Swimlanetest2AH1' /> <controller> <variable name="initiatorname" access="read"/> <variable name="assignmentexpression" access="read"/> <variable name="yourname"/> </controller> </task> <transition to="end" /> </task-node> <end-state name="end" /> </process-definition>
Assignment Handler -> Swimlanetest2AH1
package com.sample.workflow.assignments; import org.jbpm.graph.exe.*; import org.jbpm.taskmgmt.def.*; import org.jbpm.taskmgmt.exe.Assignable; import org.jbpm.identity.assignment.*; public class Swimlanetest2AH1 extends ExpressionAssignmentHandler { private static final long serialVersionUID = 1L; public void assign(Assignable assignable, ExecutionContext executionContext) { System.out.println("*********Inside Swimlanetest2AH1****"); String strExpression = (String)executionContext.getVariable("assignmentexpression"); System.out.println("Got expression as " + strExpression); System.out.println("*****Assigning based on assignment expression"); super.expression = strExpression; super.assign(assignable, executionContext); System.out.println("*******Finished Swimlanetest2AH1*********"); } }
TABLES
JBPM_ID_MEMBERSHIP ****************** ID_ CLASS_ NAME_ ROLE_ USER_ GROUP_ ---------------------------------------------------------------- 959 M 960 958 957 M leaderofthegang 956 958 960 M teammember 4 959 961 M teammember 5 959 962 M projectleader 6 959 963 M technicalleader 7 959 JBPM_ID_GROUP ************* ID_ CLASS_ NAME_ TYPE_ ---------------------------------------- 958 G hellsangels hierarchy 959 G dummy project JBPM_ID_USER ************ ID_ CLASS_ NAME_ EMAIL_ PASSWORD_ ------------------------------------------------------------------ 3 U bert bert@sesamestreet.tv ernie,theresabananainyourear 956 U john 960 U bill 4 U siddarth siddarth 2 U ernie ernie@sesamestreet.tv canthereyoubert,theresabananainmyear 5 U praveen praveen 6 U rajeev rajeev 7 U shaileshraval shaileshraval
Below are sample assignment tests that are performed.
(test-1)
data given=
initiatorname::rajeev
assignmentexpression::group(dummy)
console output=
20:51:47,833 INFO [STDOUT] Hibernate: select hibernate_sequence.nextval from dual
20:51:47,848 INFO [STDOUT] *********Inside Swimlanetest2AH1****
20:51:47,848 INFO [STDOUT] Got expression as group(dummy)
20:51:47,848 INFO [STDOUT] *****Assigning based on assignment expression
20:51:47,848 DEBUG [ExpressionAssignmentHandler] resolving first term 'group(dummy)'
20:51:47,848 INFO [STDOUT] Hibernate: select hibernate_sequence.nextval from dual
20:51:47,848 INFO [STDOUT] Hibernate: select group0_.ID_ as ID1_, group0_.NAME_ as NAME3_2_, group0_.TYPE_ as TYPE4_2_ from JBPM_ID_GROUP group0_ where group0_.NAME_=?
20:51:47,864 INFO [STDOUT] *******Finished Swimlanetest2AH1*********
20:51:47,864 DEBUG [GraphElement] event 'task-create' on 'Task(tmp1swimlanetest-2-state-2)' for 'Token(/)'
20:51:47,864 INFO [STDOUT] Hibernate: select events0_.TASK_ as TASK8___, events0_.ID_ as ID1___, events0_.EVENTTYPE_ as EVENTTYPE2___, events0_.ID_ as ID1_0_, events0_.EVENTTYPE_ as EVENTTYPE2_7_0_, events0_.TYPE_ as TYPE3_7_0_, events0_.GRAPHELEMENT_ as GRAPHELE4_7_0_ from JBPM_EVENT events0_ where events0_.TASK_=?
20:51:47,864 DEBUG [GraphElement] event 'after-signal' on 'StartState(tmp1swimlanetest-2-state-1)' for 'Token(/)'
20:51:47,864 DEBUG [TaskBean] assignmentlogs: []
20:51:47,864 INFO [STDOUT] Hibernate: select hibernate_sequence.nextval from dual
20:51:47,864 INFO [STDOUT] Hibernate: select hibernate_sequence.nextval from dual
20:51:47,864 INFO [STDOUT] Hibernate: select hibernate_sequence.nextval from dual
20:51:47,864 INFO [STDOUT] Hibernate: select hibernate_sequence.nextval from dual
20:51:47,880 DEBUG [PersistenceContext] committing transaction
20:51:47,880 INFO [STDOUT] Hibernate: select hibernate_sequence.nextval from dual
20:51:47,880 INFO [STDOUT] Hibernate: insert into JBPM_VARIABLEINSTANCE (NAME_, CONVERTER_, TOKEN_, TOKENVARIABLEMAP_, PROCESSINSTANCE_, STRINGVALUE_, CLASS_, ID_) values (?, ?, ?, ?, ?, ?, 'S', ?)
Expected Result:: Task will be assigned to all the users in the specified group
Question:: Why task is not assigned to any user.
------------------
(test-2)
data given=
initiatorname::rajeev
assignmentexpression::group(dummy) --> member(projectleader)
console output=
20:58:26,278 INFO [STDOUT] Hibernate: select hibernate_sequence.nextval from dual
20:58:26,293 INFO [STDOUT] *********Inside Swimlanetest2AH1****
20:58:26,293 INFO [STDOUT] Got expression as group(dummy) --> member(projectleader)
20:58:26,293 INFO [STDOUT] *****Assigning based on assignment expression
20:58:26,293 DEBUG [ExpressionAssignmentHandler] resolving first term 'group(dummy)'
20:58:26,293 INFO [STDOUT] Hibernate: select hibernate_sequence.nextval from dual
20:58:26,309 INFO [STDOUT] Hibernate: select group0_.ID_ as ID1_, group0_.NAME_ as NAME3_2_, group0_.TYPE_ as TYPE4_2_ from JBPM_ID_GROUP group0_ where group0_.NAME_=?
20:58:26,309 DEBUG [ExpressionAssignmentHandler] resolving next term 'member(projectleader)'
20:58:26,309 INFO [STDOUT] Hibernate: select membership0_.GROUP_ as GROUP6___, membership0_.ID_ as ID1___, membership0_.ID_ as ID1_0_, membership0_.NAME_ as NAME3_3_0_, membership0_.ROLE_ as ROLE4_3_0_, membership0_.USER_ as USER5_3_0_, membership0_.GROUP_ as GROUP6_3_0_ from JBPM_ID_MEMBERSHIP membership0_ where membership0_.GROUP_=?
20:58:26,340 INFO [STDOUT] Hibernate: select user0_.ID_ as ID1_0_, user0_.NAME_ as NAME3_0_0_, user0_.EMAIL_ as EMAIL4_0_0_, user0_.PASSWORD_ as PASSWORD5_0_0_ from JBPM_ID_USER user0_ where user0_.ID_=?
20:58:26,356 DEBUG [GraphElement] event 'task-assign' on 'Task(tmp1swimlanetest-2-state-2)' for 'Token(/)'
20:58:26,356 INFO [STDOUT] Hibernate: select events0_.TASK_ as TASK8___, events0_.ID_ as ID1___, events0_.EVENTTYPE_ as EVENTTYPE2___, events0_.ID_ as ID1_0_, events0_.EVENTTYPE_ as EVENTTYPE2_7_0_, events0_.TYPE_ as TYPE3_7_0_, events0_.GRAPHELEMENT_ as GRAPHELE4_7_0_ from JBPM_EVENT events0_ where events0_.TASK_=?
20:58:26,372 INFO [STDOUT] *******Finished Swimlanetest2AH1*********
20:58:26,372 DEBUG [GraphElement] event 'task-create' on 'Task(tmp1swimlanetest-2-state-2)' for 'Token(/)'
20:58:26,372 DEBUG [GraphElement] event 'after-signal' on 'StartState(tmp1swimlanetest-2-state-1)' for 'Token(/)'
20:58:26,372 DEBUG [TaskBean] assignmentlogs: [task-assign[rajeev,org.jbpm.taskmgmt.exe.TaskInstance@14563d4]]
20:58:26,372 INFO [STDOUT] [Debug] msg
20:58:26,372 INFO [STDOUT] Hibernate: select hibernate_sequence.nextval from dual
20:58:26,372 INFO [STDOUT] Hibernate: select hibernate_sequence.nextval from dual
Got Expected Result
--------------------
(test-3)
datagiven=
initiatorname::rajeev
assignmentexpression::group(dummy) --> member(technicalleader)
console output=
21:02:27,564 INFO [STDOUT] *********Inside Swimlanetest2AH1****
21:02:27,564 INFO [STDOUT] Got expression as group(dummy) --> member(technicalleader)
21:02:27,564 INFO [STDOUT] *****Assigning based on assignment expression
21:02:27,564 DEBUG [ExpressionAssignmentHandler] resolving first term 'group(dummy)'
21:02:27,564 INFO [STDOUT] Hibernate: select hibernate_sequence.nextval from dual
21:02:27,564 INFO [STDOUT] Hibernate: select group0_.ID_ as ID1_, group0_.NAME_ as NAME3_2_, group0_.TYPE_ as TYPE4_2_ from JBPM_ID_GROUP group0_ where group0_.NAME_=?
21:02:27,564 DEBUG [ExpressionAssignmentHandler] resolving next term 'member(technicalleader)'
21:02:27,580 INFO [STDOUT] Hibernate: select membership0_.GROUP_ as GROUP6___, membership0_.ID_ as ID1___, membership0_.ID_ as ID1_0_, membership0_.NAME_ as NAME3_3_0_, membership0_.ROLE_ as ROLE4_3_0_, membership0_.USER_ as USER5_3_0_, membership0_.GROUP_ as GROUP6_3_0_ from JBPM_ID_MEMBERSHIP membership0_ where membership0_.GROUP_=?
21:02:27,595 INFO [STDOUT] Hibernate: select user0_.ID_ as ID1_0_, user0_.NAME_ as NAME3_0_0_, user0_.EMAIL_ as EMAIL4_0_0_, user0_.PASSWORD_ as PASSWORD5_0_0_ from JBPM_ID_USER user0_ where user0_.ID_=?
21:02:27,595 DEBUG [GraphElement] event 'task-assign' on 'Task(tmp1swimlanetest-2-state-2)' for 'Token(/)'
21:02:27,595 INFO [STDOUT] Hibernate: select events0_.TASK_ as TASK8___, events0_.ID_ as ID1___, events0_.EVENTTYPE_ as EVENTTYPE2___, events0_.ID_ as ID1_0_, events0_.EVENTTYPE_ as EVENTTYPE2_7_0_, events0_.TYPE_ as TYPE3_7_0_, events0_.GRAPHELEMENT_ as GRAPHELE4_7_0_ from JBPM_EVENT events0_ where events0_.TASK_=?
21:02:27,595 INFO [STDOUT] *******Finished Swimlanetest2AH1*********
21:02:27,595 DEBUG [GraphElement] event 'task-create' on 'Task(tmp1swimlanetest-2-state-2)' for 'Token(/)'
21:02:27,595 DEBUG [GraphElement] event 'after-signal' on 'StartState(tmp1swimlanetest-2-state-1)' for 'Token(/)'
21:02:27,595 DEBUG [TaskBean] assignmentlogs: [task-assign[shaileshraval,org.jbpm.taskmgmt.exe.TaskInstance@79daf5]]
21:02:27,595 INFO [STDOUT] [Debug] msg
21:02:27,611 INFO [STDOUT] Hibernate: select hibernate_sequence.nextval from dual
21:02:27,611 INFO [STDOUT] Hibernate: select hibernate_sequence.nextval from dual
21:02:27,611 INFO [STDOUT] Hibernate: select hibernate_sequence.nextval from dual
21:02:27,611 INFO [STDOUT] Hibernate: select hibernate_sequence.nextval from dual
21:02:27,611 INFO [STDOUT] Hibernate: select hibernate_sequence.nextval from dual
Got Expected Result
---------------------
(test-4)
data given=
initiatorname::rajeev
assignmentexpression::group(dummy) --> member(teammember)
console output=
21:05:22,829 INFO [STDOUT] Hibernate: select hibernate_sequence.nextval from dual
21:05:22,844 INFO [STDOUT] *********Inside Swimlanetest2AH1****
21:05:22,844 INFO [STDOUT] Got expression as group(dummy) --> member(teammember)
21:05:22,844 INFO [STDOUT] *****Assigning based on assignment expression
21:05:22,844 DEBUG [ExpressionAssignmentHandler] resolving first term 'group(dummy)'
21:05:22,844 INFO [STDOUT] Hibernate: select hibernate_sequence.nextval from dual
21:05:22,844 INFO [STDOUT] Hibernate: select group0_.ID_ as ID1_, group0_.NAME_ as NAME3_2_, group0_.TYPE_ as TYPE4_2_ from JBPM_ID_GROUP group0_ where group0_.NAME_=?
21:05:22,876 DEBUG [ExpressionAssignmentHandler] resolving next term 'member(teammember)'
21:05:22,876 INFO [STDOUT] Hibernate: select membership0_.GROUP_ as GROUP6___, membership0_.ID_ as ID1___, membership0_.ID_ as ID1_0_, membership0_.NAME_ as NAME3_3_0_, membership0_.ROLE_ as ROLE4_3_0_, membership0_.USER_ as USER5_3_0_, membership0_.GROUP_ as GROUP6_3_0_ from JBPM_ID_MEMBERSHIP membership0_ where membership0_.GROUP_=?
21:05:22,876 INFO [STDOUT] Hibernate: select user0_.ID_ as ID1_0_, user0_.NAME_ as NAME3_0_0_, user0_.EMAIL_ as EMAIL4_0_0_, user0_.PASSWORD_ as PASSWORD5_0_0_ from JBPM_ID_USER user0_ where user0_.ID_=?
21:05:22,876 DEBUG [GraphElement] event 'task-assign' on 'Task(tmp1swimlanetest-2-state-2)' for 'Token(/)'
21:05:22,876 INFO [STDOUT] Hibernate: select events0_.TASK_ as TASK8___, events0_.ID_ as ID1___, events0_.EVENTTYPE_ as EVENTTYPE2___, events0_.ID_ as ID1_0_, events0_.EVENTTYPE_ as EVENTTYPE2_7_0_, events0_.TYPE_ as TYPE3_7_0_, events0_.GRAPHELEMENT_ as GRAPHELE4_7_0_ from JBPM_EVENT events0_ where events0_.TASK_=?
21:05:22,891 INFO [STDOUT] *******Finished Swimlanetest2AH1*********
21:05:22,891 DEBUG [GraphElement] event 'task-create' on 'Task(tmp1swimlanetest-2-state-2)' for 'Token(/)'
21:05:22,891 DEBUG [GraphElement] event 'after-signal' on 'StartState(tmp1swimlanetest-2-state-1)' for 'Token(/)'
21:05:22,891 DEBUG [TaskBean] assignmentlogs: [task-assign[siddarth,org.jbpm.taskmgmt.exe.TaskInstance@3bf9ff]]
21:05:22,891 INFO [STDOUT] [Debug] msg
21:05:22,891 INFO [STDOUT] Hibernate: select hibernate_sequence.nextval from dual
21:05:22,891 INFO [STDOUT] Hibernate: select hibernate_sequence.nextval from dual
21:05:22,891 INFO [STDOUT] Hibernate: select hibernate_sequence.nextval from dual
21:05:22,891 INFO [STDOUT] Hibernate: select hibernate_sequence.nextval from dual
21:05:22,907 INFO [STDOUT] Hibernate: select hibernate_sequence.nextval from dual
21:05:22,907 DEBUG [PersistenceContext] committing transaction
21:05:22,907 INFO [STDOUT] Hibernate: insert into JBPM_VARIABLEINSTANCE (NAME_, CONVERTER_, TOKEN_, TOKENVARIABLEMAP_, PROCESSINSTANCE_, STRINGVALUE_, CLASS_, ID_) values (?, ?, ?, ?, ?, ?, 'S', ?)
Expected Result:: Task will be assigned to all the users whose role is teammember
Question:: Why task is not assigned to another user, praveen but only got assigned to siddarth.
---------------------
Please clarify my problems. Is there any link where detailed in-depth examples are given for assignment handlers.
Thanks in advance,