Difference between revisions of "Use of decision node"
From OpenKM Documentation
Line 51: | Line 51: | ||
} | } | ||
</source> | </source> | ||
+ | |||
+ | 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". | ||
[[Category: Workflow Guide]] | [[Category: Workflow Guide]] |
Revision as of 20:15, 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".