package org.springblade.flow.engine.service;

import java.util.Map;

import org.springblade.flow.engine.model.flowtask.FlowTaskInfoVO;
import org.springblade.flow.exception.WorkFlowException;

/**
 * 在线开发工作流
 *
 * @author JNPF开发平台组
 * @version V3.1.0
 * @copyright 引迈信息技术有限公司
 * @date 2021/3/15 9:19
 */
public interface FlowDynamicService {

    /**
     * 表单信息
     *
     * @return
     * @throws WorkFlowException 异常
     */
    FlowTaskInfoVO info(String processInstanceId) throws WorkFlowException;

    /**
     * 保存
     *
     * @param id     主键值
     * @param flowId 引擎id
     * @param entity 实体对象
     * @throws WorkFlowException 异常
     */
    void save(String id, String flowId, String entity) throws WorkFlowException;

    /**
     * 提交
     *
     * @param id         主键值
     * @param flowId     引擎id
     * @param entity     实体对象
     * @param freeUserId 指定用户
     * @throws WorkFlowException 异常
     */
    void submit(String id, String flowId, String entity, String freeUserId) throws WorkFlowException;

    /**
     * 关联表单
     *
     * @param flowId 引擎id
     * @param id     数据id
     * @return
     * @throws WorkFlowException 异常
     */
    Map<String, Object> getData(String flowId, String id) throws WorkFlowException;
}
