[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:25:46 EST 2008


I have made a example.

Process Definition like this, i want to co-sign in 'approval' task node. And define 2 action in it.
The dynamic task creation is ok, but sth wrong with CosignTaskEndHandler

could you give advice?

<?xml version="1.0" encoding="UTF-8"?>

<process-definition xmlns="urn:jbpm.org:jpdl-3.2" name="simple">
	<start-state name="start">
			
			
	</start-state>

	<task-node name="create">
		
			
				
			
			
			
		
		
	</task-node>

	
		
	
	
	<task-node name="approval" create-tasks="false" signal="last-wait">
		
			
			
		
		  
                 
                   
           
			
		
		
	</task-node>
	
	
		
            About to finish!
         
         
	

	<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=4194192#4194192

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4194192



More information about the jboss-user mailing list