"2019最详细Activiti6.0之BPMN2.0规范"
BPMN2.0,全称为Business Process Model and Notation 2.0,是业务流程建模与表示的标准,它提供了一套精确的执行语义来描述各种流程元素的操作。这个规范的主要目的是通过图形化的方式,使业务流程能够被业务人员和IT专业人员共同理解,以XML为数据载体,便于流程的存储和交换。
在BPMN2.0中,主要包含三种核心流对象:
1. 活动(Activities):包括UserTask(用户任务)、ServiceTask(服务任务)以及其他任务类型,它们代表流程中的操作步骤。
2. 事件(Events):如StartEvent(开始事件)、EndEvent(结束事件)等,用于标识流程的起点、终点以及流程中的异常情况。
3. 网关(Gateways):如ExclusiveGateway(排他网关),用于控制流程分支和合并。
事件在BPMN2.0中有多种分类方式:
- 位置分类:开始事件、中间事件/边界事件和结束事件,分别表示流程的起始、流程中的触发事件和流程的终止。
- 特性分类:捕获事件(Catching)和抛出事件(Throwing),前者用于接收事件,后者用于发送事件。
- 定义分类:包括定时事件、错误事件、信号事件和消息事件,每种事件都有特定的含义和使用场景。
定时事件是事件的一种,可以设置为定时开始事件或定时边界事件,有三种定义方式:
- timeDate:指定具体日期时间触发。
- timeDuration:指定持续时间后触发。
- timeCycle:设置周期性执行的规则。
错误事件,如错误边界事件,用于处理流程中的异常情况,可以捕获并处理错误。信号事件则用于进程间的通信,可以作为开始事件或中间事件触发。消息事件则涉及消息的发送和接收,常用于不同流程实例之间的交互。
流程任务是BPMN2.0中的关键元素,其中:
- 用户任务(UserTask):代表需要人工参与的任务,可以配置代理人,通过任务监听器进行自定义配置。
- 脚本任务(ScriptTask):允许在流程中直接执行脚本,支持多种脚本语言如JUEL、Groovy和JavaScript,可以设置返回值,并有内置变量供使用。
- 服务任务(JavaServiceTask):执行Java代码,可以调用JavaDelegate或ActivityBehavior实现的类,或者直接执行表达式指向的Spring配置Bean方法。
通过理解和应用这些BPMN2.0的元素和概念,开发者可以构建出复杂且灵活的业务流程模型,以适应各种业务场景的需求。Activiti6.0是基于BPMN2.0的开源工作流引擎,提供了丰富的API和工具,便于开发者在实际项目中实施和管理业务流程。