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