activiti设计工作流——任务派遣配置

时间:2024-04-07 08:55:39
               

在配置任务结点时,任务派遣配置有3个项目:Assignee、Candidate users、Candidate groups。

activiti设计工作流——任务派遣配置

1. Assignee 受让人; 受托人,代理人; 被指定人;


这个只能指定单个人,不能用逗号分开指定多人。
如果指定了这个人,那么等价于 生成任务后,指定的这个人执行了 签收 操作。taskService.claim(taskId, currentUserId);
任务签收后,任务表(ACT_HI_TASKINST和ACT_RU_TASK)里的Assignee_字段就是签收人的id(currentUserId)

Candidate users  候选用户

这个是没有指定Assignee时,候选的用户,给系统判定哪些人能签收这个任务,这个不会校验权限,只会提示候选人有哪些。
比如调用taskService.claim(taskId, currentUserId);时即使currentUserId不属于Assignee、Candidate users、Candidate groups这个三个配置里的用户,仍然可以调用成功。
多个候选用户可以用英文逗号分开,也可以点击“+”号,分别添加。

Candidate groups  候选组

候选组与候选用户类似,只是要获取候选用户,需要根据候选组找到对应的用户。


配置注意事项

注意:Assignee 和 Candidate users 填写的值默认对应的是ACT_ID_USER表的id_字段(activiti-explorer项目就是这样)。但这不是绝对的。只要与你的系统其他调用的地方保持一致就可以了。如:
taskService.createTaskQuery().taskAssignee(param);
taskService.createTaskQuery().taskCandidateUser(param);  
param参数不一定是用户id,可以是用户名称,用户工号,就是与Assignee 和 Candidate users配置里填写的值一样,就可以查询出对应的任务。但是为了避免用户名称有重名,最好还是用唯一字段id比较好,不然2个用户名称相同,查询时就会同时查到该任务。

Candidate groups 填写的值默认是
没规定是用户id或者是用户登录名或者是用户真实姓名,或者是组id,组编码,组名称什么的。他们在数据库表中没有定义与其他表的关联,
taskService.createTaskQuery().taskCandidateGroup(param);
param参数不一定是组id,可以是组名称,只有与Candidate groups配置的文本值相同就可以了。所以Candidate groups 填写的值也不是必须要求是组id。原因与Candidate users相同。


关于activiti自带的ACT_ID_USER、ACT_ID_GROUP、ACT_ID_MEMBERSHIP表.

一般系统有自己的用户表,权限,组相关的表,没有使用activiti自带的ACT_ID_USER、ACT_ID_GROUP、ACT_ID_MEMBERSHIP表。
可以自己定义UserManager类继承org.activiti.engine.impl.persistence.entity.UserEntityManager。和GroupManager类继承org.activiti.engine.impl.persistence.entity.GroupEntityManager。然后用spring管理注入到activiti里去。这样在调用(activiti-rest)项目的url是才能得到正确的结果。
当然,如果只是调用自己定义的业务类,那么可以不用管UserManager与GroupManager。只有调用类是
taskService.createTaskQuery().taskAssignee(param);
taskService.createTaskQuery().taskCandidateUser(param);  
taskService.createTaskQuery().taskCandidateGroup(param);
这些方法时param传对就可以了。之所以要配置UserManager与GroupManager,只是因为activiti-explorer、activiti-rest项目已经默认param为ACT_ID_USER表的id_字段,ACT_ID_GROUP表的id_字段,还有用户与组的关系表ACT_ID_MEMBERSHIP。如果想要使activiti-explorer、activiti-rest等项目正常运行,有不想使用activiti自带的ACT_ID_USER、ACT_ID_GROUP、ACT_ID_MEMBERSHIP表,那么就必须继承类后重写对应的方法,然后注入到activiti引擎里去。

           

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!希望你也加入到我们人工智能的队伍中来!http://www.captainbed.net

activiti设计工作流——任务派遣配置