package com.willalp.flow.service;

import com.willalp.flow.domain.HsFlowRunningRecord;
import com.willalp.flow.domain.HsFlowTask;
import com.willalp.flow.domain.req.FLowReq;
import com.willalp.system.domain.vo.PostTreeVo;

import java.util.List;
import java.util.Map;

/**
 * 会山流程引擎业务接口
 */
public interface HsFlowEngineService {

    /**
     * 提交并生成任务实例
     *
     * @param task
     * @param params
     */
    void submitATask(HsFlowTask task, Map<String, String> params);

    /**
     * 下一步
     *
     * @param flow
     * @return
     */
    int nextStep(FLowReq flow);

    /**
     * 获取指定待办任务
     *
     * @param taskId
     * @return
     */
    List<HsFlowTask> getToDoByTaskId(String taskId);

    /**
     * 获取待办
     *
     * @param userCode
     * @return
     */
    List<HsFlowTask> getToDo(String userCode);

    /**
     * 获取已办
     *
     * @param userCode
     * @return
     */
    List<HsFlowTask> getDone(String userCode);

    /**
     * 获取当前任务记录
     *
     * @param taskId
     * @return
     */
    List<HsFlowRunningRecord> currentTaskRecords(String taskId);

    /**
     * 任务撤销
     *
     * @param taskId
     * @return
     */
    int revoke(String taskId);

    /**
     * 获取树岗位
     *
     * @return
     * @param taskId
     */
    List<PostTreeVo> getTreePost(String taskId);
}
