Comment lancer un processus de déploiement dans AEM par programme?AEM lance un déploiement via une classe Java
Merci.
Comment lancer un processus de déploiement dans AEM par programme?AEM lance un déploiement via une classe Java
Merci.
Après quelques recherches, j'ai trouvé comment lancer un déploiement programme:
Dans ce cas précis, je l'ai fait dans un flux de travail:
@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);
}
}
Cela fonctionne comme prévu, déploiement de la page pour les copies en direct connexes
Voici un extrait de code qui peut être utilisé pour le déploiement à partir du niveau JSP, de la même manière que vous pouvez le faire au niveau 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);
%>
Pour tester cet extrait de code
J'ai créé une copie en direct /content/geometrixx/en/
-/content/geometrixx/in
Ajouté/mise à jour des données de composants de texte comme indiqué ci-dessous
créé un composant juste utilisé pour appeler cette logique JSP appelée la logique JSP à partir d'une autre page de projet. Une fois que la logique jsp a été appelée, le déploiement a été affecté dans la copie en direct /content/geometrixx/in
.
Jetez un oeil sur les API ci-dessous pour utiliser plus d'options RolloutManager, Trigger, RolloutParams
Hope it helps
Merci mec, également travailler comment le faire en utilisant le RolloutManager comme vous l'expliquez dans votre réponse, je vais mettre mon code et répondre aussi. –
Je voudrais noter que 'rolloutManager.rollout (résolveur ResourceResolver, relation LiveRelationship, boolean reset, boolean autoSave)' ne se comporte pas exactement comme 'rolloutManager (RolloutManager.RolloutParams params)' et le premier devrait être évité. –