BPMN 2.0介绍
定义流程
创建一个新的XML文件并为其命名,确保文件以.bpmn20.xml或.bpmn结尾,否则引擎将不会选择该文件进行部署。
BPMN 2.0模式的根元素是definitions元素,在此元素内,可以定义多个流程定义(尽管建议在每个文件中只有一个流程定义,因为这样可以简化开发流程的后期维护)。空的流程定义如下所示,请注意,最少definitions元素仅需要xmlns和targetNamespace声明,targetNamespace可以是任何东西,对于对流程定义进行分类很有用。
xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
xmlns:activiti="http://activiti.org/bpmn"
targetNamespace="Examples">
..
process元素具有两个属性:
id:此属性是必需的,并且映射到Activiti ProcessDefinition对象的key属性,然后,可以通过RuntimeService上的startProcessInstanceByKey方法,使用此id来启动流程定义的新流程实例,此方法将始终采用流程定义的最新部署版本。
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("myProcess");
这里要注意的重要一点是,这与调用startProcessInstanceById方法不同,此方法期望Activiti引擎在部署时生成的字符串id,可以通过调用processDefinition.getId()方法进行检索。生成的id的格式为key:version,并且长度限制为64个字符。如果你收到一个ActivitiException声明生成的ID太长,请限制该流程的键字段中的文本。
name:此属性是可选的,并且映射到ProcessDefinition的name属性,引擎本身不使用此属性,因此,例如,它可用于在用户界面中显示更人性化的名称。
入门:10分钟的教程
在本节中,我们将介绍一个(非常简单的)业务流程,我们将使用它介绍一些基本的Activiti概念和Activiti API。
前提条件
本教程假定你正在运行Activiti演示安装程序,并且你正在使用独立的H2服务器,编辑db.properties并设置jdbc.url=jdbc:h2:tcp://localhost/activiti,然后根据H2的文档运行独立服务器。
目标
本教程的目的是学习Activiti和一些基本的BPMN 2.0概念,最终结果将是一个简单的Java SE程序,该程序将部署流程定义,并通过Activiti引擎API与该流程进行交互。还将介绍Activiti周围的一些工具,当然,在围绕业务流程构建自己的Web应用程序时,也可以使用本教程中学习的内容。
用例
用例很简单:我们有一家公司,我们称之为BPMCorp。在BPMCorp中,每月需要为公司股东编写财务报告,这是会计部门的责任,报告完成后,高层管理人员之一需要批准该文件,然后再将其发送给所有股东。
流程图
可以使用Activiti Designer以图形方式显示上述业务流程,但是,在本教程中,我们将自己键入XML,因为我们在这一点上学到的最多,我们的流程的图形化BPMN 2.0表示法如下所示&#x