AEM通过一个java类启动一个卷展

AEM通过一个java类启动一个卷展,java,aem,rollout,Java,Aem,Rollout,如何以编程方式在AEM中启动卷展过程 谢谢。这里有一个代码片段,可以从JSP级别用于首次发布,与JAVA级别的方法相同 <%@page import="com.day.cq.wcm.msm.api.RolloutManager"%> <% Page rolloutthispage = pageManager.getPage("/content/geometrixx/en/toolbar"); //source page RolloutManager.RolloutParams

如何以编程方式在AEM中启动卷展过程


谢谢。

这里有一个代码片段,可以从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);
%>

要测试此代码段

我已经创建了一个从
/content/geometricxx/en/
/content/geometricxx/in
添加/更新了一些文本组件数据,如下所示

创建了一个组件,用于调用这个jsp逻辑,称为来自其他项目页面的jsp逻辑。调用jsp逻辑后,卷展栏在
/content/geometricxx/in
实时副本中受到影响。

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


希望对您有所帮助

这里有一个代码片段,可用于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);
%>

要测试此代码段

我已经创建了一个从
/content/geometricxx/en/
/content/geometricxx/in
添加/更新了一些文本组件数据,如下所示

创建了一个组件,用于调用这个jsp逻辑,称为来自其他项目页面的jsp逻辑。调用jsp逻辑后,卷展栏在
/content/geometricxx/in
实时副本中受到影响。

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


希望能有所帮助

经过一些研究,我发现如何以编程方式启动首次展示:

在这个特定的案例中,我是在工作流中完成的:

        @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);

            }
        }
@Reference
私人RolloutManager RolloutManager;
@参考文献
私有ResourceResolveFactory ResourceResolveFactory;
非公开会议;
私有资源解析程序;
私人网页管理器;
公共类MyWorkflow实现WorkflowProcess{
@凌驾
public void execute(WorkItem WorkItem、WorkflowSession WorkflowSession、MetaDataMap dataMap)引发WorkflowException{
//从工作流数据获取有效负载页面
WorkflowData WorkflowData=workItem.getWorkflowData();
字符串负载=workflowData.getPayload().toString();
final Map authInfo=new HashMap();
authInfo.put(JcrResourceConstants.AUTHENTICATION_INFO_SESSION,workflowSession.getSession());
resolver=resourceResolverFactory.getResourceResolver(authInfo);
//获取PageManager的实例
pageManager=resolver.adapto(pageManager.class);
最终页面targetPage=pageManager.getPage(有效负载);
最终卷展参数params=新卷展参数();
params.isDeep=false;
params.master=targetPage;
params.reset=false;
params.trigger=RolloutManager.trigger.ROLLOUT;
params.delete=false;
卷展管理器卷展栏(参数);
}
}

正如预期的那样,将页面展开到相关的实时副本中

经过一些研究,我发现如何以编程方式启动卷展:

在这个特定的案例中,我是在工作流中完成的:

        @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);

            }
        }
@Reference
私人RolloutManager RolloutManager;
@参考文献
私有ResourceResolveFactory ResourceResolveFactory;
非公开会议;
私有资源解析程序;
私人网页管理器;
公共类MyWorkflow实现WorkflowProcess{
@凌驾
public void execute(WorkItem WorkItem、WorkflowSession WorkflowSession、MetaDataMap dataMap)引发WorkflowException{
//从工作流数据获取有效负载页面
WorkflowData WorkflowData=workItem.getWorkflowData();
字符串负载=workflowData.getPayload().toString();
final Map authInfo=new HashMap();
authInfo.put(JcrResourceConstants.AUTHENTICATION_INFO_SESSION,workflowSession.getSession());
resolver=resourceResolverFactory.getResourceResolver(authInfo);
//获取PageManager的实例
pageManager=resolver.adapto(pageManager.class);
最终页面targetPage=pageManager.getPage(有效负载);
最终卷展参数params=新卷展参数();
params.isDeep=false;
params.master=targetPage;
params.reset=false;
params.trigger=RolloutManager.trigger.ROLLOUT;
params.delete=false;
卷展管理器卷展栏(参数);
}
}

正如预期的那样,将页面展开到相关的实时副本中

谢谢,伙计,还可以使用RolloutManager解决问题正如您在回答中所解释的,我也会把我的代码和答案放进去。我想指出,
RolloutManager.rollout(ResourceResolver解析器、LiverRelationship关系、布尔重置、布尔自动保存)
的行为与
rolloutManager(rolloutManager.RolloutParams params)的行为不完全相同
应该避免使用前者。多谢老兄,也要用RolloutManager解决这个问题。正如你在回答中所解释的,我也会把我的代码和答案放在一起。我想指出的是,
RolloutManager.rollout(ResourceResolver解析程序、LiverRelationship关系、布尔重置、布尔自动保存)
的行为与
rolloutManager(rolloutManager.RolloutParams params)
的行为不完全相同,应避免使用前者。