package cn.axzo.workflow.core.service;

import cn.axzo.workflow.common.model.request.bpmn.activity.BpmnActivityTimeoutCallbackDTO;
import cn.axzo.workflow.common.model.request.bpmn.activity.BpmnActivityTimeoutTriggerDTO;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnActivitySetAssigneeDTO;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnActivityTriggerDTO;

/**
 * 流程活动的 Service
 *
 * @author wangli
 * @since 2023/11/17 16:37
 */
public interface BpmnProcessActivityService {

    /**
     * 唤醒业务节点
     *
     * @param dto
     */
    void trigger(BpmnActivityTriggerDTO dto);



    /**
     * 给指定实例的指定节点重设审批人
     *
     * @param dto
     */
    void setAssignee(BpmnActivitySetAssigneeDTO dto);

    /**
     * 设置指定业务接口继续往下流转的触发时间
     *
     * @param dto
     * @return
     */
    Boolean setTimeoutTrigger(BpmnActivityTimeoutTriggerDTO dto);

    /**
     * 设置指定业务节点定时回调(仅通过 MQ 事件广播,自身状态不做任何改变)
     *
     * @param dto
     * @return
     */
    Boolean setTimeOutCallback(BpmnActivityTimeoutCallbackDTO dto);
}
