SSO用户激活页面..使用工作流程启动器触发工作流但显示启动器为admin ..任何建议为什么发起人为管理员?

时间:2016-06-13 07:44:46

标签: cq5 aem

我的工作流只有一个流程步骤,即processMyCustomStep,映射到OSGI服务。

我有一个属于自定义AEM组的sso用户。他可以完全访问/ etc,/ content和/ libs。

我已经以SSO用户身份登录,在激活页面时,它会使用工作流程启动器cq:page modified event启动工作流程。但将启动器显示为“admin”。

工作流程实例历史记录

状态标题发起人开始时间结束时间动作评论 已完成开始管理员12-06-2016 2:58:27 12-06-2016 2:58:27工作流程已完成
已完成的流程MyCustomStep admin 12-06-2016 2:58:27 12-06-2016 2:58:27 WorkflowCompleted

我有几个问题:

  1. 不确定这个标题是什么启动工作流启动器可能启动工作流程,但它将启动器显示为管理员。

  2. 同时,我的工作流程步骤也会将发起人显示为管理员。

  3. 由于工作流作为管理员的发起人,当我以sso用户身份登录时,我没有看到此工作流的实例,也没有看到sso用户的存档。只有在以管理员身份登录时,才能看到工作流实例,并在工作流完成后进入存档。

  4. 我没有激活触发工作流的页面和工作流启动器,而是通过提供页面的有效负载手动启动工作流程,然后正确显示,工作流程以启动器作为sso用户启动。

    工作流程实例历史记录

    状态标题发起人开始时间结束时间动作评论 已完成启动SSOUser1 12-06-2016 2:56:24 12-06-2016 2:58:27工作流程已完成
    已完成的流程MyCustomStep admin 12-06-2016 2:56:24 12-06-2016 2:58:27 WorkflowCompleted  这次由于启动器是SSOUser1,我看到以sso用户(SSOUser1)登录时填充的工作流实例。一旦完成,我还会在归档中看到工作流实例。

    即使我在第一种情况下使用sso用户激活页面,也不确定为什么它将工作流的发起者显示为admin而不是sso用户。当以sso用户身份登录时,sso用户在激活页面后能够查看工作流实例的任何建议。它触发了工作流程,但启动器为admin而不是sso用户。任何输入都将受到高度赞赏。

    感谢。

1 个答案:

答案 0 :(得分:1)

在使用Sling服务帐户的较新AEM版本中,启动器始终为adminworkflow-service。用户请求启动工作流,管理员或服务帐户运行该过程。如果您想找到启动工作流程的用户,可以使用item.getWorkflowData().getMetaDataMap().get("userId", String.class)查看元数据。请注意,数据与JCR中创建的资源匹配的路径类似于/etc/workflow/instances/server0/2016-06-13/update_asset_2/data/metaData。此外,您可以通过HistoryItem然后userId获取各个工作流程处理步骤的参与者。

@Component
@Service
@Properties({
    @Property(name = Constants.SERVICE_DESCRIPTION, value = "Workflow step description"),
    @Property(name = Constants.SERVICE_VENDOR, value = "Company Name"),
    @Property(name = "process.label", value = "Process Label will show in the workflow dropdown") })
public class MyCustomStep implements WorkflowProcess {

    public void execute(WorkItem item, WorkflowSession wfsession, MetaDataMap args) throws WorkflowException {

        /* Always admin or service-workflow */
        final String initiator = item.getWorkflow().getInitiator();

        /* Get actual user who initiated workflow */
        final String initiator = item.getWorkflowData().getMetaDataMap().get("userId", String.class);

        /* Get workflow history */
        final List<HistoryItem> histories = wfsession.getHistory(item.getWorkflow());

        /* Get last item in workflow history */
        final HistoryItem lastItem = histories.get(histories.size() - 1);

        /* Get the user that participated in the last item */
        final String lastUser = lastItem.getUserId();
    }
}

工作流title由启动工作流的用户创建。请参阅Classic UI的站点管理员的工作流程启动对话框的以下屏幕截图:Workflow initiation