001/* 002 * Copyright 2024-2025, Warm-Flow (290631660@qq.com). 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * https://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016package org.dromara.warm.flow.core.service; 017 018import org.dromara.warm.flow.core.dto.FlowParams; 019import org.dromara.warm.flow.core.dto.ModifyHandler; 020import org.dromara.warm.flow.core.entity.Definition; 021import org.dromara.warm.flow.core.entity.Instance; 022import org.dromara.warm.flow.core.entity.Node; 023import org.dromara.warm.flow.core.entity.Task; 024import org.dromara.warm.flow.core.orm.service.IWarmService; 025 026import java.util.List; 027 028/** 029 * 待办任务Service接口 030 * 031 * @author warm 032 * @since 2023-03-29 033 */ 034public interface TaskService extends IWarmService<Task> { 035 036 /** 037 * 根据任务id,流程跳转 038 * 039 * @param taskId:流程任务id[必传] 040 * @param flowParams:包含流程相关参数的对象 - skipType: 跳转类型(PASS审批通过 REJECT退回) [必传] 041 * - nodeCode: 如果指定节点,可任意跳转到对应节点 [按需传输] 042 * - permissionFlag: 办理人权限标识,比如用户,角色,部门等,未设置办理人或者ignore为true可不传 [按需传输] 043 * - message: 审批意见 [按需传输] 044 * - handler: 办理人唯一标识 [建议传] 045 * - variable: 流程变量 [按需传输,跳转条件放入流程变量<互斥网关必传>] 046 * - flowStatus: 流程状态,自定义流程状态 [按需传输] 047 * - ignore 转办忽略权限校验,默认不忽略(true:忽略,false:不忽略)[按需传输] 048 */ 049 Instance skip(Long taskId, FlowParams flowParams); 050 051 /** 052 * 流程跳转 053 * 054 * @param flowParams:包含流程相关参数的对象 - skipType: 跳转类型(PASS审批通过 REJECT退回) [必传] 055 * - nodeCode: 如果指定节点,可任意跳转到对应节点 [按需传输] 056 * - permissionFlag: 办理人权限标识,比如用户,角色,部门等,未设置办理人或者ignore为true可不传 [按需传输] 057 * - message: 审批意见 [按需传输] 058 * - handler: 办理人唯一标识 [建议传] 059 * - variable: 流程变量 [按需传输,跳转条件放入流程变量<互斥网关必传>] 060 * - flowStatus: 流程状态,自定义流程状态 [按需传输] 061 * - ignore 转办忽略权限校验,默认不忽略(true:忽略,false:不忽略)[按需传输] 062 * @param task:流程任务[必传] 063 */ 064 Instance skip(FlowParams flowParams, Task task); 065 066 /** 067 * 终止流程,提前结束流程,将所有待办任务转历史 068 * 069 * @param taskId: 流程任务id [必传] 070 * @param flowParams:包含流程相关参数的对象 - message: 审批意见 [按需传输] 071 * - handler: 办理人唯一标识 [建议传] 072 * - flowStatus: 流程状态,自定义流程状态 [按需传输] 073 * - ignore 转办忽略权限校验,默认不忽略(true:忽略,false:不忽略)[按需传输] 074 */ 075 Instance termination(Long taskId, FlowParams flowParams); 076 077 /** 078 * 终止流程,提前结束流程,将所有待办任务转历史 079 * 080 * @param task:流程任务 081 * @param flowParams:包含流程相关参数的对象 - message: 审批意见 [按需传输] 082 * - handler: 办理人唯一标识 [建议传] 083 * - flowStatus: 流程状态,自定义流程状态 [按需传输] 084 * - ignore 转办忽略权限校验,默认不忽略(true:忽略,false:不忽略)[按需传输] 085 */ 086 Instance termination(Task task, FlowParams flowParams); 087 088 /** 089 * 根据instanceIds删除 090 * 091 * @param instanceIds 流程实例id集合 092 * @return boolean 093 */ 094 boolean deleteByInsIds(List<Long> instanceIds); 095 096 /** 097 * 转办, 默认删除当然办理用户权限,转办后,当前办理不可办理 098 * 099 * @param taskId 修改的任务id [必传] 100 * @param flowParams:包含流程相关参数的对象 - handler 当前办理人唯一标识,代替老版本的curUser [必传] 101 * - permissionFlag 用户权限标识集合 [必传] 102 * - addHandlers 转办对象 [必传] 103 * - message 审批意见 [按需传输] 104 * - ignore 转办忽略权限校验,默认不忽略(true:忽略,false:不忽略)[按需传输] 105 */ 106 boolean transfer(Long taskId, FlowParams flowParams); 107 108 /** 109 * 转办, 默认删除当然办理用户权限,转办后,当前办理不可办理 110 * 111 * @param taskId 修改的任务id 112 * @param curUser 当前办理人唯一标识 113 * @param permissionFlag 用户权限标识集合 114 * @param addHandlers 增加办理人:加签,转办,委托 115 * @param message 审批意见 116 * @deprecated 1.3.3版本弃用 117 */ 118 @Deprecated 119 boolean transfer(Long taskId, String curUser, List<String> permissionFlag, List<String> addHandlers, String message); 120 121 /** 122 * 委派, 默认删除当然办理用户权限,委派后,当前办理不可办理 123 * 124 * @param taskId 修改的任务id [必传] 125 * @param flowParams:包含流程相关参数的对象 - handler 当前办理人唯一标识,代替老版本的curUser [必传] 126 * - permissionFlag 用户权限标识集合 [必传] 127 * - addHandlers 委托对象 [必传] 128 * - message 审批意见 [按需传输] 129 * - ignore 转办忽略权限校验,默认不忽略(true:忽略,false:不忽略)[按需传输] 130 */ 131 boolean depute(Long taskId, FlowParams flowParams); 132 133 /** 134 * 委派, 默认删除当然办理用户权限,委派后,当前办理不可办理 135 * 136 * @param taskId 修改的任务id 137 * @param curUser 当前办理人唯一标识 138 * @param permissionFlag 用户权限标识集合 139 * @param addHandlers 增加办理人:加签,转办,委托 140 * @param message 审批意见 141 * @deprecated 1.3.3版本弃用 142 */ 143 @Deprecated 144 boolean depute(Long taskId, String curUser, List<String> permissionFlag, List<String> addHandlers, String message); 145 146 /** 147 * 加签,增加办理人 148 * 149 * @param taskId 修改的任务id [必传] 150 * @param flowParams:包含流程相关参数的对象 - handler 当前办理人唯一标识,代替老版本的curUser [必传] 151 * - permissionFlag 用户权限标识集合 [必传] 152 * - addHandlers 加签对象 [必传] 153 * - message 审批意见 [按需传输] 154 * - ignore 转办忽略权限校验,默认不忽略(true:忽略,false:不忽略)[按需传输] 155 */ 156 boolean addSignature(Long taskId, FlowParams flowParams); 157 158 /** 159 * 加签,增加办理人 160 * 161 * @param taskId 修改的任务id 162 * @param curUser 当前办理人唯一标识 163 * @param permissionFlag 用户权限标识集合 164 * @param addHandlers 增加办理人:加签,转办,委托 165 * @param message 审批意见 166 * @deprecated 1.3.3版本弃用 167 */ 168 @Deprecated 169 boolean addSignature(Long taskId, String curUser, List<String> permissionFlag, List<String> addHandlers, String message); 170 171 /** 172 * 减签,减少办理人 173 * 174 * @param taskId 修改的任务id [必传] 175 * @param flowParams:包含流程相关参数的对象 - handler 当前办理人唯一标识,代替老版本的curUser [必传] 176 * - permissionFlag 用户权限标识集合 [必传] 177 * - reductionHandlers 减少办理人 [必传] 178 * - message 审批意见 [按需传输] 179 * - ignore 转办忽略权限校验,默认不忽略(true:忽略,false:不忽略)[按需传输] 180 */ 181 boolean reductionSignature(Long taskId, FlowParams flowParams); 182 183 /** 184 * 减签,减少办理人 185 * 186 * @param taskId 修改的任务id 187 * @param curUser 当前办理人唯一标识 188 * @param permissionFlag 用户权限标识集合 189 * @param reductionHandlers 减少办理人 190 * @param message 审批意见 191 * @deprecated 1.3.3版本弃用 192 */ 193 @Deprecated 194 boolean reductionSignature(Long taskId, String curUser, List<String> permissionFlag, List<String> reductionHandlers, String message); 195 196 /** 197 * 修改办理人 198 * 199 * @param taskId 修改的任务id [必传] 200 * @param flowParams:包含流程相关参数的对象 - handler 当前办理人唯一标识,代替老版本的curUser [必传] 201 * - permissionFlag: 用户所拥有的权限标识[按需传输,ignore为false,则必传] 202 * - addHandlers: 增加办理人:加签,转办,委托[按需传输] 203 * - reductionHandlers: 减少办理人:减签,委托[按需传输] 204 * - message: 审批意见[按需传输] 205 * - cooperateType: 协作方式(2转办 3委派 6加签 7减签)[按需传输] 206 * - ignore: 转办忽略权限校验,默认忽略(true:忽略,false:不忽略)[按需传输] 207 */ 208 boolean updateHandler(Long taskId, FlowParams flowParams); 209 210 /** 211 * 修改办理人 212 * @param modifyHandler: 修改办理人参数的对象 - taskId:修改的任务id[必传] 213 * - curUser:办理人唯一标识[按需传输] 214 * - ignore: 转办忽略权限校验(true:忽略,false:不忽略)[按需传输] 215 * - permissionFlag: 用户所拥有的权限标识[按需传输,ignore为false,则必传] 216 * - addHandlers: 增加办理人:加签,转办,委托[按需传输] 217 * - reductionHandlers: 减少办理人:减签,委托[按需传输] 218 * - message: 审批意见[按需传输] 219 * - cooperateType: 协作方式(1审批 2转办 3委派 4会签 5票签 6加签 7减签)[按需传输] 220 * @deprecated 1.3.3版本弃用 221 */ 222 @Deprecated 223 boolean updateHandler(ModifyHandler modifyHandler); 224 225 /** 226 * 取回 227 * 228 * @param instanceId 实例id [必传] 229 * @param flowParams handler: 当前处理人 [必传] 230 * nodeCode: 取回到的节点编码,如果为空,则默认取回到开始节点 [按需传输] 231 * flowStatus: 自定义流程状态 [按需传输] 232 * hisStatus: 自定义历史任务状态 [按需传输] 233 * hisTaskExt: 业务详情扩展字段 [按需传输] 234 * message: 审批意见 [按需传输] 235 * @return Instance 流程实例 236 * @author xiarg 237 * @since 2024/9/22 13:59 238 */ 239 Instance retrieve(Long instanceId, FlowParams flowParams); 240 241 /** 242 * 设置流程待办任务对象 243 * 244 * @param node 节点 245 * @param instance 流程实例 246 * @param flowParams 流程参数 247 * @return Task 248 */ 249 Task addTask(Node node, Instance instance, Definition definition, FlowParams flowParams); 250 251 /** 252 * 设置流程实例和代码任务流程状态 253 * 254 * @param nodeType 节点类型(开始节点、中间节点、结束节点) 255 * @param skipType 流程条件 256 */ 257 String setFlowStatus(Integer nodeType, String skipType); 258 259 /** 260 * 并行网关,取结束节点类型,否则随便取id最大的 261 * 262 * @param tasks 任务列表 263 * @return Task 264 */ 265 Task getNextTask(List<Task> tasks); 266 267 268}