0
A
回答
0
經過一番研究,我發現如何啓動編程方式部署:
在這個特定的情況下,我在一個工作流程內完成了:
@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);
}
}
這可以按預期工作,將頁面推出到相關的活動副本
2
這是一個代碼片段,可以用於從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/geometrixx/en/
現場副本/content/geometrixx/in
新增/更新了一些文本組件的數據如下圖所示
創建一個組件只是用於從其他項目頁面調用這個稱爲JSP邏輯的jsp邏輯。一旦jsp邏輯被調用,該卷展就會受到/content/geometrixx/in
現場拷貝的影響。
看一看下面的API來使用更多選項 RolloutManager,Trigger,RolloutParams
希望它可以幫助
相關問題
- 1. 顯示通過'appname'發佈
- 2. 如何通過反射擴展Java類?
- 3. 用Java通過HTTPS發佈xml
- 4. 發佈和檢索通過在Java
- 5. 通過Java應用程序發佈URL
- 6. 通過兒童主題恢復「發佈」發佈類型
- 7. 搜索通過展示
- 8. Facebook頁面 - 通過圖表API獲取發佈反饋和展示
- 9. jQuery通過刪除IE7中隱藏的類佈局錯誤來展示內容
- 10. 通過HTTP發送多行字符串發佈在Java中
- 11. 通過API發佈到Twitter
- 12. 通過在Android發佈Jpeg?
- 13. AJAX發佈通過vb.net
- 14. 通過Hudson發佈Maven
- 15. Twitter oAuth通過PHP發佈
- 16. Json發佈通過Android
- 17. MSDeploy通過FTP發佈
- 18. 無法通過JSON發佈
- 19. 如何發佈通過JavaScript
- 20. 通過URL發佈數據
- 21. 發佈通過捲曲
- 22. 通過AJAX發佈數據
- 23. 通過curl發佈到twitter
- 24. 通過$ http發佈對象
- 25. 通過HTTP發佈XML - Webforms
- 26. 通過CIFS插件發佈
- 27. 通過AJAX發佈空值
- 28. 通過TFS發佈定義
- 29. 通過cron發佈到facebook
- 30. 通過Flex發佈到Facebook
感謝您的傢伙,還解決了如何使用RolloutManager在解答您的答案時做到這一點,我也會提供我的代碼和答案。 –
我想指出''rolloutManager.rollout(ResourceResolver解析器,LiveRelationship關係,布爾重置,布爾autoSave)''不完全像'rolloutManager(RolloutManager.RolloutParams params)',前者應該避免。 –