[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