jBPM流程

本文概述

  • 什么是BPMN 2.0?
  • 流程创建
  • 使用图形BPMN2编辑器
  • 使用XML定义过程
借助BPMN可以轻松理解JBPM流程。
什么是BPMN 2.0? 它代表业务流程模型和表示法。
它基于OMG(对象管理组)规范。
它类似于流程图。
其主要目标是提供一种易于理解的符号, 该符号对于所有业务用户而言都是容易理解的, 即从业务分析人员到技术人员, 最后是管理和监视这些流程的业务用户。
它不仅定义了有关如何以图形方式表示业务流程的标准, 而且还包括执行所定义元素的语义以及用于存储流程定义的XML格式。
BPMN由使用顺序流相互连接的不同类型的节点组成。 BPMN由三种不同类型的节点组成。他们是:
  • 事件:开始事件, 结束事件和中间事件。
  • 活动:脚本任务, 用户任务, 服务任务, 业务规则任务等。
  • 网关:发散网关, 收敛网关
流程创建 可以使用三种方法创建流程:
  1. 使用图形BPMN2编辑器
  2. 使用XML定义流程
  3. 通过使用流程API直接创建流程。
使用图形BPMN2编辑器 BPMN2是一个Eclipse插件。它提供了一个编辑器, 使我们可以使用拖放选项来创建流程。使用拖放选项创建节点后, 我们可以编辑其属性。
要在jBPM项目中打开BPMN编辑器, 请右键单击要保留流程的目录, 然后选择“新建”, 然后单击文件, 提供文件名并以.bpmn扩展名保存。这将打开过程编辑器, 该编辑器显示在以下屏幕中。
jBPM流程

文章图片
在此编辑器中, 我们可以通过添加代表要在业务流程中指定的业务逻辑的节点来创建流程。
使用XML定义过程 我们还可以直接使用BPMN2.0 XML指定流程。这些XML流程的语法是使用BPMN2.0 XML模式定义定义的。流程XML文件由两部分组成:上部和下部。
上部具有不同节点及其属性的定义, 下部具有所有图形信息。流程XML仅包含一个元素。
【jBPM流程】示例:在这里, 我们创建一个包含开始事件, 打印“ Hello World”的脚本任务和结束事件的过程。
< ?xml version="1.0" encoding="UTF-8"?> < definitions id="Definition"targetNamespace="http://www.jboss.org/drools"typeLanguage="http://www.java.com/javaTypes"expressionLanguage="http://www.mvel.org/2.0"xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"Rule Taskxmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"xmlns:g="http://www.jboss.org/drools/flow/gpd"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.hello" name="Hello Process" > < !-- nodes --> < startEvent id="_1" name="Start" /> < scriptTask id="_2" name="Hello" > < script> System.out.println("Hello World"); < /script> < /scriptTask> < endEvent id="_3" name="End" > < 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="com.sample.hello" > < bpmndi:BPMNShape bpmnElement="_1" > < dc:Bounds x="16" y="16" width="48" height="48" /> < /bpmndi:BPMNShape> < bpmndi:BPMNShape bpmnElement="_2" > < dc:Bounds x="96" y="16" width="80" height="48" /> < /bpmndi:BPMNShape> < bpmndi:BPMNShape bpmnElement="_3" > < dc:Bounds x="208" y="16" width="48" height="48" /> < /bpmndi:BPMNShape> < bpmndi:BPMNEdge bpmnElement="_1-_2" > < di:waypoint x="40" y="40" /> < di:waypoint x="136" y="40" /> < /bpmndi:BPMNEdge> < bpmndi:BPMNEdge bpmnElement="_2-_3" > < di:waypoint x="136" y="40" /> < di:waypoint x="232" y="40" /> < /bpmndi:BPMNEdge> < /bpmndi:BPMNPlane> < /bpmndi:BPMNDiagram> < /definitions>

    推荐阅读