批量激活完成事件处理程序

Experience Manager Guides公开com/adobe/fmdita/replication/complete事件,用于在批量激活过程完成后执行任何操作。 每当批量激活过程完成时,就会触发此事件。 例如,如果您运行批量激活地图的AEM站点预设,则会在激活过程结束后调用此事件。

您需要创建一个AEM事件处理程序来读取此事件中可用的属性并进行进一步处理。

活动详情说明如下:

事件名称

com/adobe/fmdita/replication/complete

参数

名称
类型
描述
path
字符串
触发此事件的文件的路径。
例如,/content/output/sites/ditamap1-ditamap
它是序列化为JSON数组的路径的列表。
messageType
字符串
消息的类型。
可能的选项:REPLICATION
action
字符串
这是执行的操作。
可能的选项:BulkReplicate
user
字符串
启动操作的用户。
result
字符串
批量激活的结果。 它是一个序列化JSON对象:
{"success":boolean,"code":integer,"message":"" }
agentId
字符串
复制中使用的agentId。 例如:"publish"
importMode
字符串
在激活中使用的导入模式。 可能的选项包括:
REPLACE, MERGE, UPDATE

示例事件侦听器

@Component(service = EventHandler.class,
        immediate = true,
        property = {
                EventConstants.EVENT_TOPIC + "=" + "com/adobe/fmdita/replication/complete",
        })

public class SampleEventHandler implements EventHandler {

    protected final Logger log = LoggerFactory.getLogger(this.getClass());

    @Override
    public void handleEvent(final Event event) {
        Map<String, String> properties = new HashMap<>();
        properties.put("paths", (String) event.getProperty("paths"));
        properties.put("messageType", (String) event.getProperty("messageType"));
        properties.put("action", (String) event.getProperty("action"));
        properties.put("result", (String) event.getProperty("result"));
        properties.put("user", (String) event.getProperty("user"));
        properties.put("agentId", (String) event.getProperty("agentId"));
        properties.put("importMode", (String) event.getProperty("importMode"));

        String eventTopic = event.getTopic();
        log.debug("eventTopic {}", eventTopic);
        for(Map.Entry entry:properties.entrySet()) {
            log.debug(entry.getKey() + " : " + entry.getValue());
        }

    }
}
recommendation-more-help
11125c99-e1a1-4369-b5d7-fb3098b9b178