You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

APS 1.8.1中候选组用户无法查看流程实例的问题排查

问题分析与解决方案

首先得明确Activiti(APS基于Activiti构建)中ACT_HI_IDENTITYLINK表的设计逻辑,这是理解问题的核心:

  • 流程实例级身份链接:这类记录的proc_inst_id_不为空,通常对应流程启动时指定的参与者、发起人,或者通过流程全局配置添加的身份关联,type_一般是participant或starter,作用是标记哪些用户/组拥有整个流程实例的查看权限。
  • 任务级身份链接:这类记录的task_id_不为空、proc_inst_id_为空,对应单个任务的候选用户/组、办理人等,type_是candidate、assignee,作用是控制单个任务的权限,而非整个流程实例。

回到你的问题:

为什么proc_inst_id_没有自动设置?

因为你是把候选组配置在单个任务节点上的,Activiti的默认行为是:任务的候选组只会生成任务级的身份链接记录,不会自动关联到流程实例层级。也就是说,这些type_="candidate"的记录只和具体任务绑定,不会被标记为流程实例的参与者,自然proc_inst_id_为空。

而你页面的查询逻辑只匹配了type_="participant"且proc_inst_id_不为空的记录,所以完全找不到对应的数据——手动补全proc_inst_id_后,这些记录就符合查询条件了,页面自然能显示。

可行的解决办法

1. 调整页面查询逻辑(推荐,符合Activiti原生设计)

修改查询语句,让它同时覆盖任务级的候选组记录:

  • 关联ACT_HI_TASKINST表,通过task_id_关联到属于目标流程实例的任务;
  • 同时匹配type_="participant"(流程实例参与者)和type_="candidate"(任务候选组)的记录。

举个SQL示例(仅供参考,根据你的实际查询调整):

SELECT DISTINCT hi_procinst.*
FROM ACT_HI_PROCINST hi_procinst
LEFT JOIN ACT_HI_IDENTITYLINK il_proc ON hi_procinst.ID_ = il_proc.PROC_INST_ID_ AND il_proc.TYPE_ = 'participant'
LEFT JOIN ACT_HI_TASKINST hi_task ON hi_procinst.ID_ = hi_task.PROC_INST_ID_
LEFT JOIN ACT_HI_IDENTITYLINK il_task ON hi_task.ID_ = il_task.TASK_ID_ AND il_task.TYPE_ = 'candidate'
WHERE (il_proc.GROUP_ID_ = '你的候选组ID' OR il_task.GROUP_ID_ = '你的候选组ID')

2. 手动添加流程实例级参与者

如果不想修改查询,可以在流程启动或任务创建时,通过Activiti API把候选组添加为流程实例的参与者:

// 流程启动后,添加候选组为流程参与者
identityLinkService.addParticipantGroup(processInstanceId, candidateGroupId);

这样ACT_HI_IDENTITYLINK会生成一条type_="participant"且proc_inst_id_正确赋值的记录,你的原有查询就能匹配到。

3. 检查APS的定制配置

部分企业定制的APS版本可能提供了“任务候选组同步为流程参与者”的配置项,可以在流程设计器或系统设置里找找相关开关,开启后就能自动生成对应的流程实例级身份链接。


内容的提问来源于stack exchange,提问作者Marco Altieri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:28:40