Alfresco 活动和候选团体

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

在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_
    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
此查询不返回任何记录,原因有二:

  • 在我的ACT_HI_IDENTITYLINK中,没有任务同时设置了组id和过程指令id
  • 记录的类型为“候选”,但查询正在查找“参与者”

  • 为什么查询只查找“participant”以及为什么类型为\='candidate'的记录没有设置任何proc\u inst\u id \

    更新: 约束“参与者”的问题有一个简单的解决方法:添加与参与者相同的候选组就足够了。 另见

    不幸的是,这还不足以解决第二个问题。由于未设置列proc_inst_id_uu,记录仍不会返回

    我试图手动更新“参与者”记录中的列,并已验证该页面可访问且运行良好


    有人知道为什么没有设置该列吗?

    首先尝试通过访问“工作流我已启动”来检查您的工作流是否已真正启动。您应该在“活动任务”中看到您的任务,如果没有,则表示您的定义中存在一些错误。如果一切正常,请检查您的组名,不要忘了添加“组”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");
        };
    }