ACTIVITI 研究系列 —— 流程设计 、BPMN文件 和 一些扩展思路

2014-11-07 18:16:54

请关注唯心的个人微信公众号:craft6-cn(中划线,也可以搜索:领域驱动业务建模)

一、安装Activiti 的Eclipse Designer插件

Activiti基于Eclipse的设计器插件的置:http://activiti.org/designer/update/

Activiti设计器Eclipse插件.jpg

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

new.png

二、设计流程

    在你的任意项目中,选择一个位置专门放置设计文件,然后创建Activiti Diagram。

我设计了一个流程如下图:

流程图实例.jpg

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

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


  • 采用了泳道,这样方便区分那些任务是属于那些角色的。

    • 任务:可以是UserTask(人工任务)、ScriptTask(脚本任务,自动执行)、ServiceTask...等等。

    • 角色:注意泳道对应的是角色。具体各个任务的执行人,一般在流程实例中根据业务情况来动态分配。

  • 有起始 和 结束节点

    • 起始节点只有一个

    • 结束节点可以有多个。

  • 网关。常用的有三种,现在增加了事件网关。

    • 排他网关exclusiveGateway:即上图的第一个网关。即有多个分支,按条件选择一个分支(必须有一个符合条件)。

    • 并行网关parallelGateway :即上图的第二和第三个网关,注意要配对出现。即无条件的将流程分为多个分支。

    • 包含网关inclusiveGateway :排他和并行网关的结合体。即流程存在N个分支,流程实例中根据条件选择 1~N个分支来执行。

    • 基于事件网关eventBasedGateway :即到该网关流程会暂停,等待外部事件的通知。一般会在其中一个分支中增加定时器,
      用于超时未接收到事件,流程从该定时器分支继续往下执行。


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

三、BPMN文件说明

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

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

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

    bpmn文件的xml内容.jpg


  1. process 的 id:即流程定义的 ID,通过这个来查询、发布流程等。

  2. startEvent 开始节点,关键是设置一个Listener,这样我们就可以在流程启动的时候插入自己的业务了。
    比如可以在设置一段脚本,在StartEventListener中执行该脚本(Groovy技术)

  3. userTask 有三个阶段事件:create、assignment 和 complete。分别表示在节点任务创建、分配给执行人 和 执行完毕后所调用的Listener。

    可以采用同样的方式允许在系统管理后台中,针对不同的阶段事件设置相应的脚本,然后在Listener执行。
    系统也可以有一些默认的业务,比如记录日志、发送消息等,在不同的Listener中触发执行。
    这三个Listener都是继承Activiti的AbstractTaskListener。

  4. 网关。如图中的sequenceFlow
    sourceRef 表示 这个分支是来自哪个网关的。
    =500000]]>

    这段代码最为重要,表示根据参数值判断选择哪个分支执行。total表示是流程变量,在该网关前面的节点设置,
    一般是从表单中获取,比如对应本业务就是录入一个认购资料的表单,在表单中有总价,将这个总价抽取出来作为
    流程变量,然后根据该变量控制分支流转。

  5. endEvent 结束节点,对应的是EndEventListener,该Listener自行开发,继承Activiti的AbstractExecutionListener。


四、总结

  1. 整个流程的设计在bpmn文件中可以达到完全的体现。甚至可以将所有的设置内容

    全部持久化到该设计文件中,这样设计、测试和运营的不同阶段便容易进行分离。

  2. 通过在activiti提供的不同事件的Listener侵入方式,可以很方便的扩展我们自己的业务

  3. 可以通过在Listener中执行配置的脚本(不同流程、节点配置业务相关脚本),
    使用Groovy技术执行来扩展业务。

  4. 网关执行的判断条件是一个表达式,可以通过流程变量(或表单变量)来控制。


可通过扫描左侧二维码阅读本文。本站文章均为颜超敏原创,欢迎转载,请注明出处即可,转载可通过下面的社会化工具快速完成。

分享到:


ACTIVITI 研究系列 —— 流程设计 、BPMN文件 和 一些扩展思路

Activiti Eclipse Designer,Activiti 流程设计器,Activiti BPMN流程图元素,Activiti bpmn文件格式和说明,Activiti Bpmn文件扩展思路

本文讲述基于Activiti的Eclipse Designer设计流程图,简单说明了流程图的主要元素,

并讲解流程的bpmn xml 格式文件,阐述基于bpmn文件的一些扩展思路。

颜超敏,唯心六艺,Craft6.cn,电子商务博客,电子商务研发,电商研发,电子商务研究,电商研究,电子商务专家,电商专家,电子商务知识,电商知识,电子商务教程,电商教程,电子商务模式,电子商务平台,电子商务商业模式,电子商务数据库设计,电商数据库设计,电子商务系统分析,Java架构设计,Java软件架构,B2C,O2O,o2o模式,o2o电子商务,o2o电子商务平台,中国电子商务,电子商务平台建设方案
粤ICP备14060523号 Copyright @2014 -唯心六艺软件