Activiti6.0 动态改变流程节点类型(普通-> 会签)

Activiti6.0 动态改变流程节点类型(普通-> 会签),第1张

业务需求 :将 测试节点 转换为 会签节点

实现思路:

中间表:用户保存被转换的流程以及被转换的节点

实现接口

继承接口

实现 抽象类 : comoldguyexamplemodulesworkflowserviceactivitiimplsAbstractMultiWorkFLowService

实现类:

测试例子

将 “测试节点” 普通 -> 会签

并行会签

串行会签

当前版本为activiti60,与之前版本区别

assignee:任务执行人,设置系统中的“登录名”(loginName)。

candidateUsers:任务执行人,可以填写多个。

candidateGroups:任务执行组,可以填写多个,设置系统中的“角色英文名(enname)”。

assignee和candidateUsers的区别是:assignee不需要签收任务,直接可执行任务;candidateUsers为竞争方式分配任务,被指定人待办中都有一条任务,谁先签收谁就获得任务的执行权。

taskServicesetAssignee(String taskId, String userId);

taskServiceclaim(String taskId, String userId);

taskServicesetOwner(String taskId, String userId);

关于上面三个方法的区别:

setAssignee和claim两个的区别是在认领任务时,claim会检查该任务是否已经被认领,如果被认领则会抛出ActivitiTaskAlreadyClaimedException 而setAssignee不会进行这样的检查。其他方面两个方法效果一致。

setOwner和setAssignee的区别在于

setOwner实在代理任务时使用,代表着任务的归属者,而这时,setAssignee代表的时代理办理者,

举个例子来说,公司总经理现在有个任务taskA,去核实一下本年度的财务报表,他现在又很忙没时间,于是将该任务委托给其助理进行办理,此时,就应该这么做:

taskServicesetOwner(taskAgetId(), 总经理getId());

taskServicesetAssignee/claim(taskAgetId(), 助理getId());

act_hi_taskinst表两个字段:

DELEGATION_和OWENER_

DELEGATION_值变化为PENDING,表示此任务为正在执行的委托任务;

DELEGATION_值变化为 RESOLVED,表示此任务为被解决的委托任务;

所以任务在被委托人执行时必须

taskServiceresolveTask(taskgetId(),taskVariables);//解决委托

taskServicecomplete(taskgetId(), taskVariables);//完成任务

否则容易报错A delegated task cannot be completed, but should be resolved instead

OWENR_字段设置用于查询委任人的委托任务

在执行taskServiceaddComment前,需要设置批注的所属人AuthenticationsetAuthenticatedUserId(userId);

在流程启动实例之前,设置启动者identityServicesetAuthenticatedUserId(userId);

然后流程设计模型可在流程开始节点设置变量,以供之后的环节使用

级联删除会把流程实例流程历史全部物理清空。

非级联删除,必须保证没有流程实例

二者虽然都能查询到任务实例。但是前者只能查询历史环节,就算act_hi_taskinst有数据未完成当前环节也不能查出

在流程资源文件中,每一个节点元素在activiti中都有对应的元素属性承载类,比如,UserTask任务节点,它的元素属性承载类为UserTask,相同,startEvent开始节点的元素承载类为StartEvent,在bpmn流程文件进行解析时,也是将xml文档中每个元素解析为对应的承载类,从而进行组装成一个BmpnModel模型,我们可以直接由activiti将bpmn xml文件解析为一个实例模型(下图所示),也可以完成通过自定义手动创建模型。

关于模型校验器更多细节可查看 activiti源码剖析之BpmnModel模型校验器

一个流程中,流程实例只有一个,执行对象可以有多个(如果存在分支和聚合)

SELECT FROM activitiact_ru_execution a; #正在执行的执行对象表

SELECT FROM activitiact_hi_procinst a; #流程实例的历史表

SELECT FROM activitiact_ru_task a; #正在执行的任务表(只有节点是UserTask的时候,该表中才存在数据)

SELECT FROM activitiact_hi_taskinst a; #任务历史表(只有节点是UserTask的时候,该表中才存在数据)

SELECT FROM activitiact_hi_actinst a; #所有节点的历史表

一般而言 java service节点 是 service task节点上的派生,不是BPMN20中的规范,是activiti专门为Java准备的。其中class是指向实现了指定接口的Java类 expression 是表达式

打开官方地址,点击下载demo案例

下载好后,解压。找到解压文件activit-5170下的一级目录wars

继续解压wars 下面的activiti-explorer压缩包

解压后,扔进部署好的tomcat下的webapps目录里

在eclipse里新建一个动态web项目

在eclipse里创建一个tomcat服务器,选择版本7

把刚创建的动态web项目activiti甩到右变,点确定,就建好该项目的服务器了

双击activit项目所在的服务器,d出如下窗口,记住选择如图所示的第二个项目,然后最重要的一点是从d出的下一个窗体中选择tomcat的部署路径下的webapps,选好点确定。

然后,启动项目服务器。打开一个浏览器,服务器端口是8080的则输入:>

以上就是关于Activiti6.0 动态改变流程节点类型(普通-> 会签)全部的内容,包括:Activiti6.0 动态改变流程节点类型(普通-> 会签)、activiti笔记、activiti6.0流程引擎部署方式之BpmnModel以及使用等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9592978.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存