标签:
第六章流程。
业务流程模型和符号(BPMN)2.0规范是OMG规范,不仅定义了一个标准的业务流程的图形化表述(如BPMN 1. x),但现在还包括执行语义定义的元素,和一个XML格式如何存储和共享过程定义。
jBPM6允许您执行过程使用BPMN 2.0定义的XML格式。这意味着您可以使用所有不同的jBPM6工具模型、执行、管理和监控业务流程使用BPMN 2.0格式指定可执行业务流程。实际上,完整的BPMN 2.0规范还包括细节如何表示编排和协作。不过关注jBPM项目规范的一部分,它可以用来指定可执行流程。
可执行流程在BPMN包含不同类型的节点相互连接使用序列流。BPMN 2.0规范定义了三种类型的节点:
事件:他们是用来模拟特定事件的发生。这可能是一个开始事件(即用于指示流程)的开始,结束事件(定义过程的结束,或的子流)和中间事件(表明事件的执行过程中可能发生的)。
活动:这些定义不同的操作需要执行的执行过程。不同类型任务的存在,这取决于类型的活动你正在试图创建模型(如人工任务、服务任务等)和活动也可以嵌套(使用不同类型的子流程)。
网关:可用于定义多个路径。根据类型的网关,这些可能表明并行执行,选择,等等。
jBPM6没有实现所有的BPMN 2.0规范中定义的元素和属性。我们所做的不过一个重要子集的支持,包括最常见的节点类型,可以使用内部可执行流程。这包括(几乎)所有的元素和属性的“共同执行”子类中定义BPMN 2.0规范,通过一些额外的元素和属性扩展我们相信在这种情况下是有价值的。元素和属性的完整支持下面可以找到,但它包含元素,如:
流对象
事件
启动事件(条件信号,没有任何消息,计时器)
结束事件(终止,没有错误,升级、信号信息,补偿)
中间捕捉事件(信号,定时器,条件,消息)
中间把事件(没有,信号、升级、消息、补偿)
Non-interrupting边界事件(升级、信号、定时器、条件、消息)
打断边界事件(升级、误差、信号、定时器、条件信息,补偿)
活动
脚本的任务
任务
服务任务
用户任务
业务规则任务
人工任务
发送任务
接受任务
可重用的子流程(呼叫活动)
嵌入式子流程
事件子流程
特别的子流程
数据对象
网关
不同
独家
包容
平行
基于事件的
融合
独家
包容
平行
车道
数据
Java类型的语言
流程属性
嵌入式子流程属性
活动属性
连接对象
序列流
例如,考虑下面的“Hello World”BPMN 2.0的过程,没有更多,写出一个“Hello World”过程开始时声明。
<?xml version="1.0" encoding="UTF-8"?>
<definitions id="Definition"
targetNamespace="http://www.example.org/MinimalExample"
typeLanguage="http://www.java.com/javaTypes"
expressionLanguage="http://www.mvel.org/2.0"
xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
xs:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"
xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI"
xmlns:dc="http://www.omg.org/spec/DD/20100524/DC"
xmlns:di="http://www.omg.org/spec/DD/20100524/DI"
xmlns:tns="http://www.jboss.org/drools">
<process processType="Private" isExecutable="true" id="com.sample.HelloWorld" name="Hello World" >
<!-- nodes -->
<startEvent id="_1" name="StartProcess" />
<scriptTask id="_2" name="Hello" >
<script>System.out.println("Hello World");</script>
</scriptTask>
<endEvent id="_3" name="EndProcess" >
<terminateEventDefinition/>
</endEvent>
<!-- connections -->
<sequenceFlow id="_1-_2" sourceRef="_1" targetRef="_2" />
<sequenceFlow id="_2-_3" sourceRef="_2" targetRef="_3" />
</process>
<bpmndi:BPMNDiagram>
<bpmndi:BPMNPlane bpmnElement="Minimal" >
<bpmndi:BPMNShape bpmnElement="_1" >
<dc:Bounds x="15" y="91" width="48" height="48" />
</