【问题标题】:SSO user activating the page..triggers the workflow with workflow launcher but shows initiator as admin..Any suggestions why initiator as admin?SSO 用户激活页面..使用工作流启动器触发工作流,但将启动器显示为管理员..任何建议为什么启动器作为管理员?
【发布时间】:2016-06-13 07:44:46
【问题描述】:

团队,

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

我有一个属于自定义 AEM 组的 sso 用户。他拥有对 /etc、/content 和 /libs 的完全访问权限。

我以 SSO 用户身份登录,当激活页面时,它会通过工作流启动器 cq:page modified 事件启动工作流。但将发起者显示为“admin”。

工作流实例历史

状态标题发起者开始时间结束时间动作注释 已完成 开始管理员 12-06-2016 2:58:27 12-06-2016 2:58:27 工作流程已完成
已完成 processMyCustomStep admin 12-06-2016 2:58:27 12-06-2016 2:58:27 WorkflowCompleted

我有几个问题:

  1. 不确定这个 Title Start 可能是启动工作流的工作流启动器,但它显示启动器为管理员。

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

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

我没有激活页面和触发工作流的工作流启动器,而是通过提供页面的有效负载手动启动了工作流过程,然后它正确显示,工作流过程以发起者作为 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 用户激活页面,但不确定为什么它将工作流的发起者显示为管理员而不是 sso 用户。对 sso 用户在以 sso 用户身份登录时激活页面后能够查看工作流实例的任何建议。它触发了工作流程,但发起人作为管理员而不是 sso 用户。任何意见都将受到高度赞赏。

谢谢。

【问题讨论】:

    标签: aem


    【解决方案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 由启动工作流的用户创建。从经典 UI 的站点管理员查看以下工作流启动对话框的屏幕截图:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-16
      • 1970-01-01
      • 2012-03-23
      相关资源
      最近更新 更多