【问题标题】:AEM launching a Rollout through a java classAEM 通过 java 类启动 Rollout
【发布时间】:2017-01-19 20:13:22
【问题描述】:

如何以编程方式在 AEM 中启动推出流程?

谢谢。

【问题讨论】:

    标签: java aem rollout


    【解决方案1】:

    这是一个代码 sn-p,可用于从 JSP 级别推出,您可以在 JAVA 级别执行此操作。

    <%@page import="com.day.cq.wcm.msm.api.RolloutManager"%>
    
    <% Page rolloutthispage = pageManager.getPage("/content/geometrixx/en/toolbar"); //source page
    RolloutManager.RolloutParams rolloutparams = new RolloutManager.RolloutParams();
    rolloutparams.master = rolloutthispage; 
    rolloutparams.isDeep = true;
    //rolloutmanager is an OSGI service so using here sling.getService to have a reference
    com.day.cq.wcm.msm.api.RolloutManager rolloutManager = sling.getService(com.day.cq.wcm.msm.api.RolloutManager.class);
    rolloutManager.rollout(rolloutparams);
    %>
    

    测试这段代码sn-p

    我创建了一个从 /content/geometrixx/en//content/geometrixx/in 的 Live Copy 添加/更新了一些文本组件数据,如下所示

    创建了一个仅用于调用此jsp逻辑的组件,该组件称为来自其他项目页面的JSP逻辑。一旦调用了 jsp 逻辑,/content/geometrixx/in live 副本中的部署就会受到影响。

    查看以下 API 以使用更多选项 RolloutManager,Trigger,RolloutParams

    希望对你有帮助

    【讨论】:

    • 谢谢老兄,按照您在回答中的说明,还可以使用 RolloutManager 解决此问题,我也会输入我的代码和答案。
    • 我想指出rolloutManager.rollout(ResourceResolver resolver, LiveRelationship relation, boolean reset, boolean autoSave) 的行为与rolloutManager(RolloutManager.RolloutParams params) 不完全相同,应该避免使用前者。
    【解决方案2】:

    经过一番研究,我发现了如何以编程方式启动部署:

    在这种特定情况下,我是在工作流中完成的:

            @Reference
            private RolloutManager rolloutManager;
            @Reference
            private ResourceResolverFactory resourceResolverFactory;
    
            private Session session;
            private ResourceResolver resolver;
            private PageManager pageManager;
    
            public class MyWorkflow implements WorkflowProcess {
                @Override
                public void execute(WorkItem workItem, WorkflowSession workflowSession, MetaDataMap dataMap) throws WorkflowException {
                   //get the payload page from the workflow data
                   WorkflowData workflowData = workItem.getWorkflowData();
                   String payload = workflowData.getPayload().toString();
    
                   final Map<String, Object> authInfo = new HashMap<String, Object>();
                   authInfo.put(JcrResourceConstants.AUTHENTICATION_INFO_SESSION, workflowSession.getSession());
                   resolver = resourceResolverFactory.getResourceResolver(authInfo);
    
                   //Get Instance of PageManager
                   pageManager = resolver.adaptTo(PageManager.class);
                   final Page targetPage = pageManager.getPage(payload);
    
                   final RolloutParams params = new RolloutParams();
                   params.isDeep = false;
                   params.master = targetPage;
                   params.reset = false;
                   params.trigger = RolloutManager.Trigger.ROLLOUT;
                   params.delete = false;
                   rolloutManager.rollout(params);
    
                }
            }
    

    这按预期工作,将页面滚动到相关的 Live Copy

    【讨论】:

      猜你喜欢
      • 2010-09-27
      • 2021-07-25
      • 1970-01-01
      • 2012-04-22
      • 2017-05-18
      • 1970-01-01
      • 2018-03-16
      • 2020-03-28
      • 2019-03-04
      相关资源
      最近更新 更多