Alfresco 活动和候选团体
在APS1.8.1中,我定义了一个流程,其中每个任务都有一个候选组 当我使用属于候选组的用户登录时,我看不到流程实例 我发现,当我尝试访问流程实例时,APS会在数据库中执行以下查询:Alfresco 活动和候选团体,alfresco,activiti,aps,Alfresco,Activiti,Aps,在APS1.8.1中,我定义了一个流程,其中每个任务都有一个候选组 当我使用属于候选组的用户登录时,我看不到流程实例 我发现,当我尝试访问流程实例时,APS会在数据库中执行以下查询: select distinct RES.* , DEF.KEY_ as PROC_DEF_KEY_, DEF.NAME_ as PROC_DEF_NAME_, DEF.VERSION_ as PROC_DEF_VERSION_, DEF.DEPLOYMENT_ID_ as DEPLOYMENT_ID_ fr
select distinct RES.* , DEF.KEY_ as PROC_DEF_KEY_, DEF.NAME_ as PROC_DEF_NAME_, DEF.VERSION_ as PROC_DEF_VERSION_, DEF.DEPLOYMENT_ID_ as DEPLOYMENT_ID_
from ACT_HI_PROCINST RES
left outer join ACT_RE_PROCDEF DEF on RES.PROC_DEF_ID_ = DEF.ID_
left join ACT_HI_IDENTITYLINK I_OR0 on I_OR0.PROC_INST_ID_ = RES.ID_
WHERE RES.TENANT_ID_ = 'tenant_1'
and
( (
exists(select LINK.USER_ID_ from ACT_HI_IDENTITYLINK LINK where USER_ID_ = '1003' and LINK.PROC_INST_ID_ = RES.ID_)
)
or (
I_OR0.TYPE_ = 'participant'
and
I_OR0.GROUP_ID_ IN ('1','2','2023','2013','2024','2009','2025','2026','2027','2028','2029','2007','2018','2020','2017','2015','2012','2003','2021','2019','2004','2002','2005','2030','2031','2032','2011','2006','2008','2014','2010','2016','2022','2033','2034','2035','2036','2037','1003')
) )
order by RES.START_TIME_ desc
LIMIT 50 OFFSET 0
此查询不返回任何记录,原因有二:
有人知道为什么没有设置该列吗?首先尝试通过访问“工作流我已启动”来检查您的工作流是否已真正启动。您应该在“活动任务”中看到您的任务,如果没有,则表示您的定义中存在一些错误。如果一切正常,请检查您的组名,不要忘了添加“组”myGRPName。 如果您想查看工作流实例,使用web脚本和服务会更简单。一个可能的解决方案(或解决方法,直到修复)是将作为候选对象添加到任务中的每个组作为流程实例的参与者 有一个REST API可以做到这一点:
POST /enterprise/process-instances/{processInstanceId}/identitylinks
此API所做的工作应该由任务侦听器完成,该侦听器将自动添加所创建任务的候选组作为流程实例的参与者
要添加新的标识链接,请在侦听器中使用以下行:
ActivitiEntityEvent aee = (ActivitiEntityEvent)activitiEvent;
TaskEntity taskEntity = (TaskEntity)aee.getEntity();
List<IdentityLinkEntity> identities = taskEntity.getIdentityLinks();
if (identities != null) {
for (IdentityLinkEntity identityLinkEntity : identities) {
String groupId = identityLinkEntity.getGroupId();
runtimeService.addGroupIdentityLink(activitiEvent.getProcessInstanceId(), groupId, "participant");
};
}
ActivityEvent aee=(ActivityEvent)ActivityEvent;
TaskEntity TaskEntity=(TaskEntity)aee.getEntity();
列表标识=taskEntity.GetIdentityLink();
if(标识!=null){
for(IdentityLinkEntity IdentityLinkEntity:identies){
String groupId=identitylinkity.getGroupId();
runtimeService.addGroupIdentityLink(activitiEvent.getProcessInstanceId(),groupId,“参与者”);
};
}
我想使用其他用户访问该流程:属于候选组的用户您能否提供更多详细信息该流程由用户X启动,并与E多个任务并行审查。每个任务都有一个“候选组”。我无法看到用户Y属于某个候选组的进程,我希望看到该进程。可能有两个原因,进程未启动,或者任务分配不正确。您能给出定义吗?流程启动后,我可以使用启动它的用户查看它(您可以查看我在上面复制的表中的记录)。任务分配正确:我可以使用用户Y看到它。我看不到的是流程。
ActivitiEntityEvent aee = (ActivitiEntityEvent)activitiEvent;
TaskEntity taskEntity = (TaskEntity)aee.getEntity();
List<IdentityLinkEntity> identities = taskEntity.getIdentityLinks();
if (identities != null) {
for (IdentityLinkEntity identityLinkEntity : identities) {
String groupId = identityLinkEntity.getGroupId();
runtimeService.addGroupIdentityLink(activitiEvent.getProcessInstanceId(), groupId, "participant");
};
}