AEM 6.3 Настройка обработчика / прослушивателя PageEvent - PullRequest
0 голосов
/ 07 февраля 2019

В настоящее время я работаю над настройкой обработчика событий для создания и удаления страниц в aem, чтобы затем вызвать API одного из наших поставщиков.

Я основываю свою работу на модуле, который у нас уже есть, который прослушивает события репликации.

До сих пор мне удавалось воспроизвести это поведение на моем модуле и запускать код при репликации.Однако мне нужны только вызовы API для публикаций и удалений страниц.

Я пытался найти различие между репликациями и удалениями и активациями страниц.

Пока что кажется, чтоAEM обрабатывает репликации crx и публикации страниц как события того же типа "type = ACTIVATION".

Если я удаляю страницу, он устанавливает тип как "DELETE", поэтому я могу работать с этим для вызова APIно для публикаций страниц я потерялся, поскольку, как я уже упоминал, AEM выглядит так, как будто он обрабатывает репликации CRX и публикации страниц одного типа.

После некоторых исследований я обнаружил API PageEvent и попытался настроить страницу.Слушатель событий, но он не запускается при публикациях или удалении страниц, поэтому я не уверен, что, если то, что я пытаюсь сделать, возможно, или, возможно, мой компонент расположен в неправильной части проекта для прослушивания событий страницы.

Заранее спасибо

1 Ответ

0 голосов
/ 08 февраля 2019

Этот код ниже хорошо работает для обнаружения события удаления страницы:

@Component(
        service = {
                EventHandler.class,
                JobConsumer.class
        },
        immediate = true,
        configurationPolicy = ConfigurationPolicy.OPTIONAL,
        property = {
                "event.topics=" + PageEvent.EVENT_TOPIC,
                JobConsumer.PROPERTY_TOPICS + "=" + "aem/custom/event"
        }
)

public class CustomEventHandler implements EventHandler, JobConsumer {

    @Override
    public void handleEvent(Event event) {
        PageEvent pageEvent = PageEvent.fromEvent(event);
        Map<String, Object> properties = new HashMap<>();
        properties.put("pageEvent", pageEvent);
        jobManager.addJob("aem/custom/event", properties);
    }

    @Override
    public JobResult process(Job job) {
        PageEvent pageEvent = (PageEvent) job.getProperty("pageEvent");
        try {
            if (pageEvent != null && pageEvent.isLocal()) {
                Iterator<PageModification> modificationsIterator = pageEvent.getModifications();
                while (modificationsIterator.hasNext()) {
                    PageModification modification = modificationsIterator.next();

                    if (PageModification.ModificationType.DELETED.equals(modification.getType())) {
                        // Your logic
                    }
                }
            }
        } catch (Exception e) {
            logger.error("Error : ", e);
        }
        return JobResult.OK;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...