[jboss-user] [jBPM] - problem with using constranits of split node
hong lu
do-not-reply at jboss.com
Tue Jan 10 04:13:37 EST 2012
hong lu [http://community.jboss.org/people/luhong] created the discussion
"problem with using constranits of split node"
To view the discussion, visit: http://community.jboss.org/message/645612#645612
--------------------------------------------------------------
Hi, I am newbie to jBPM and I am using JBPM5.2.
I want to program a split process and get exception messages:
Exception in thread "main" java.lang.IllegalArgumentException: XOR split could not find at least one valid outgoing connection for split null
at org.jbpm.workflow.instance.node.SplitInstance.internalTrigger(SplitInstance.java:98)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:122)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerConnection(NodeInstanceImpl.java:185)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:150)
at org.jbpm.workflow.instance.node.StartNodeInstance.triggerCompleted(StartNodeInstance.java:49)
at org.jbpm.workflow.instance.node.StartNodeInstance.internalTrigger(StartNodeInstance.java:41)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:122)
at org.jbpm.ruleflow.instance.RuleFlowProcessInstance.internalStart(RuleFlowProcessInstance.java:35)
at org.jbpm.process.instance.impl.ProcessInstanceImpl.start(ProcessInstanceImpl.java:188)
at org.jbpm.workflow.instance.impl.WorkflowProcessInstanceImpl.start(WorkflowProcessInstanceImpl.java:303)
at org.jbpm.process.instance.ProcessRuntimeImpl.startProcessInstance(ProcessRuntimeImpl.java:168)
at org.jbpm.process.instance.ProcessRuntimeImpl.startProcess(ProcessRuntimeImpl.java:138)
at org.jbpm.process.instance.ProcessRuntimeImpl.startProcess(ProcessRuntimeImpl.java:130)
at org.drools.common.AbstractWorkingMemory.startProcess(AbstractWorkingMemory.java:1074)
at org.drools.impl.StatefulKnowledgeSessionImpl.startProcess(StatefulKnowledgeSessionImpl.java:301)
at com.infy.workflow.MainTest.main(MainTest.java:111)
forgive me for my bad english.
Thanks very much.
the source as below:
public class MainTest {
public static void main(String[] args) {
RuleFlowProcess process = new RuleFlowProcess();
process.setId("com.infy.login");
process.setName("login process");
List<Variable> variables = new ArrayList<Variable>();
Variable variable = new Variable();
variable.setName("isLogin");
BooleanDataType isLogin = new BooleanDataType();
isLogin.writeValue(true);
variable.setType(isLogin);
variables.add(variable);
process.getVariableScope().setVariables(variables);
StartNode startNode = new StartNode();
startNode.setName("Start");
startNode.setId(1);
process.addNode(startNode);
Split splitNode = new Split(Split.TYPE_XOR);
splitNode.setId(2);
process.addNode(splitNode);
new ConnectionImpl(startNode, Node.CONNECTION_DEFAULT_TYPE, splitNode, Node.CONNECTION_DEFAULT_TYPE);
ActionNode actionNode = new ActionNode();
actionNode.setName("validUser");
DroolsAction action = new DroolsConsequenceAction("java", null);
action.setMetaData("Action", new Action() {
public void execute(ProcessContext context) throws Exception {
System.out.println("The user is an valid user.");
}
});
actionNode.setAction(action);
actionNode.setId(3);
process.addNode(actionNode);
Connection validFlow = new ConnectionImpl(splitNode, Node.CONNECTION_DEFAULT_TYPE, actionNode,
Node.CONNECTION_DEFAULT_TYPE);
Constraint validConstraint = new RuleConstraintEvaluator();
validConstraint.setDialect("java");
validConstraint.setType("code");
validConstraint.setConstraint("return false;");
splitNode.setConstraint(validFlow, validConstraint);
ActionNode actionNode2 = new ActionNode();
actionNode2.setName("validUser");
DroolsAction action2 = new DroolsConsequenceAction("java", null);
action2.setMetaData("Action", new Action() {
public void execute(ProcessContext context) throws Exception {
System.out.println("The user is an invalid user.");
}
});
actionNode2.setAction(action2);
actionNode2.setId(4);
process.addNode(actionNode2);
Connection invalidFlow = new ConnectionImpl(splitNode, Node.CONNECTION_DEFAULT_TYPE, actionNode2,
Node.CONNECTION_DEFAULT_TYPE);
Constraint invalidConstraint = new RuleConstraintEvaluator();
invalidConstraint.setDialect("java");
invalidConstraint.setType("code");
invalidConstraint.setConstraint("return true;");
splitNode.setConstraint(invalidFlow, invalidConstraint);
EndNode endNode = new EndNode();
endNode.setName("EndNode");
endNode.setId(5);
process.addNode(endNode);
new ConnectionImpl(actionNode, Node.CONNECTION_DEFAULT_TYPE, endNode, Node.CONNECTION_DEFAULT_TYPE);
EndNode endNode2 = new EndNode();
endNode2.setName("EndNode2");
endNode2.setId(6);
process.addNode(endNode2);
new ConnectionImpl(actionNode2, Node.CONNECTION_DEFAULT_TYPE, endNode2, Node.CONNECTION_DEFAULT_TYPE);
KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
AbstractRuleBase ruleBase = (AbstractRuleBase) ((InternalKnowledgeBase) kbase).getRuleBase();
ruleBase.addProcess(process);
StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
ProcessInstance processInstance = ksession.startProcess("com.infy.login");
}
}
--------------------------------------------------------------
Reply to this message by going to Community
[http://community.jboss.org/message/645612#645612]
Start a new discussion in jBPM at Community
[http://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2034]
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/jboss-user/attachments/20120110/54f0f502/attachment.html
More information about the jboss-user
mailing list