zl程序教程

您现在的位置是:首页 >  其它

当前栏目

jbpm5.1介绍(8)

介绍
2023-09-14 08:57:57 时间
        KnowledgeBase kbase = createKnowledgeBase("BPMN2-InclusiveSplitDefault.bpmn2");

Loading process BPMN2-EventBasedSplit3.bpmn2
Executing work item WorkItem 1 [name=Email1, state=0, processInstanceId=1, parameters{}]
Executing Yes
x=YesValue
Executing work item WorkItem 2 [name=Email2, state=0, processInstanceId=1, parameters{}]
Executing work item WorkItem 3 [name=Email1, state=0, processInstanceId=2, parameters{}]
Executing Condition
x=null
Executing work item WorkItem 4 [name=Email2, state=0, processInstanceId=2, parameters{}]

可以看到当流程执行到inset(jack)时触发下面的流程

其中用到了接口

public interface WorkingMemoryEntryPoint

程序可以指定在什么时候切入,进入切入点后就会进行流程判断,如果满足条件,就会如上示例,执行Condition节点并向下执行

 

Junit测试传入条件事件

这个示例是判断传入条件的事件,根据传入的条件触发不同的事件执行,看一下流程

根据传入的条件判断

下面是测试代码,先传入执行上面的流程,然后再执行下面的流程


Loading process BPMN2-EventBasedSplit5.bpmn2
Executing work item WorkItem 1 [name=Email1, state=0, processInstanceId=1, parameters{}]
Executing Yes
x=YesValue
Executing work item WorkItem 4 [name=Email2, state=0, processInstanceId=1, parameters{}]
Executing work item WorkItem 5 [name=Email1, state=0, processInstanceId=2, parameters{}]
Executing No
x=NoValue
Executing work item WorkItem 8 [name=Email2, state=0, processInstanceId=2, parameters{}]

 

对BPMN2.0的流程结点的说明

1.任务(Task)

任务(Task)是一个流程(Process)中的关键原子级的活动。Task,是用来指代一个由人或计算设备来完成的活动,这些活动通过流程组合在一起而发挥效用。

2. Service Task

顾名思义, Service Task是通过服务(可以是Web服务,也可以是自动化程序)来完成的任务。Service Task有三个重要的属性:

InMessage - 只有一个输入消息,虽然可以有多个输入的消息流,但是对于Service Task的每一个实例,都只能有一个消息流(Message Flow)能够设置当前的输入消息,另外有一点要注意,就是一个Service Task要能够接收消息,必须先定义相应的InputSet【注:这里的InputSet规则尚不详尽,会在以后进行更正】。 OutMessage  - 只有一个输出消息,当有多个输出流(Message Flow)时,在当前Task实例完成时,会向所有的输出流发送消息。 Implementation - 表示实现当前这个服务的实现技术,默认为Web Service,即通常为使用Web Service来完成输入消息的接收,并负责返回输出消息。 总结:输入多选一,输出全包揽。 3. Receive Task

Receive Task是用来等待外部Participant消息的任务,一旦接收到外部消息该任务就标记为完成状态,很多时候,一个流程都会以一个Receive Task作为开始,通过接收一条外部消息来启动流程,它可以看做是一种特殊的Service Task,它只允许接收消息,而不允许发送消息,Receive Task有两条重要属性:

InMessage - 在规范中为Message,用来指代输入消息,当有多个输入流时,只要有一流到达,当前实例任务即完成。 Implementation - 同Service Task,指定接收的当前消息的实现体,如一个Web Service。 4. Send Task

Send Task是一个用来向外部Participant发送消息的任务,一旦消息发送出去,该任务就完成了。同Receive Task类似,该任务,只能发送消息,并有一个实现体,如Web Service来负责发送该消息。

5. 其他Task

除了上面三个重要的Task类型,在BPMN中还有:

User Task - 需要人在计算机的帮助下完成的任务,但UserTask的属性都与Web Service相同,两者的区别在于此处的UserTask并不意图直接由Web Serivce等来执行,而是类似文档性地指出人是在什么的帮助下完成任务的,如果使用引擎执行这里,这里还有尚待解决的新问题。 Script Task - 通过引擎可识别的脚本语言来进行自动化操作。 Manual Task - 纯人工任务,没有计算机的参与。 Reference Task - 相当于其他Task的引用。
安装JBpm 原文 http://www.cnblogs.com/default/archive/2012/02/28/2370673.html 自动安装(ant start.demo)太慢,所以手动安装。
jBPM 5 的点滴 发布地址 http://sourceforge.net/projects/jbpm/files/jBPM%205/  http://www.jboss.org/jbpm/documentation jBPM5引入了新的API、新的工具并支持BPMN 2.
jbpm5.1介绍(11) Jbpm-gwt-console源码编译 从svn下载,svn的下载地址是 http://anonsvn.jboss.org/repos/soag/bpm-console/tags/bpm-console-2.
jbpm5.1介绍(9) Junit测试调用子流程 下面的示例中测试在程序中调用其它程序的子流程的示例,需要加载两个配置文件 需要指定属性 下面是调用的示例程序 public void testCallActivity() throws Exception { System.
jbpm5.1介绍(10) Junit测试异常事件触发 下面的示例中测试在程序中触发异常事件的流程,流程如下 public void testTimerBoundaryEventInterrupting() throws Exception { KnowledgeBase kbase = crea...
jbpm5.1介绍(8) Junit测试或流程 下面的示例中使用的是或流程,看如下流程图 判断节点的值是大于0,大于10还是大于20 看测试程序 public void testInclusiveSplit() throws Exception { KnowledgeBase kbase = createKnowledgeBase( BPMN2-InclusiveSplit.