package cn.stylefeng.workflow.event.api;

import cn.stylefeng.workflow.api.entity.task.RuTask;
import cn.stylefeng.workflow.api.enums.ModelEventTypeEnum;
import cn.stylefeng.workflow.api.enums.NodeEventTypeEnum;
import cn.stylefeng.workflow.api.enums.TaskEventTypeEnum;
import cn.stylefeng.workflow.api.pojo.InstanceContext;

import java.util.List;

public interface EventPublishApi {

    void publishModelEvent(ModelEventTypeEnum modelEventTypeEnum, Long definitionId);

    void publishModelEvent(ModelEventTypeEnum modelEventTypeEnum, InstanceContext instanceContext);

    void publishNodeEvent(NodeEventTypeEnum nodeEventTypeEnum, Long nodeId, InstanceContext instanceContext);

    List<String> getActionClasses();

    void publishModelTaskEvent(TaskEventTypeEnum taskEventTypeEnum, List<RuTask> taskList, InstanceContext instanceContext);

    List<String> getTaskActionClasses();

}
