package cn.axzo.workflow.core.listener;

import org.flowable.common.engine.api.delegate.event.FlowableEngineEvent;
import org.springframework.core.Ordered;

/**
 * 用户审批任务节点完成事件, 供外部引入 jar 包方式使用的钩子
 * <p>
 * 与 BpmTaskEventListener 的区别: 一个 Activity 可以有多个 Task, Task 有多个实例; 而本接口是针对这个节点的, 就算该审批节点是多人审批, 只有一次该节点的生命周期事件
 * <p>
 * 微服版本使用, 统一在 Server module 中进行实现扩展, 不在该 module 中实现
 *
 * @author wangli
 * @since 2023/7/24 17:27
 */
public interface BpmnActivityEventListener extends Ordered {

    /**
     * 节点已启动
     *
     * @param event
     */
    default void onStarted(FlowableEngineEvent event) {}

    /**
     * 节点已完成
     *
     * @param event
     */
    default void onCompleted(FlowableEngineEvent event) {}

    /**
     * 节点已取消
     *
     * @param event
     */
    default void onCancelled(FlowableEngineEvent event) {}
}
