package cn.axzo.workflow.starter.handler;

import cn.axzo.workflow.common.model.response.mq.ProcessTaskDTO;
import org.springframework.core.Ordered;

/**
 * 审批任务相关事件
 * <p>
 * 一个节点（Activity）可以包含 0个或多个任务（Task），它们两者是包含关系
 *
 * @author wangli
 * @since 2024/5/27 16:21
 */
public interface ProcessTaskEventHandler extends Ordered {

    /**
     * 用户任务已指派审核人
     */
    void onAssigned(ProcessTaskDTO taskDTO);

    /**
     * 用户任务已创建,未指派审核人
     */
    void onCreated(ProcessTaskDTO taskDTO);

    /**
     * 用户任务已通过
     * <p>
     * 仅审核通过一个用户任务时触发, 如果任务是驳回了, 则直接走实例撤回事件
     */
    void onCompleted(ProcessTaskDTO taskDTO);

    /**
     * 用户任务已删除
     * <p>
     * 删除不代表驳回或拒绝,因为通过也会走该事件
     */
    void onDeleted(ProcessTaskDTO taskDTO);
}
