Currently (JIRA issue 288}, sub-tokens created as a result of a
.
... <join name='MY_JOIN' > <event type='node-leave' > <!-- workaround for http://jira.jboss.org/jira/browse/JBPM-288 --> <action name='endChildTokens' class='com.???.EndForkedTokensAH' ></action> </event> <transition to='NEXT_NODE' ></transition> </join> ...
...and the simple ActionHandler to do the work...
/*
* EndForkedTokensAH.java
*
* Ends each child token that is at the same node as the parent. Used to end
* child tokens after a join.
*/
package com.???;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jbpm.graph.def.ActionHandler;
import org.jbpm.graph.exe.ExecutionContext;
import org.jbpm.graph.exe.Token;
import org.jbpm.taskmgmt.exe.*;
import java.io.*;
import java.util.Properties;
import java.util.List;
import java.util.Collection;
import java.util.Iterator;
import java.util.Map;
/**
* @author brittm
*/
public class EndForkedTokensAH implements ActionHandler{
public static Log log = LogFactory.getLog(EndForkedTokensAH.class.getName());
/** Creates a new instance of EndForkedTokensAH */
public EndForkedTokensAH() {
}
/*Execute the action handler*/
public void execute(ExecutionContext executionContext){
try{
Token tok = executionContext.getToken();
log.debug(tok.getFullName() + " " + tok.getId());
log.debug("current node: " + tok.getNode().getName());
Map<?,Token> childtokens = (Map<?,Token>)tok.getActiveChildren();
log.debug("Active children: " + childtokens.size());
for(Token cht : childtokens.values()) {
log.debug(" ending " + cht.getFullName() + " " + cht.getId());
cht.end(false);
}
}catch(Exception e){
log.error(e.getMessage(), e);
}
}
}
Comments