fix(流程设计): 移除第一个任务节点必须为申请人的限制。(第一个任务节点为发起人自动完成,否则不处理)

This commit is contained in:
konbai
2022-10-09 23:27:54 +08:00
parent 4d90e375bb
commit f935bec5fe
2 changed files with 7 additions and 8 deletions

View File

@@ -157,7 +157,7 @@ public class WfProcessServiceImpl extends FlowServiceFactory implements IWfProce
// 设置流程发起人Id到流程中
this.buildProcessVariables(variables);
ProcessInstance processInstance = runtimeService.startProcessInstanceById(procDefId, variables);
// 第一步申请人节点设置任务执行人和意见 todo:第一个节点不设置为申请人节点有点问题?
// 第一个用户任务为发起人,则自动完成任务
wfTaskService.startFirstTask(processInstance, variables);
} catch (Exception e) {
e.printStackTrace();

View File

@@ -673,16 +673,15 @@ public class WfTaskServiceImpl extends FlowServiceFactory implements IWfTaskServ
*/
@Override
public void startFirstTask(ProcessInstance processInstance, Map<String, Object> variables) {
// 第一步申请人节点设置任务执行人和意见 todo:第一个节点不设置为申请人节点有点问题?
// 第一个用户任务为发起人,则自动完成任务
Task task = taskService.createTaskQuery().processInstanceId(processInstance.getProcessInstanceId()).singleResult();
if (Objects.nonNull(task)) {
if (ObjectUtil.isNotEmpty(task)) {
String userIdStr = (String) variables.get(TaskConstants.PROCESS_INITIATOR);
if (!StrUtil.equalsAny(task.getAssignee(), userIdStr)) {
throw new ServiceException("数据验证失败,该工作流第一个用户任务的指派人并非当前用户,不能执行该操作!");
if (StrUtil.equals(task.getAssignee(), userIdStr)) {
taskService.addComment(task.getId(), processInstance.getProcessInstanceId(), FlowComment.NORMAL.getType(), LoginHelper.getNickName() + "发起流程申请");
// taskService.setAssignee(task.getId(), userIdStr);
taskService.complete(task.getId(), variables);
}
taskService.addComment(task.getId(), processInstance.getProcessInstanceId(), FlowComment.NORMAL.getType(), LoginHelper.getNickName() + "发起流程申请");
// taskService.setAssignee(task.getId(), userIdStr);
taskService.complete(task.getId(), variables);
}
}
}