Difference between revisions of "Use of decision node"
From OpenKM Documentation
Line 7: | Line 7: | ||
Below we are going to create a process containing a decision node which implements the [http://docs.jboss.com/jbpm/v3.2/javadoc-jpdl/org/jbpm/graph/node/DecisionHandler.html DecisionHandler] interface to decide the next node in the workflow. | Below we are going to create a process containing a decision node which implements the [http://docs.jboss.com/jbpm/v3.2/javadoc-jpdl/org/jbpm/graph/node/DecisionHandler.html DecisionHandler] interface to decide the next node in the workflow. | ||
+ | [[File:Jbpm sample decision.png|center]] | ||
<source lang="java"> | <source lang="java"> |
Revision as of 20:20, 13 January 2012
A decision node is used to guide the process running path. This means you can tell the workflow which way should go. Decision criteria can be specified as follows:
- Adding conditions to transitions or BeanShell script which returns a boolean. Nodes go across its transitions examining the conditions until found the first one which match a criteria.
- Creating a class which implements the DecisionHandler interface. The decide method returns the transition to follow.
Below we are going to create a process containing a decision node which implements the DecisionHandler interface to decide the next node in the workflow.
public class ValorAction implements ActionHandler {
public String value;
@Override
public void execute(ExecutionContext executionContext) throws Exception {
executionContext.getContextInstance().setVariable("value", value);
}
}
public class MyDecision implements DecisionHandler {
public MyDecision(String info) {
super();
}
@Override
public String decide(ExecutionContext executionContext) throws Exception {
String value = (String)executionContext.getContextInstance().getVariable("value");
if(valor != null) {
return "trans_1";
} else {
return "trans_2";
}
}
}
public class ShowMessageAction implements ActionHandler {
public ShowMessageAction(String info) {
super();
}
@Override
public void execute(ExecutionContext executionContext) throws Exception {
System.out.println("Flow go to node: " + executionContext.getNode().getName());
}
}
If in the configuration you have set the "value" variable in the console you will see a message saying that has finished in node "end_1". In the other side, will end in node "end_2".