package com.hotent.runtime.manager; import java.io.IOException; import java.util.List; import java.util.Map; import com.hotent.base.model.CommonResult; import com.hotent.base.query.PageList; import com.hotent.base.query.QueryFilter; import com.hotent.bpm.api.constant.OpinionStatus; import com.hotent.bpm.persistence.model.DefaultBpmTask; import com.hotent.runtime.model.BpmTaskTrans; import com.hotent.runtime.model.TaskTrans; import com.hotent.runtime.params.RevokeSignLineParamObject; import com.hotent.runtime.params.RevokeTransParamObject; import com.hotent.runtime.params.TaskTransParamObject; import com.hotent.uc.api.model.IUser; /** * 流转任务接口 * * @company 广州宏天软件股份有限公司 * @author zhangxianwen * @email zhangxw@jee-soft.cn * @date 2018年6月28日 */ public interface TaskTransService { /** * 征询回复。 *
     * 	1.删除本任务。
     *  2.发送通知给发送人。
     * 	2.根据父任务ID修改票数,同意和反对的票数。
     * 	3.判断流程是否完成。
     * 		如果完成执行是否返回或或提交。
     * 		如果是再派生的。
     * 			1.如果为返回修改这个父任务状态为trans。
     * 			2.如果提交则根据提交的结果,对父任务进行投票。
     *  4.如果未完成那么判断流程是否是并行,如果是串行,那么取得下一个执行人,并产生任务。
     *
     * 
* @param taskId 任务ID * @param actionName 审批的意见同意或反对 * @param opinion * @param isIntervene 是否管理员干预 * void * @throws IOException * @throws Exception */ void taskToInquReply(String formData,String taskId,String actionName,String notifyType, String opinion,boolean isIntervene,String files,String zFiles) throws IOException, Exception; /** * 结束流转任务。 *
	 * 	1.删除本任务。
	 *  2.发送通知给发送人。
	 * 	2.根据父任务ID修改票数,同意和反对的票数。
	 * 	3.判断流程是否完成。
	 * 		如果完成执行是否返回或或提交。
	 * 		如果是再派生的。
	 * 			1.如果为返回修改这个父任务状态为trans。
	 * 			2.如果提交则根据提交的结果,对父任务进行投票。
	 *  4.如果未完成那么判断流程是否是并行,如果是串行,那么取得下一个执行人,并产生任务。
	 *
	 * 
* @param taskId 任务ID * @param actionName 审批的意见同意或反对 * @param opinion * void * @param busData * @throws IOException * @throws Exception */ void completeTask(String taskId, String actionName, String notifyType, String opinion, String addSignAction, String busData, Map vars) throws IOException, Exception; /** * 获取我流转出去的流转任务。 * 根据规则判断是否完成。 * @param taskId * void */ @SuppressWarnings("rawtypes") PageList getMyTransTask(String userId,QueryFilter queryFilter); /** * 撤销我的流转出去任务。 *
	 * 	1.根据当前任务查找下面的所有子任务。
	 * 	2.删除这些子任务并给子任务人员发送给通知。
	 * 	3.将当前任务修改状态。
	 * 		普通任务修改为normal。
	 * 		流转任务修改为transformed.
	 * 
* @param taskId * @param opinion * void */ void withDraw(String taskId,String notifyType,String opinion) throws Exception; /** * 添加流转任务。 *
	 * 	1.选择多个执行人,那么会产生多个任务。
	 * 		在BPM_TASK表中添加多条任务数据,任务类型为trans,这些任务的exec_id_为空,表示为派生的任务。
	 * 		这些任务父ID为parentTaskId。
	 * 	2.更新父任务类型为startTrans,这类任务在查询是不可见,并且检查不能执行。
	 * 	3.在bpm_task_trans表中添加一条记录,添加会签规则。
	 * 	4.根据通知类型发送通知。
	 * 
* @param opinion * @param notifyType * void * @throws IOException */ void addTransTask(TaskTrans taskTrans, List listUsers, String notifyType, String opinion,String formData,String files,Boolean addSignUser) throws Exception; /** * 获取流转信息 * @param taskId * @return */ TaskTrans getTransTaskByTaskId(String taskId); CommonResult addSign(TaskTransParamObject taskTransParamObject) throws Exception; /** * 征询设置 * @param taskTrans * @param listUsers * @param notifyType * @param opinion * @param files * @throws Exception */ void addTaskToInqu(TaskTrans taskTrans, List listUsers, String notifyType, String opinion, String files) throws Exception; /** * 添加并行审批任务 * @param taskTrans * @param listUsers * @param notifyType * @param opinion * @throws Exception */ void addApproveLineTask(TaskTrans taskTrans, List listUsers, String notifyType, String opinion) throws Exception; void addSignSequenceTask(BpmTaskTrans taskTrans, List userList, String notifyType, String opinion) throws Exception; /** * 并行审批任务撤回 * @param bpmTask * @param user * @param messageType * @throws Exception */ void addRevokeTask(DefaultBpmTask bpmTask, IUser user,String messageType) throws Exception; /** * 撤销我的流转出去任务。 *
	 * 	1.根据当前任务查找下面的所有子任务。
	 * 	2.删除这些子任务并给子任务人员发送给通知。
	 * 	3.将当前任务修改状态。
	 * 		普通任务修改为normal。
	 * 		流转任务修改为transformed.
	 * 
* @param taskId * @param opinion * void */ void withDraw(String taskId,String notifyType,String opinion,String msgTemplate) throws Exception; void revokeSignSequence(RevokeTransParamObject revokeTransParamObject) throws IOException, Exception; /** * 发起并行审批签署 * @param taskTrans * @param userList * @param notifyType * @param opinion * @throws Exception */ void addSignLineTask(BpmTaskTrans taskTrans, List userList, String notifyType, String opinion) throws Exception; void revokeSignLine(RevokeSignLineParamObject revokeParamObject) throws Exception; void addCheckOpinion(DefaultBpmTask bpmTask, OpinionStatus opinionStatus, String transUser, String opinion, boolean isCompleted) throws Exception; void addTransTask(BpmTaskTrans taskTrans, List userList, String notifyType, String opinion, String files) throws Exception; /** * 通过实例获取流转任务 * @param instId * @return */ List getByInstId(String instId); }