update - 处理转交/加签的节点下,在审批日志中展示的人和数量异常的问题
This commit is contained in:
parent
2f0a0dd84b
commit
b336828207
@ -29,6 +29,7 @@ public interface BpmnConstants {
|
||||
@Deprecated
|
||||
String OLD_INTERNAL_TASK_RELATION_ASSIGNEE_INFO_SNAPSHOT = "[_ASSIGNEE_INFO_SNAPSHOT_]";
|
||||
String INTERNAL_ACTIVITY_RELATION_ASSIGNEE_LIST_INFO_SNAPSHOT = "[_ACTIVITY_INFO_SNAPSHOT_]";
|
||||
String INTERNAL_ACTIVITY_RELATION_ASSIGNEE_LIST_INFO_REALTIME = "[_ACTIVITY_INFO_REALTIME_]";
|
||||
String COUNTERSIGN_REMAIN_ASSIGNER_LIST = "[_COUNTERSIGN_REMAIN_ASSIGNER_LIST_]";
|
||||
String COUNTERSIGN_ORIGIN_ASSIGNER = "[_COUNTERSIGN_ORIGIN_ASSIGNER_]";
|
||||
|
||||
|
||||
@ -48,7 +48,7 @@ public class BpmnTaskCountersignDTO implements Serializable {
|
||||
|
||||
|
||||
@ApiModelProperty(value = "加签任务转发给谁")
|
||||
@NotNull(message = "加签任务接收人不能为空")
|
||||
@NotEmpty(message = "加签任务接收人不能为空")
|
||||
private List<BpmnTaskDelegateAssigner> targetAssignerList;
|
||||
|
||||
@ApiModelProperty(value = "加签任务原发起人")
|
||||
|
||||
@ -428,6 +428,28 @@ public class BpmnProcessTaskServiceImpl implements BpmnProcessTaskService {
|
||||
}
|
||||
}
|
||||
|
||||
private void createSignSubTasksV2(BpmnTaskCountersignDTO countersignDTO, TaskEntity taskEntity) {
|
||||
// 这个节点下所有审批人快照
|
||||
String activityListSnapshot =
|
||||
INTERNAL_ACTIVITY_RELATION_ASSIGNEE_LIST_INFO_SNAPSHOT + taskEntity.getTaskDefinitionKey();
|
||||
List<BpmnTaskDelegateAssigner> taskAssignerListSnapshot =
|
||||
runtimeService.getVariable(taskEntity.getProcessInstanceId(),
|
||||
activityListSnapshot, List.class);
|
||||
taskAssignerListSnapshot.addAll(countersignDTO.getTargetAssignerList());
|
||||
runtimeService.setVariable(taskEntity.getProcessInstanceId(), activityListSnapshot, taskAssignerListSnapshot);
|
||||
log.info("正在进行加签任务:{},待加签人合并列表:{}", taskEntity.getId(), JSONUtil.toJsonStr(taskAssignerListSnapshot));
|
||||
|
||||
// 因为当前的审批人会帮他结束任务,以便生成加签日志, 所以在这里重新加入审批人
|
||||
countersignDTO.getTargetAssignerList().add(countersignDTO.getOriginAssigner());
|
||||
countersignDTO.getTargetAssignerList().forEach(assigner -> {
|
||||
String parentTaskId = taskEntity.getParentTaskId();
|
||||
if (!StringUtils.hasLength(parentTaskId)) {
|
||||
parentTaskId = taskEntity.getId();
|
||||
}
|
||||
this.createSubTask(taskEntity, parentTaskId, assigner);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建子任务
|
||||
*
|
||||
@ -438,39 +460,42 @@ public class BpmnProcessTaskServiceImpl implements BpmnProcessTaskService {
|
||||
protected void createSubTask(TaskEntity parentTask, String parentTaskId, BpmnTaskDelegateAssigner assigner) {
|
||||
if (parentTask != null) {
|
||||
//1.生成新的工作流子任务
|
||||
// IdGenerator idGenerator = springProcessEngineConfiguration.getIdGenerator();
|
||||
// task = (TaskEntity) taskService.newTask(idGenerator.getNextId());
|
||||
// task.setCategory(parentTask.getCategory());
|
||||
// task.setDescription(parentTask.getDescription());
|
||||
// task.setTenantId(parentTask.getTenantId());
|
||||
// task.setName(parentTask.getName());
|
||||
// task.setAssignee(assigner.buildAssigneeId());
|
||||
// task.setParentTaskId(parentTaskId);
|
||||
// task.setProcessDefinitionId(parentTask.getProcessDefinitionId());
|
||||
// task.setProcessInstanceId(parentTask.getProcessInstanceId());
|
||||
// task.setTaskDefinitionKey(parentTask.getTaskDefinitionKey());
|
||||
// task.setTaskDefinitionId(parentTask.getTaskDefinitionId());
|
||||
// task.setPriority(parentTask.getPriority());
|
||||
// task.setCreateTime(new Date());
|
||||
// IdGenerator idGenerator = springProcessEngineConfiguration.getIdGenerator();
|
||||
// task = (TaskEntity) taskService.newTask(idGenerator.getNextId());
|
||||
// task.setCategory(parentTask.getCategory());
|
||||
// task.setDescription(parentTask.getDescription());
|
||||
// task.setTenantId(parentTask.getTenantId());
|
||||
// task.setName(parentTask.getName());
|
||||
// task.setAssignee(assigner.buildAssigneeId());
|
||||
// task.setParentTaskId(parentTaskId);
|
||||
// task.setProcessDefinitionId(parentTask.getProcessDefinitionId());
|
||||
// task.setProcessInstanceId(parentTask.getProcessInstanceId());
|
||||
// task.setTaskDefinitionKey(parentTask.getTaskDefinitionKey());
|
||||
// task.setTaskDefinitionId(parentTask.getTaskDefinitionId());
|
||||
// task.setPriority(parentTask.getPriority());
|
||||
// task.setCreateTime(new Date());
|
||||
|
||||
Map<String, Object> executionVariables = new HashMap<>();
|
||||
executionVariables.put("assigneeName", assigner.buildAssigneeId());
|
||||
// Execution execution = runtimeService.executeActivityInAdhocSubProcess(parentTask.getExecutionId(), parentTask.getTaskDefinitionKey());
|
||||
Execution subExecution = runtimeService.addMultiInstanceExecution(parentTask.getTaskDefinitionKey(), parentTask.getProcessInstanceId(), executionVariables);
|
||||
// Execution execution = runtimeService.executeActivityInAdhocSubProcess(parentTask
|
||||
// .getExecutionId(), parentTask.getTaskDefinitionKey());
|
||||
Execution subExecution = runtimeService.addMultiInstanceExecution(parentTask.getTaskDefinitionKey(),
|
||||
parentTask.getProcessInstanceId(), executionVariables);
|
||||
Task subTask = taskService.createTaskQuery().executionId(subExecution.getId()).singleResult();
|
||||
subTask.setParentTaskId(parentTaskId);
|
||||
taskService.saveTask(subTask);
|
||||
// ExecutionEntity concurrentExecution = CommandContextUtil.getExecutionEntityManager()
|
||||
// .createChildExecution((ExecutionEntity) multiInstanceRootExecution);
|
||||
// Execution subExecution = runtimeService.createExecutionQuery()
|
||||
// .parentId(parentTask.getExecutionId()) // 将新执行实例设置为当前执行实例的子实例
|
||||
// .activityId(parentTask.getTaskDefinitionKey()) // 指定活动ID
|
||||
// .singleResult();
|
||||
// task.setExecutionId(subExecution.getId());
|
||||
// ExecutionEntity concurrentExecution = CommandContextUtil.getExecutionEntityManager()
|
||||
// .createChildExecution((ExecutionEntity) multiInstanceRootExecution);
|
||||
// Execution subExecution = runtimeService.createExecutionQuery()
|
||||
// .parentId(parentTask.getExecutionId()) // 将新执行实例设置为当前执行实例的子实例
|
||||
// .activityId(parentTask.getTaskDefinitionKey()) // 指定活动ID
|
||||
// .singleResult();
|
||||
// task.setExecutionId(subExecution.getId());
|
||||
log.info("流程加签父任务:{},", parentTaskId);
|
||||
// taskService.saveTask(task);
|
||||
// taskService.saveTask(task);
|
||||
|
||||
// springProcessEngineConfiguration.getCommandExecutor().execute(new CustomEventAssignment(parentTask.getProcessDefinitionId(), parentTask.getTaskDefinitionKey(), task));
|
||||
// springProcessEngineConfiguration.getCommandExecutor().execute(new CustomEventAssignment
|
||||
// (parentTask.getProcessDefinitionId(), parentTask.getTaskDefinitionKey(), task));
|
||||
}
|
||||
}
|
||||
|
||||
@ -637,7 +662,9 @@ public class BpmnProcessTaskServiceImpl implements BpmnProcessTaskService {
|
||||
|
||||
BpmnTaskDelegateAssigner assigner = Objects.nonNull(assginerSnapshot) ?
|
||||
(BpmnTaskDelegateAssigner) assginerSnapshot.getValue() : null;
|
||||
vo.setAssignee(Objects.isNull(assigner) ? "" : assigner.getAssignee());
|
||||
if (!Objects.equals(TASK_ASSIGNEE_SKIP_FLAT, vo.getAssignee())) {
|
||||
vo.setAssignee(Objects.isNull(assigner) ? "" : assigner.getAssignee());
|
||||
}
|
||||
vo.setAssigneeSnapshot(assigner);
|
||||
}
|
||||
return vos;
|
||||
@ -829,7 +856,7 @@ public class BpmnProcessTaskServiceImpl implements BpmnProcessTaskService {
|
||||
//该父任务加签时,会创建子任务用于分配给其他人加签
|
||||
//目前多个子任务时,会按照加签人的顺序依次进行加签操作,
|
||||
//例如 加签按顺序依次分配给A、B、C三人,需A任务进行完成后,进行B任务、再进行C任务
|
||||
this.createSignSubTasks(dto, (TaskEntity) task);
|
||||
this.createSignSubTasksV2(dto, (TaskEntity) task);
|
||||
} else {
|
||||
throw new WorkflowEngineException(TASK_APOSTILLE_NOT_SUPPORT);
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user