2017-01-19 1 views

Répondre

0

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

2

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 text rollout

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. live copy text updated

Jetez un oeil sur les API ci-dessous pour utiliser plus d'options RolloutManager, Trigger, RolloutParams

Hope it helps

+0

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. –

+0

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é. –