activity概述2-流程设计 、BPMN文件 和 一些扩展思路

目录

一、安装Activiti 的Eclipse Designer插件

二、设计流程

三、BPMN文件说明

四、总结


【原文地址:http://craft6.cn/detail/activiti_research_designer_element_bpmn.do

一、安装Activiti 的Eclipse Designer插件

Activiti基于Eclipse的设计器插件地址:https://www.activiti.org/designer/update/

Activiti设计器Eclipse插件.jpg

安装好后,就可以创建Activiti 设计图了:

二、设计流程

    在你的任意项目中,选择一个位置专门放置设计文件,然后创建Activiti Diagram。我设计了一个流程如下图:

流程图实例.jpg

     流程比较简单,我只是用来讲解Activit主要元素和BPMN文件使用,该图的业务简单说明。

     (至于设计器右侧的组件面板(Palette)我则不贴图了,读者在eclipse中打开bpmn文件后自然就会看到)

 

  • 采用了泳道,这样方便区分那些任务是属于那些角色的。
  1. 任务:可以是UserTask(人工任务)、ScriptTask(脚本任务,自动执行)、ServiceTask...等等。
  2. 角色:注意泳道对应的是角色。具体各个任务的执行人,一般在流程实例中根据业务情况来动态分配。
  • 有起始和结束节点
  1. 起始节点只有一个。
  2. 结束节点可以有多个。
  • 网关。常用的有三种,现在增加了事件网关。
  1. 排他网关exclusiveGateway:即上图的第一个网关。即有多个分支,按条件选择一个分支(必须有一个符合条件)。
  2. 并行网关parallelGateway :即上图的第二和第三个网关,注意要配对出现。即无条件的将流程分为多个分支。
  3. 包含网关inclusiveGateway :排他和并行网关的结合体。即流程存在N个分支,流程实例中根据条件选择 1~N个分支来执行。
  4. 基于事件网关eventBasedGateway :即到该网关流程会暂停,等待外部事件的通知。一般会在其中一个分支中增加定时器,用于超时未接收到事件,流程从该定时器分支继续往下执行。

  其它具体元素和实际使用,在以后相应的文章中会探讨,本文只是简单说明一下。

三、BPMN文件说明

    设计好流程后,这些内容都会被保存到后缀为bpmn的设计文件中,它其实就是一个xml文件。

    用文本或者xml编辑器打开该文件,主要看process下面的内容。

    由于本流程设计用到了泳道,所以会有一段泳道的代码,但是该段代码不影响流程的业务流转,所以我将其折叠起来。

    bpmn文件的xml内容.jpg

 

  1. process 的 id:即流程定义的 ID,通过这个来查询、发布流程等。
  2. startEvent 开始节点,关键是设置一个Listener,这样我们就可以在流程启动的时候插入自己的业务了。比如可以在设置一段脚本,在StartEventListener中执行该脚本(Groovy技术)
  3. userTask 有三个阶段事件:create、assignment 和 complete。分别表示在节点任务创建、分配给执行人 和 执行完毕后所调用的Listener。
  4. 可以采用同样的方式允许在系统管理后台中,针对不同的阶段事件设置相应的脚本,然后在Listener执行。系统也可以有一些默认的业务,比如记录日志、发送消息等,在不同的Listener中触发执行。这三个Listener都是继承Activiti的AbstractTaskListener。网关。如图中的sequenceFlow sourceRef 表示 这个分支是来自哪个网关的。=500000]]> 这段代码最为重要,表示根据参数值判断选择哪个分支执行。total表示是流程变量,在该网关前面的节点设置,一般是从表单中获取,比如对应本业务就是录入一个认购资料的表单,在表单中有总价,将这个总价抽取出来作为流程变量,然后根据该变量控制分支流转。
  5. endEvent 结束节点,对应的是EndEventListener,该Listener自行开发,继承Activiti的AbstractExecutionListener。

 

四、总结

  1. 整个流程的设计在bpmn文件中可以达到完全的体现。甚至可以将所有的设置内容全部持久化到该设计文件中,这样设计、测试和运营的不同阶段便容易进行分离。
  2. 通过在activiti提供的不同事件的Listener侵入方式,可以很方便的扩展我们自己的业务
  3. 可以通过在Listener中执行配置的脚本(不同流程、节点配置业务相关脚本),
  4. 使用Groovy技术执行来扩展业务。
  5. 网关执行的判断条件是一个表达式,可以通过流程变量(或表单变量)来控制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值