package com.cmvr.test.flow.runtime.event;

/**
 * 流程执行事件监听器
 * <p>
 * 其他模块可以通过实现此接口来监听流程执行过程中的事件，
 * 例如：节点执行完成、任务完成、任务失败、任务暂停/终止/恢复等。
 * <p>
 * 使用方式：在 Spring 容器中注册一个实现了此接口的 Bean 即可自动生效。
 * <pre>
 * &#64;Component
 * public class InspectionFlowExecutionListener implements FlowExecutionListener {
 *     &#64;Override
 *     public void onEvent(FlowExecutionEvent event) {
 *         switch (event.getEventType()) {
 *             case TASK_COMPLETED:
 *                 // 处理任务完成逻辑
 *                 break;
 *             case TASK_FAILED:
 *                 // 处理任务失败逻辑
 *                 break;
 *         }
 *     }
 * }
 * </pre>
 */
public interface FlowExecutionListener {

    /**
     * 接收流程执行事件
     * <p>
     * 注意：此方法在流程执行线程中同步调用，请勿执行耗时操作。
     * 如需耗时处理，建议在内部异步执行。
     *
     * @param event 流程执行事件
     */
    void onEvent(FlowExecutionEvent event);
}
