[jboss-user] [JBoss jBPM] - Re: how to implement co-sign a task by several person?
aspider
do-not-reply at jboss.com
Wed Dec 3 20:32:11 EST 2008
sorry, the example as below.
to make the code clear for you , i post it again.
please help me to have a look, whats the problem.
especially in CosignTaskEndHandler.
Thanks a lot!
| <?xml version="1.0" encoding="UTF-8"?>
| <process-definition xmlns="urn:jbpm.org:jpdl-3.2" name="simple">
| <start-state name="start">
| <transition to="create">
| </transition>
| </start-state>
| <task-node name="create">
| <task name="createTask">
| <controller>
| <variable name="approvedName"></variable>
| </controller>
| <assignment class="com.sample.assignment.DealAssignment">
| </assignment>
| </task>
| <transition to="message"></transition>
| </task-node>
|
| <state name="message">
| <transition to="approval"></transition>
| </state>
|
| <task-node name="approval" create-tasks="false" signal="last-wait">
| <event type="node-enter">
| <action name="approvalAction" class="com.sample.action.CosignActionHandler">
| </action>
| </event>
| <event type="task-end">
| <action
| class="com.sample.action.CosignTaskEndHandler">
| </action>
| </event>
| <task name="approvalTask">
| </task>
| <transition to="write"></transition>
| </task-node>
|
| <node name="write">
| <action name="action" class="com.sample.action.MessageActionHandler">
| <message>About to finish!</message>
| </action>
| <transition to="end"></transition>
| </node>
|
|
| <end-state name="end"></end-state>
| </process-definition>
|
CosignActionHandler.java
| public class CosignActionHandler implements ActionHandler {
|
| private static final long serialVersionUID = 1L;
| private static final Log log = LogFactory.getLog(CosignActionHandler.class);
|
| public void execute(ExecutionContext context) throws Exception {
|
| List approveNameList = (List)context.getVariable("approvedName");
| log.info(approveNameList.size());
| Token token = context.getToken();
| TaskMgmtInstance tmi = context.getTaskMgmtInstance();
| TaskNode taskNode = (TaskNode) context.getNode();
| Task task = taskNode.getTask("approvalTask");
| for(int i=0; i<approveNameList.size(); i++){
| String appName = (String)approveNameList.get(i);
| tmi.createTaskInstance(task, token).setActorId(appName);
| log.info("appName:" + appName +" task created");
| }
|
| }
|
| }
|
CosignTaskEndHandler.java
| public class CosignTaskEndHandler implements ActionHandler {
|
| private static final long serialVersionUID = 1L;
| private static final Log log = LogFactory.getLog(CosignTaskEndHandler.class);
|
| public void execute(ExecutionContext context) throws Exception {
| boolean isDisapprove = true;
| log.info("isDisapprove:"+isDisapprove);
| if (isDisapprove) {
| TaskMgmtInstance tmi = context.getTaskMgmtInstance();
| TaskInstance ti = context.getTaskInstance();
| final String actorId = ti.getActorId();
| Collection c = tmi.getSignallingTasks(context);
|
| for (Iterator it = c.iterator(); it.hasNext();) {
| TaskInstance task = (TaskInstance) it.next();
| if (!(actorId.equals(task.getActorId())) && (!task.hasEnded())) {
| task.end("write");
| }
| }
| }
| }
| }
|
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4194193#4194193
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4194193
More information about the jboss-user
mailing list