AEM通过一个java类启动一个卷展
如何以编程方式在AEM中启动卷展过程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
谢谢。这里有一个代码片段,可以从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)
的行为不完全相同,应避免使用前者。