[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