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. Spark Streaming事务处理彻底掌握

    本篇文章主要从二个方面展开: 一.Exactly Once 二.输出不重复 事务: 银行转帐为例,A用户转账给B用户,B用户可能收到多笔钱,如何保证事务的一致性,也就是说事务输出,能够输出且只会输出一 ...

  2. 【SDN】SDN相关资料--了解一下电信领域的SDN

    SDN相关资料 数据中心架构下ospf bgp如何选择及优缺点? - 数据中心 - 知乎 组播扩展OSPF_百度百科 carrier.huawei.com/cn/products/fixed-netw ...

  3. web中的水晶报表 "出现通信错误。将停止打印"

    被这个问题快折腾死,死活都找不到原因,找了一堆解答,无外乎这几种情况,但都不管用 在Page_Init中绑定数据.无效. activex控件的版本,我试过10.2.0.1146等多个版本的dll,10 ...

  4. 正则 js截取时间

    项目中要把时间截取,只要年月日,不要时分秒,于是 /\d{4}-\d{1,2}-\d{1,2}/g.exec("2012-6-18 00:00:00") 或者另一种 var dat ...

  5. 实现基于DNS的负载均衡

    转自:http://blog.sina.com.cn/s/blog_4e424e2101000c3g.html 如果你有一个很受欢迎的Web站点,你会发现当请求的连接数增加时,服务器的响应延时也会随之 ...

  6. Windows Server 2012 R2 或 2016 无法安装 .Net 3.5.1

    Windows Server 2012 R2 或 2016 无法安装 .Net 3.5.1 问题描述 使用 Windows Server 2012 R2 或 Windows Server 2016系统 ...

  7. spring源代码系列(一)sring源代码编译 spring源代码下载 spring源代码阅读

    想对spring框架进行深入的学习一下,看看源码,提升和沉淀下自己,工欲善其事必先利其器,还是先搭建好开发环境吧. 环境搭建 sping源代码之前是svn管理,如今已经迁移到了github中了.新版本 ...

  8. uva 11181 - Probability|Given(概率)

    题目链接:uva 11181 - Probability|Given 题目大意:有n个人去超市买东西,给出r,每个人买东西的概率是p[i],当有r个人买东西的时候,第i个人恰好买东西的概率. 解题思路 ...

  9. 二叉查找树实现实例(C语言)

    /* search_tree.h */ #ifndef _SEARCH_TREE_H #define _SEARCH_TREE_H struct tree_node; typedef struct t ...

  10. 1z0-052 q209_7

    7: In which of the scenarios will the DBA perform recovery? (Choose all that apply.) A.The alert log ...