1 启动事件

每个流程总是以启动事件作为入口,启动事件在BPMN2.0 中以细线圆圈表示。分为三种类型

  • 空启动事件
  • 定时启动事件
  • 异常启动事件
  • 消息启动事件

启动事件都是等待第三方触发才可以启动。

定时启动事件用于定期循环流程或一次性流程。定时事件是使用 <timerEventDefinition> 描述一个定时事件

异常启动事件:是在另外一个流程抛出异常结束事件时被触发,异常启动事件是“捕获型”,异常结束事件是“抛出型”。异常结束事件对应throw,异常启动事件是catch,并且执行catch 后获取不同类型的异常。异常启动事件必须要嵌套在事件子流程中。

消息启动事件:可以通过一个消息名称触发,从而启动一个流程实例。可以和消息抛出事件一块使用,由流程自动根据消息名称启动对应的流程。借助这个功能在实际应用中可以为不同的业务处理结果启动不同的流程。

2 结束事件,BPMN2.0 中以加粗的圆圈表示,结束事件是抛出型的。

结束事件可以分为以下3种类型

  • 空结束事件
  • 异常结束事件
  • 终止结束事件
  • 取消结束事件

空结束事件,正常结束后流程引擎就不会再执行其他操作了,没有其他后续处理。一般用于正常结束流程。如果需要处理异常就需要异常结束事件或边界事件处理。

异常结束事件,是有抛出结果的,他定义了需要抛出的错误代码,如果找到了异常开始事件定义的异常代码,则会触发异常开始事件,否则按照空结束事件规则处理。

说明:异常结束事件的错误代码不能为空。

终止结束事件,可以终止一个流程实例的执行,空结束事件结束的是一条输出流,而终止结束事件结束的是整个流程实例。

取消结束事件,可以取消一个事务子流程,同时也只能在子流程中使用。取消结束事件可以和取消边界事件结合使用针对取消操作做后续处理。

3 顺序流,是两个模型之间的连接者。BPMN2.0 默认顺序流是并行的,多个输出顺序流会创建多条独立、并行的执行路径。

顺序流可以分为两种,使用sequenceFlow 表示顺序流,

  • 标准顺序流
  • 条件顺序流

  3.1 标准顺序流,使用 sourceRef 属性指定顺序流的源, 使用 targetRef 指定顺序流的目的模型。

  3.2 条件顺序流,在标准顺序流上添加条件表达式,只有满足条件才能通过顺序流达到目标活动。在不设置条件顺序流就是标准顺序流,设置条件的就是条件顺序流。

4 任务,任务分类如下

4.1 用户任务,需要有人来参与,因为他必须人为触发。可以设置任务名称、优先级、到期日和任务处理人

activiti 在 BPMN2.0 基础上进行扩展,简化设置用户、组的方式,而且支持运行时获取用户、组分配给用户任务。还可以为用户任务添加任务监听,监听选项有创建、分配、完成。扩展属性如下

4.2 脚本任务,可以运行引擎依赖语言之外的脚本语言,例如 Groovy,javascript,juel。

4.3 java Service,不属于BPMN2.0 规范,是activiti 扩展的专门用于java语言的 serviceTask,允许定义一个实现了指定接口的 java 类或者执行一个表达式。

4.4 web service,可以调用外部的 Web Service 资源,只需要一些必须的配置即可。支持标准的 Web Service 和 REST 风格的 Service,

4.6 邮件任务,可以通过activiti发送邮件,其中的邮件信息通过变量方式传递。由 activiti 扩展专门处理邮件任务。

发送邮件需要配置邮件服务器信息到流程引擎中,可以在 activiti.cfg.xml 定义的引擎属性中设置。

4.7 Camel 任务是用来解决消息路由的框架

4.8 手动任务,他不做任何事情,仅用来定义 BPM 不能完成的任务。

4.9 接受任务,任务创建之后等待消息的到来,直到被触发才会完成任务。仅能通过 RuntimeService 接口的 signal(),方法发送信号触发接受任务,原理类似现成的等待和恢复。

5 网关,用于控制流程走向(BPMN2.0 中称为执行令牌),可以分为4种网关

  • 排他网关
  • 并行网关
  • 包容网关
  • 事件网关

5.1 排他网关 (Exclusive gateway 也称为 XOR gateway),流程执行到该网关时,按照输出流的顺序逐个计算,当条件的计算结果为true时,继续执行当前网关的输出流。

如果多条线路计算结果都是 true,则会执行第一个值为 true 的线路。如果所有网关计算结果没有true,则引擎会抛出异常。

排他网关需要和条件顺序流结合使用,default 属性指定默认顺序流,当所有的条件不满足时会执行默认顺序流。

5.2 并行网关(Parallel Gateway),能把单条线路任务拆分成多个路径并行执行或将多条线路合并。

  • 拆分,并行执行所有输出顺序流,为每一条顺序流创建一个并行执行线路。
  • 合并,所有从并行网关拆分并执行完成的线路均在此等候,直到所有的线路都执行完成才继续向下执行。

5.3 包容网关(inclusivegateway),可以同时执行多条线路,也可以在网关上设置条件。

  • 拆分,计算每条线路上的表达式,当表达式计算结果为true时,创建一个并行线路并继续执行。
  • 合并,所有从并行网关拆分并执行完成的线路均在此等候,直到所有的线路都执行完成才继续向下执行。

5.4 事件网关(EventGateway),专门为中间捕获事件设置的,允许设置多个输出流指向多个不同的中间捕获事件。当流程执行到事件网关后,流程处于等待状态,需要等待抛出事件才能将等待状态转换为活动状态。

说明:

1)事件网关的输出流数量必须大于2个

2)输出流类型只能是中间捕获事件,activiti 不支持接受任务后面的事件网关

3)中间捕获事件的输出流只能有一个

6 子流程和调用活动,子流程是嵌入在主流程中,调用活动是有子流程的特性又保持通用。

说明:

子流程的限制

1)只能且仅能包含一个空启动事件

2)至少要有一个结束事件

3)子流程中顺序流不能直接设置输出流到子流程之外的活动上,如果需要可以通过边界事件代替。

6.2 调用活动和子流程的作用一致,通过创建一个调用活动模型并指定外部流程的 ID 方式作为主流程的一个子活动。

6.3 事件子流程:和子流程类似,不同的是事件子流程不能直接启动,需要有相应事件触发启动。

6.4 事务子流程:处理一组必须在同一个事务中完成的活动,这些活动要么一块完成,要么一起失败。

7 边界与中间事件,中间事件提供的特殊功能可以处理流程执行过程中抛出、捕获的事件。有边界事件、中间捕获事件、中间抛出事件。

7.1 边界事件:是绑定在活动上的“捕获型”事件,会一直监听所有处于运行中活动的某种事件的触发,在捕获到事件之后中断活动,然后从边界事件类型的输出流继续运行。

一旦触发边界事件,当前的活动就会被中断,按照边界事件之后的输出流执行。一个活动只能绑定一个边界事件。

BPMN2.0 规范的更多相关文章

  1. activiti5/6 系列之--Activiti与BPMN2.0规范相关节点对应关系

    根据BPMN2.0规范的分类划分为以下部分: 1.启动与结束事件(event) 2.顺序流(Sequence Flow) 3.任务(Task) 4.网关(Gateway) 5.子流程(Subproce ...

  2. Activiti工作流与BPMN2.0规范

    本章内容根据BPMN2.0规范的分类划分为以下部分: 1.启动与结束事件(event) 2.顺序流(Sequence Flow) 3.任务(Task) 4.网关(Gateway) 5.子流程(Subp ...

  3. BPMN2新规范与Activiti5

    上世纪九十年代以后,随着WfMC联盟的成立,BPM市场群雄逐鹿如火如荼,工作流技术得到了突飞猛进的发展,其中IBM.Oracle等大型软件厂商在工作流领域各扯大旗割据一方.2011年BPMN2.0新规 ...

  4. Flowable实战(四)BPMN2.0 启动与结束事件

    一.BPMN2.0   BPMN2.0规范是一个标准,开源框架和不同供应商都遵循这份标准,使得最终用户不会因为依赖专有解决方案,而被供应商"绑架".有了BPMN2.0标准,不同解决 ...

  5. Flowable实战(八)BPMN2.0 任务

      任务是流程中最重要的组成部分.Flowable提供了多种任务类型,以满足实际需求.   常用任务类型有: 用户任务 Java Service任务 脚本任务 业务规则任务 执行监听器 任务监听器 多 ...

  6. Fixflow引擎解析(二)(模型) - BPMN2.0读写

    Fixflow引擎解析(四)(模型) - 通过EMF扩展BPMN2.0元素 Fixflow引擎解析(三)(模型) - 创建EMF模型来读写XML文件 Fixflow引擎解析(二)(模型) - BPMN ...

  7. BPMN 2.0规范

    .1. BPMN 2.0是什么呢? 业务流程模型注解(Business Process Modeling Notation - BPMN)是 业务流程模型的一种标准图形注解.这个标准 是由对象管理组( ...

  8. 【原创】流程引擎的网关(遵循BPMN2.0)设计总结

    概述 BPMN 2.0是什么呢?业务流程模型注解(Business Process Modeling Notation - BPMN)是 业务流程模型的一种标准图形注解.这个标准 是由对象管理组(Ob ...

  9. Fixflow引擎解析(四)(模型) - 通过EMF扩展BPMN2.0元素

    Fixflow引擎解析(四)(模型) - 通过EMF扩展BPMN2.0元素 Fixflow引擎解析(三)(模型) - 创建EMF模型来读写XML文件 Fixflow引擎解析(二)(模型) - BPMN ...

随机推荐

  1. 一次真实的蓝屏分析 ntkrnlmp.exe

    故事背景: 话说我一直都是远程公司的电脑,在我晚上11点敲代码敲得正爽的时候,被远程的主机挂掉了,毫无征兆的挂掉了,我特么还好有闲着没事就ctrl + s保存代码的习惯,要不然白敲了那么久,我以为是公 ...

  2. [Algorithm] Count Negative Integers in Row/Column-Wise Sorted Matrix

    // Code goes here function countNegative (M, n, m) { count = ; i = ; j = m - ; && i < n) ...

  3. php之快速入门学习-17(PHP 命名空间)

    PHP 命名空间(namespace) PHP 命名空间(namespace)是在PHP 5.3中加入的,如果你学过C#和Java,那命名空间就不算什么新事物. 不过在PHP当中还是有着相当重要的意义 ...

  4. 使用FlashPaper 实现JSP在线阅读[转]

    http://cuisuqiang.iteye.com/blog/1841452 使用FlashPaper 实现JSP在线阅读 FlashPaper 是Macromedia推出的一款电子文档类工具,通 ...

  5. The Web Sessions List

    The Web Sessions list contains the list of HTTP Requests that are sent by your computer. You can res ...

  6. BeautifulSoup的成员结构

    >>> dir(soup)['ASCII_SPACES', 'DEFAULT_BUILDER_FEATURES', 'HTML_FORMATTERS', 'ROOT_TAG_NAME ...

  7. lnmp环境的使用教程

    lnmp环境的使用 安装的软件都安装到了:/usr/local 管理nginx service nginx start|stop|restart|reload 管理mysql 直接执行mysql即可登 ...

  8. java面试第十一天

    多线程: 进程与线程: 进程:同一个操作系统中执行的一个子程序,包含了三部分虚拟CPU.代码.数据 多进程:同一个操作系统中执行的多个并行的子程序.可以提高cpu的使用率 线程:在同一个进程当中执行的 ...

  9. PHP $_POST

    $_POST 变量用于收集来自 method="post" 的表单中的值. $_POST 变量 $_POST 变量是一个数组,内容是由 HTTP POST 方法发送的变量名称和值. ...

  10. sed备忘

    sed 是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送 ...