AEM запускает развертывание через Java-класс

Как запустить процесс развертывания в AEM программно?

Благодарю.

2 ответа

Решение

После некоторых исследований я обнаружил, как программно запустить развертывание:

В этом конкретном случае я сделал это внутри рабочего процесса:

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

            }
        }

Это работает как ожидалось, выкатывая страницу к соответствующим живым копиям

Вот фрагмент кода, который можно использовать для развертывания с уровня 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

Надеюсь, поможет

Другие вопросы по тегам