Activiti工作流学习笔记


启动流程到完成所有任务之间的数据库变化(简略版)

(1)部署后:

act_re_deployment表中会有一条部署记录,记录这次部署的基本信息。

act_ge_bytearray表中有两条记录,记录的是本次上传的bpmn文件和对应的图片文件,与act_re_deployment表的外键关联。

act_re_procdef表中有一条记录,记录的是该bpmn文件包含的基本信息,与act_re_deployment表外键关联。

(2)启动流程后:

act_ru_execution表中插入一条记录,记录流程定义的执行实例,与流程定义的id外键关联。

act_ru_task插入一条记录,记录的是第一个任务的信息,也就是开始执行第一个任务。与act_ru_execution表(执行表)execution_id(流程执行id)和proc_inst_id(流程实例id)关联。

act_hi_procinst表插入一条记录,记录本次执行实例的历史记录。

act_hi_taskinst表插入一条记录,记录本次执行任务的历史记录。

(3)任务节点完成后:

act_ru_variable表中插入变量信息,包含本次流程的执行(execution)、实例(procinst)两个id外键(注意:taskService.setVariable和taskService.setVariableLocal方法的区别:前者设置的是全局变量,整个流程都可以用,后者在任务节点完成后相关变量就会删除)

act_ru_task表中原来的任务节点记录被删除,插入新的节点记录。

act_ru_execution表中的记录并没有删除,而是将正在执行的任务变成新的用户任务。

act_hi_varinst和act_hi_taskinst插入历史记录。

(4)流程完成后:

act_ru_task、act_ru_execution、act_ru_variable表全被清空

什么是会签?

在流程业务管理中,任务通常是由一个人去处理的,而多个人同时处理一个任务,称之为会签任务。

会签的种类?

(1) 按数量通过:达到一定数量的通过表决后,会签通过。

(2) 按比例通过:达到一定比例的通过表决后,会签通过。

(3) 一票否决:只要有一个表决是否定的,会签否决。

(4) 一票通过:只要有一个表决通过的,会签通过。

Activiti实现会签?

Activiti实现会签是基于多实例任务,将节点设置成多实例,主要通过在UserTask节点的属性上配置。

UserTask节点属性

Multil instance:(多实例)有以下几个属性

Sequential:执行顺序,必选项。true:多实例顺序执行。false:多实例并行。

loop cardinality:循环基数(实例数量),可选项。可填整数,表示会签的人数。

Collection:集合,可选项。会签人数的集合list,与loop cardinality二选一。

Element variable:元素变量。选择Collection时必选,为collection集合每次遍历的元素。

Completion condition:完成条件,可选项。

会签环节中设计的几个默认流程变量

(1) nrOfInstances(numberOfInstances):会签中总共的实例数
(2) nrOfCompletedInstances:已经完成的实例数量
(3) nrOfActiviteInstances:当前还没有完成的实例数量

Completion condition,完成条件表达式 

${nrOfInstances == nrOfCompletedInstances} 表示所有人员审批完成后会签结束。

${ nrOfCompletedInstances == 1}表示一个人完成审批,该会签就结束。

Activiti会签有个特性,比如设置一个人完成后会签结束,那么其他人的代办任务都会消失。

任务监听:为了更好的实现会签可以结合监听功能处理,非必选项。

监听种类:

Java class,其他不说

监听的触发条件:

(1) create:任务创建的时候触发监听

(2) Assignment:设置受理人的时候触发监听

(3) Complete:任务完成的时候触发监听(每个受理人完成时都会触发)

(4) All:以上三种事件都会触发监听

监听实现:

监听的类需要实现TaskListener接口,重写notify方法

添加监听

会签人员完成任务后(Complete),需要统计该任务的审批结果,判断最终该会签是通过还是拒绝

Activiti串行和并行的区别:

并行:审批人同时收到任务,可以同时处理,不受各自的影响。

串行:一人完成后再由另一个人处理,每个任务依赖于上一个任务完成。

读取bpmn.xml文件获取BpmnModel对象的方法:

(1)InputStream读取xml文件字节流:常用两种方式:1.FileInputStream(new File())2.ByteArrayInputStream(Byte[]);

(2)创建XMLStreamReader对象:

通过XMLInputFactory对象创建:XMLInputFactory.newInstance().createXMLStreamReader(InputStream);

(3)创建BpmnModel对象:

通过BpmnXMLConverter对象:new BpmnXMLConverter.converterToBpmnModel(XMLStreamReader);

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值