[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