InstanceService.java 5.34 KB
package com.hotent.runtime.manager;

import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.hotent.base.model.CommonResult;
import com.hotent.base.query.PageList;
import com.hotent.base.query.QueryFilter;
import com.hotent.bpm.api.model.process.nodedef.BpmNodeDef;
import com.hotent.bpm.persistence.model.BpmInstDeleteLog;
import com.hotent.bpm.persistence.model.BpmReadRecord;
import com.hotent.bpm.persistence.model.BpmTaskUrgent;
import com.hotent.bpm.persistence.model.DefaultBpmDefinition;
import com.hotent.bpm.persistence.model.DefaultBpmProcessInstance;
import com.hotent.runtime.model.RelatedInformation;
import com.hotent.runtime.params.CopyToParam;
import com.hotent.runtime.params.InfoboxVo;
import com.hotent.runtime.params.StartFlowParamObject;
import com.hotent.runtime.params.ToCopyToVo;
import com.hotent.runtime.vo.BpmInstDeleteVo;

import java.io.IOException;
import java.util.List;
import java.util.Map;
import java.util.Optional;

public interface InstanceService {
    /**
     * 抄送转发
     * @param copyToParam
     * @return
     * @throws Exception
     */
    CommonResult<String> transToMore(CopyToParam copyToParam) throws Exception;

    /**
     * 流程审批历史
     * @param instId
     * @param taskId
     * @param isCommu
     * @param isRelFlow
     * @param isRequest
     * @return
     */
    List<ObjectNode> opinionHistory(Optional<String> instId, Optional<String> taskId, Optional<Boolean> isCommu, Optional<Boolean> isRelFlow,
                                    Optional<Boolean> isRequest) throws Exception;

    /**
     * 删除流程实例
     * @param ids
     * @return
     */
    Object remove(String ids) throws Exception;

    /**
     * 信息盒子
     * @return
     */
    List<InfoboxVo> getDefaultInfobox();

    /**
     * 信息盒子
     * @return
     */
    Map<String, Object> getDefaultInfoMap();

    /**
     * 获取节点表单
     * @param defId
     * @param nodeId
     * @param procInstId
     * @return
     * @throws Exception
     */
    ObjectNode printBoAndFormKey(String defId, String nodeId, String procInstId) throws Exception;

    /**
     * 获取新闻公告
     * @param queryFilter
     * @return
     */
    ArrayNode getNewsAndBulletin(Optional<QueryFilter> queryFilter) throws Exception;

    /**
     * 根据流程实例获取关联数据
     * @param params
     * @return
     * @throws Exception
     */
    List<String> getBusLink(ObjectNode params) throws Exception;

    /**
     * 获取流程运行时的变量
     * @param instanceId
     * @return
     */
    List<ObjectNode> getInstRunDataList(String instanceId) throws Exception;

    /**
     * 查询流程实例列表
     * @param queryFilter
     * @param defId
     * @return
     */
    PageList<DefaultBpmProcessInstance> getInstDetailList(QueryFilter queryFilter, Optional<String> defId) throws Exception;


    /**
     * 根据流程实例id判断是否允许发起人撤回
     * @param instId
     * @return
     */
    CommonResult<Boolean> getSponsorRevokeByInstId(String instId) throws Exception;

    /**
     * 保存表单数据
     * @param startFlowParamObject
     * @return
     */
    CommonResult<String> saveFormData(StartFlowParamObject startFlowParamObject);

    /**
     * 获取有权限的流程并将其按照分类名称进行分组
     * @param queryFilter
     * @return
     */
    List<ObjectNode> getHasAuthFlowList(QueryFilter queryFilter) throws Exception;

    /**
     * 根据申请人获取相关流程
     * @param queryFilter
     * @return
     */
    PageList<DefaultBpmProcessInstance> relatedProcess(QueryFilter queryFilter);

    /**
     * 发送人工催办
     * @param bpmTaskUrgent
     * @return
     */
    CommonResult<String> sendUrgentByInstId(BpmTaskUrgent bpmTaskUrgent);

    /**
     * 发送人工催办
     * @param bpmTaskUrgent
     * @return
     */
    CommonResult<String> sendBpmTaskUrgent(BpmTaskUrgent bpmTaskUrgent);

    /**
     * 获取流程key
     * @param defId
     * @param procInstId
     * @param taskId
     * @return
     */
    CommonResult<String> getFlowKey(Optional<String> defId, Optional<String> procInstId, Optional<String> taskId) throws Exception;

    /**
     * 待办信息
     * @param map
     * @return
     */
    Map<String, Object> getDefaultInfoTodo(Map<Object, String> map);

    /**
     * 业务数据模板中 启动流程实例
     * @param defKey
     * @param businessKey
     * @param boAlias
     * @return
     */
    CommonResult<String> startForm(String defKey, String businessKey, String boAlias);

    List<BpmNodeDef> nodeUsers(String defId, String nodeId) throws Exception;

    ToCopyToVo toCopyTo(String proInstId, String taskId, String copyToType);

    Map<String, DefaultBpmDefinition> getFlowsMap();

    void publishMsgNews(String params) throws IOException;

    RelatedInformation getRelatedInformationById(String id);

    PageList<BpmReadRecord> getByRecordInstId(QueryFilter<BpmReadRecord> queryFilter);

    CommonResult<String> doEndProcessById(String id, Optional<String> reason);

    /**
     * 彻底删除流程实例
     * @param ids
     * @param isRemoveBo
     * @return
     */
    Object completelyRemove(List<BpmInstDeleteVo> bpmInstDeleteVos,String content,Boolean isRemoveBo) throws Exception;

    PageList<BpmInstDeleteLog> getInstDeleteLog(QueryFilter queryFilter);
}