activiti

https://www.jianshu.com/p/aadbfd0e37b0

https://blog.csdn.net/whatlookingfor/article/details/52958668

https://www.jianshu.com/p/8f8b4de761ab?appinstall=0

英文文档

https://www.activiti.org/javadocs/index.html

插件

actibpm 

用于绘制工作流文件bpmn

idea自带的Diagram

需要开启UML,    JBOSSJBPM      

并且将bpmn文件改为xml 形成png图片,然后改回至bpmn

插件乱码file encodings全部改为utf8

vmoptions文件最后加上

-Dfile.encoding=UTF-8

---------------------------------------------------------------------------------------------------------------------------------

总流程

概念,流程,流程实例,任务

流程也就是bpmn模板,一个流程对应多个流程实例,流程实例也就是流程以参数形式存放打数据库,一种直观数据体现形式,任务是流程实例启动后的状态,有开始,正在进行,结束,正在进行分为多个步骤

repositoryService.createDeployment() 

 部署,分三步

act_ge_bytearray  流程文件bpmn,png以二进制形式存储   与act_re_deployment  通过DEPLOYMENT_ID_关联

act_re_deployment 流程名称信息

act_re_procdef   流程实例  复合型id,名字为流程图设定的name  key为流程图写的id,用于标识不同的记录  RESOURCE_NAME_存放bpmn文件的目录和名字
DGRM_RESOURCE_NAME_用于存放png文件的目录和名字   与act_re_deployment  通过DEPLOYMENT_ID_关联

runtimeService.startProcessInstanceById(actBusiness.getProcDefId(), actBusiness.getId(), actBusiness.getParams())

启动流程,启动后会产生3种id  流程定义id 流程实例id  当前活动id,流程启动后参与者可以查看自己所在多个任务中的代办任务

TaskQuery query = taskService.createTaskQuery().taskCandidateOrAssigned(userId);

查询任务中的代办任务

act_ru_task  任务表    act_ru_task.PROC_DEF_ID_与act_re_procdef.id关联

taskService.complete(id);

审批通过

过程:
act_hi_taskinst  历史存储开始任务,通过任务,结束任务
act_hi_actinst   历史存储开始任务,通过任务,结束任务与流程实例挂钩
act_hi_identitylink  历史任务的参与者 与任务和与流程实例挂钩
act_ru_task  当前正在执行的任务,如果已结束,从这张表删除
act_ru_identitylink  正在执行的任务参与者

---------------------------------------------------------------------------------------------------------------------------------

 部署模板的时候可以打包成zip而不用原生的bpmn或者png,因为多的时候一个一个传太慢了
打包的zip在部署的时候,activiti会自动对zip文件进行解压,分别存储为bpmn和png存到act_ge_bytearray源文件,act_re_deployment流程名称,

act_re_procdef流程实例


查询流程的定义List<ProcessDefinition> list = repositoryService.createProcessDefinitionQuery().deploymentId(deployment.getId()).list();

 当前流程未完成,如果想删除得要级联删除
 repositoryService.deleteDeployment(actProcess.getDeploymentId(), true);
 actProcessService.delete(id);
查询历史
historyService.createHistoricTaskInstanceQuery().or().taskCandidateUser(userId).

BusinessKey业务关联id 在创建流程实例的时候将BusinessKey放到流程实例表里面 存放到act_ru_execution这张表里面

分配任务负责人分为固定分配,表达式分配${},监听器分配

如果采用UEL表达式就会将审批人存储到act_ru_variable的name和text中

流程变量,用于控制流程分支走向  taskService.setVariable

组任务,设定多个负责人  candidate-users  任务候选人要拾取任务变为自己的任务  归还任务就是把任务负责人设置为null


排他网关也可以确定流程分支走向,它与连线的区别是,如果不满足条件,连线会直接结束,而排他网关会抛出异常,异常结束,从而知道这个位置

有问题,如果几个节点都满足条件,走id最小的那个节点

并行网关不会解析条件,如果有条件会忽略,直接走连线的所有节点,并行网关需要所有节点全部完成了才会继续往下走

包含网关是排他和并行网关的结合体

原文地址:https://www.cnblogs.com/yeg0zj/p/14612623.html