Activiti 流 程 文 件 细 解
1
1、Process(该流程的基本数据,流程名字等) .................................. 3 1.1 Data Objects(插入一条可以公用的数据) ............................ 4 1.2 Listeners(执行监听器) .............................................................. 4 1.2.1 Java class ................................................................................ 5 1.2.2 Expression .............................................................................. 6 1.2.3 Delegate Expression .............................................................. 6 2、启动节点(每一个流程都有一个启动节点,此节点是流程进如的地方) ......................................................................................................... 7 2.1 General ............................................................................................ 7 2.1.1 Main config ......................................................................... 8 2.1.2 Documentation ..................................................................... 8 2.1.3 Form(表单) ............................................................................ 9 2.2 Listeners(执行监听器) ............................................................ 12 3 任务(流程中最重要的组成部分,根据业务的不同也分为很多种类型) ........................................................................................................... 13 3.1 User Task....................................................................................... 13 3.1.1 General ....................................................................................... 13 3.1.2 Main config .......................................................................... 14 3.1.3 Listeners(任务监听器) ................................................... 14 3.1.4 Multi instance(多实例)(*重要*) .............................. 15 4、 网关 ................................................................................................... 15
2
1、activiti工作流的基本介绍
1、Process(该流程的基本数据,流程名字等)
-----------------------------------------------------
-----------------------------------------------------
3
1.1 Data Objects(插入一条可以公用的数据)
-----------------------------------------------------
1.2 Listeners(执行监听器)
Java class ,Expression,Delegate expression 都有域,其中的值可以传给监听器
4
-----------------------------------------------------
-----------------------------------------------------
1.2.1 Java class
注意:class需要实现接口
org.activiti.engine.delegate.ExecutionListener
-----------------------------------------------------
5
定义一个表达式类似EL语法。这里的pojo是一个Bean的名称(可以用spring代理),还可以子expression中通过计算一个表达式配置监听器的名称
-----------------------------------------------------
-----------------------------------------------------
1.2.3 Delegate Expression
这里指定的是一个spring代理的业务bean,业务bean必须实现接口: org.activiti.engine.delegate.ExecutionListener
6
-----------------------------------------------------
-----------------------------------------------------
2、启动节点(每一个流程都有一个启动节点,此节点是流程进如的地方)
启动时间的三种类型:1.空启动事件 2.定时启动事件 3.邮件启动事件 4.异常启动事件
*注:其中第四个异常启动事件和另为3个又不相同
2.1 General
7
-----------------------------------------------------
-----------------------------------------------------
2.1.1 Main config
*注:
Initiator:可以用来记录启动流程人的id(也可以是用户的名称)启动流程之后次属性指定的变量就会自动设置当前人的名称 .
Form key:可以用来指定空启动事件关联表单
-----------------------------------------------------
----------------------------------------------------- 2.1.2 Documentation
8
-----------------------------------------------------
*注:Activiti的空启动事件和任务事件都是以表单的形式提交给流程引擎 作用 :
当我们要打开任务表单的时候可以重定向到任务表单,重定向的action如: formKey + \"?id=\" +objId + \"&taskId=\" +taskId;
objId为业务对象Id, taskid为任务id,
这样就可以在任务表单获取到想要的信息 一般使用的表单大概有三种:
1)、动态表单(在流程文件里定义)
9
-----------------------------------------------------
----------------------------------------------------- 2)、外置表单(在流程文件里定义) 10 这种方式常用于基于工作流平台开发的方式,代码写的很少,开发人员只 要把表单内容写好保存到.form文件中即可,然后配置每个节点需要的表单名称(form key),实际运行时通过引擎提供的API读取Task对应的form内容输出到页面。 此种方式对于在经常添加新流程的需求比较适用,可以快速发布新流程,把流程设计出来之后再设计表单之后两者关联就可以使用了。例如公司内部各种简单的审批流程,没有业务逻辑处理,仅仅是多级审批是否通过等等情况。 当流程需要一些特殊处理时可以借助Listener或者Delegate方式实现。 Activiti Explorer就是使用的这种方式,表单信息都配置在流程定义文件中。 ----------------------------------------------------- ----------------------------------------------------- 3)、普通表单(jsp,html,jsf文件里) 这个是最灵活的一种方式,常用于业务比较复杂的系统中,或者业务比较 固定不变的需求中,例如ERP系统。 普通表单的特点是把表单的内容存放在一个页面(jsp、jsf、html等)文件中,存放方式也有两种(一体式、分离式): 1.一体式:把整个流程涉及到的表单放在一个文件然后根据处理的任务名称匹配显示,demo的普通表单模式就是一体式的做法,把表单内容封装在一个div里面,div的ID以节点的名称命名,点击“办理”按钮时用对话框的方式把div的内容显示给用户。 2.分离式:对于非Ajax应用来说比较常用,每个任务对应一个页面文件,点击办理的时候根据任务的ID动态指定表单页面。 和以上两种方式比较有两点区别: 11 1. 表单:和第二种外置表单类似,但是表单的显示、表单字段值填充均由开发人员写代码实现。 2. 数据表:数据表单独设计而不是和前两种一样把数据以key、value形式保存在引擎表中。 ----------------------------------------------------- 2.2 Listeners(执行监听器) *注:这里的监听器和流程的执行监听器是一样的 12 3 任务(流程中最重要的组成部分,根据业务的不同也分为很多种类型) 3.1 User Task 3.1.1 General *注:与空启动事件相比General下多了两个属性 Asynchronous :是否异步(当流程执行到并行网关如上图,其后面有多个User Task节点时,是否异步执行这些任务节点) Exclusive : 是否独占(同一个流程实例在同一时刻只能执行一个任务) ----------------------------------------------------- 13 ----------------------------------------------------- 3.1.2 Main config ----------------------------------------------------- ----------------------------------------------------- 3.1.3 Listeners(任务监听器) 注:这里叫做任务监听器,和执行监听器大体相同,只是类实现的接口不同。 class需要实现接口org.activiti.engine.delegate.TaskListener 14 3.1.4 Multi instance(多实例)(*重要*) ----------------------------------------------------- ----------------------------------------------------- 4、 网关 15 -》--》General Default flow:默认线路 ----------------------------------------------------- ----------------------------------------------------- 16 因篇幅问题不能全部显示,请点此查看更多更全内容