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. 如何利用SQL语句求日期的时间差值,并汇总网上的一些信息

    MySQL本身提供了 DATEDIFF 函数,用来计算时间差. 手册:http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.ht ...

  2. 跨站点脚本编制-XSS 描述及解决方法

    跨站点脚本编制可能是一个危险的安全性问题,在设计安全的基于 Web 的应用程序时应该考虑这一点.本文中,描述了这种问题的本质.它是如何起作用的,并概述了一些推荐的修正策略. 当今的大多数网站都对 We ...

  3. gravatar全球通用头像设定

    一:说明: gravatar的头像设定,可以用于wordpress,github等社区: 一次设定,全球同步显示: 目前gravatar已不支持注册,需要注册wordpress.com,然后登录: w ...

  4. ASP.NET之旅--深入浅出解读IIS架构

    在学习Asp.net时,发现大多数作者都是站在一个比较高的层次上讲解Asp.Net. 他们耐心. 细致地告诉你如何一步步拖放控件. 设置控件属性.编写 CodeBehind代码,以实现某个特定的功能. ...

  5. 在MyEclipse中设置jsp页面为默认utf-8编码(转)

    http://www.cnblogs.com/xdp-gacl/p/3496161.html 在MyEclispe中创建Jsp页面,Jsp页面的默认编码是“ISO-8859-1”,如下图所示: 在这种 ...

  6. How to set up OpenERP for various timezone kindly follow the following steps to select timezone in OpenERP

        How to set up OpenERP for different Time Zones Click on the "Edit Preferences" wheel a ...

  7. Debian GNU Linux服务列表的获取、服务的关闭/开启、服务在启动时是否自己主动执行的生效/失效

    /*********************************************************************  * Author  : Samson  * Date   ...

  8. Hystrix的一个坑,queue中的run方法没有被执行?

    今天学的时候随手测了一下Hystrix的queue的异步执行,发现执行queue之后,还没有打印run方法中的内容,程序就结束了: import com.netflix.hystrix.Hystrix ...

  9. spring cloud学习地址

    http://book.itmuch.com/1%20%E5%BE%AE%E6%9C%8D%E5%8A%A1%E7%AE%80%E4%BB%8B/1%20%E5%BE%AE%E6%9C%8D%E5%8 ...

  10. iOS-夜间模式(换肤设置)

    概述 iOS 开发中有时候会有夜间模式(换肤设置)的需求, 主要是更改相关颜色操作每次切换夜间/白天模式时,都会发出通知给所有ViewController,让它们切换到相应的主题. 详细 代码下载:h ...