jbpm5.4中的节点流转规则

felix_alone2012 2013-09-19

今天看了下JBPM5.4官方提供的例子发布包,研究了下,发现流程在流转的时候不一定在所有的节点间都用线连起来。在程序中可以控制流转到哪个节点上,(注意是流程不要流转到结束节点上就行了)。下面是一个例子:

 

    首先我们定义了一个流程

    task node1   

 task node2   

 task node3  →   结束

 

    注意了在流程定义文件中,看源码,我们一定要在流程节点上加一个   tns.adHoc="true"

 来表示流程文档所使用的规范

 

    然后就可以在程序里面控制流转了,注意这里注册了一个什么都不做的工作项:

 

   KnowledgeBase kbase = createKnowledgeBase("com/process/33.bpmn");

StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);

System.out.println(ksession);

ProcessInstance processInstance = ksession.startProcess("com.sample.bpmn");

System.out.println(processInstance.getId());

//        assertTrue(processInstance.getState() == ProcessInstance.STATE_ACTIVE);

//        ksession = restoreSession(ksession, true);

   ksession.getWorkItemManager().registerWorkItemHandler("", new DoNothingWorkItemHandler());

System.out.println("Triggering node");

ksession.signalEvent("t2", null, processInstance.getId());

 

ksession.signalEvent("t1", null, processInstance.getId());

 

ksession.signalEvent("t1", null, processInstance.getId());

ksession.signalEvent("t2", null, processInstance.getId());

ksession.signalEvent("t1", null, processInstance.getId());

ksession.signalEvent("t2", null, processInstance.getId());

 

最后打印输出:

 

    org.drools.impl.StatefulKnowledgeSessionImpl@13055ba

1

Triggering node

22222222

1111111

1111111

22222222

1111111

22222222

 

   

 

Global site tag (gtag.js) - Google Analytics