Merge branch 'feature/REQ-1309' into dev

This commit is contained in:
wangli 2023-10-07 19:10:37 +08:00
commit 013463bb5f
5 changed files with 19 additions and 15 deletions

View File

@ -63,7 +63,7 @@ public class BpmnTaskDelegateAssigner implements Serializable {
@NotBlank(message = "租户不能为空")
private String tenantId;
public String getAssigneeId() {
public String buildAssigneeId() {
if (StringUtils.hasLength(assigneeType)) {
return assignee + "_" + assigneeType;
}

View File

@ -29,6 +29,7 @@ public class BpmnTaskInstanceVO {
@ApiModelProperty(value = "任务归属人")
private String owner;
@ApiModelProperty(value = "任务审批人")
// TODO 调整审批人
private String assignee;
@ApiModelProperty(value = "任务创建时间")
private Date createTime;

View File

@ -20,7 +20,10 @@ import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import static cn.axzo.workflow.common.constant.BpmConstants.*;
import static cn.axzo.workflow.common.constant.BpmConstants.BPM_ALLOW_SKIP_USER_TASK;
import static cn.axzo.workflow.common.constant.BpmConstants.INTERNAL_SPECIFY_NEXT_APPROVER;
import static cn.axzo.workflow.common.constant.BpmConstants.INTERNAL_TASK_RELATION_ASSIGNEE_INFO;
import static cn.axzo.workflow.common.constant.BpmConstants.INTERNAL_TASK_RELATION_ASSIGNEE_INFO_SNAPSHOT;
/**
@ -62,7 +65,7 @@ public class EngineExecutionStartListener implements ExecutionListener {
List<String> assigneeIdList = new ArrayList<>();
if (!CollectionUtils.isEmpty(assigners)) {
for (BpmnTaskDelegateAssigner user : assigners) {
assigneeIdList.add(user.getAssigneeId());
assigneeIdList.add(user.buildAssigneeId());
}
if (!userTask.hasMultiInstanceLoopCharacteristics()) {

View File

@ -253,7 +253,7 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic
// 创建流程实例
// 设置流程实例的开始人参考https://wenku.baidu.com/view/5538062e7a563c1ec5da50e2524de518964bd3f9.html
Authentication.setAuthenticatedUserId(dto.getInitiator().getAssigneeId());
Authentication.setAuthenticatedUserId(dto.getInitiator().buildAssigneeId());
String name = StringUtils.isNotBlank(dto.getCustomProcessInstanceName()) ?
dto.getCustomProcessInstanceName()
: definition.getName();
@ -284,7 +284,7 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic
// 创建流程实例
// 设置流程实例的开始人参考https://wenku.baidu.com/view/5538062e7a563c1ec5da50e2524de518964bd3f9.html
Authentication.setAuthenticatedUserId(dto.getInitiator().getAssigneeId());
Authentication.setAuthenticatedUserId(dto.getInitiator().buildAssigneeId());
String name = StringUtils.isNotBlank(dto.getCustomProcessInstanceName()) ?
dto.getCustomProcessInstanceName()
: definition.getName();
@ -312,7 +312,7 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic
if (instance == null) {
throw new WorkflowEngineException(PROCESS_INSTANCE_CANCEL_FAIL_NOT_EXISTS);
}
if (!Objects.equals(instance.getStartUserId(), dto.getInitiator().getAssigneeId())) {
if (!Objects.equals(instance.getStartUserId(), dto.getInitiator().buildAssigneeId())) {
throw new WorkflowEngineException(PROCESS_INSTANCE_CANCEL_FAIL_NOT_SELF);
}
if (Objects.nonNull(instance.getEndTime()) && Objects.equals(BpmProcessInstanceResultEnum.CANCELLED.getStatus(), instance.getBusinessStatus())) {
@ -321,7 +321,7 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic
Map<String, Object> variables = new HashMap<>();
variables.put(INTERNAL_END_TENANT_ID, dto.getInitiator().getTenantId());
variables.put(INTERNAL_END_USER_ID, dto.getInitiator().getAssigneeId());
variables.put(INTERNAL_END_USER_ID, dto.getInitiator().buildAssigneeId());
variables.put(INTERNAL_END_USER_NAME, dto.getInitiator().getAssignerName());
variables.put(INTERNAL_DELETE_PROCESS_FLAG, INTERNAL_PROCESS_TYPE_CANCEL);
runtimeService.setVariables(instance.getId(), variables);

View File

@ -286,7 +286,7 @@ public class BpmnTaskServiceImpl implements BpmnTaskService {
@Override
public void approveTask(BpmnTaskAuditDTO dto) {
// 校验任务存在
Task task = checkTask(dto.getApprover().getTenantId(), dto.getApprover().getAssigneeId(), dto.getTaskId());
Task task = checkTask(dto.getApprover().getTenantId(), dto.getApprover().buildAssigneeId(), dto.getTaskId());
// 校验流程实例存在
HistoricProcessInstance instance = processInstanceService.getProcessInstance(
task.getProcessInstanceId(), dto.getApprover().getTenantId(), true);
@ -295,7 +295,7 @@ public class BpmnTaskServiceImpl implements BpmnTaskService {
}
if (StringUtils.hasLength(dto.getAdvice())) {
Authentication.setAuthenticatedUserId(dto.getApprover().getAssigneeId());
Authentication.setAuthenticatedUserId(dto.getApprover().buildAssigneeId());
taskService.addComment(dto.getTaskId(), instance.getId(), COMMENT_TYPE_ADVICE, dto.getAdvice());
}
runtimeService.setVariable(task.getExecutionId(), INTERNAL_SPECIFY_NEXT_APPROVER, dto.getNextApprover());
@ -309,7 +309,7 @@ public class BpmnTaskServiceImpl implements BpmnTaskService {
@Transactional(rollbackFor = Exception.class)
public void rejectTask(BpmnTaskAuditDTO dto) {
// 校验任务存在
Task task = checkTask(dto.getApprover().getTenantId(), dto.getApprover().getAssigneeId(), dto.getTaskId());
Task task = checkTask(dto.getApprover().getTenantId(), dto.getApprover().buildAssigneeId(), dto.getTaskId());
// 校验流程实例存在
HistoricProcessInstance instance = processInstanceService.getProcessInstance(
@ -319,7 +319,7 @@ public class BpmnTaskServiceImpl implements BpmnTaskService {
throw new WorkflowEngineException(PROCESS_INSTANCE_NOT_EXISTS);
}
if (StringUtils.hasLength(dto.getAdvice())) {
Authentication.setAuthenticatedUserId(dto.getApprover().getAssigneeId());
Authentication.setAuthenticatedUserId(dto.getApprover().buildAssigneeId());
taskService.addComment(dto.getTaskId(), instance.getId(), COMMENT_TYPE_ADVICE, dto.getAdvice());
}
// 多实例
@ -358,7 +358,7 @@ public class BpmnTaskServiceImpl implements BpmnTaskService {
Map<String, Object> variables = new HashMap<>();
variables.put(INTERNAL_END_TENANT_ID, dto.getApprover().getTenantId());
variables.put(INTERNAL_END_USER_NAME, dto.getApprover().getAssignerName());
variables.put(INTERNAL_END_USER_ID, dto.getApprover().getAssigneeId());
variables.put(INTERNAL_END_USER_ID, dto.getApprover().buildAssigneeId());
variables.put(INTERNAL_DELETE_PROCESS_FLAG, INTERNAL_PROCESS_TYPE_REJECT);
runtimeService.setVariables(instance.getId(), variables);
@ -528,7 +528,7 @@ public class BpmnTaskServiceImpl implements BpmnTaskService {
throw new WorkflowEngineException(TASK_COMPLETE_FAIL_NOT_EXISTS);
}
if ((StringUtils.hasLength(task.getAssignee()) && Objects.isNull(dto.getOriginAssigner()))
|| !Objects.equals(task.getAssignee(), dto.getOriginAssigner().getAssigneeId())) {
|| !Objects.equals(task.getAssignee(), dto.getOriginAssigner().buildAssigneeId())) {
throw new WorkflowEngineException(TASK_COMPLETE_FAIL_ASSIGN_NOT_SELF);
}
@ -544,12 +544,12 @@ public class BpmnTaskServiceImpl implements BpmnTaskService {
dto.getTargetAssigner());
runtimeService.setVariable(task.getProcessInstanceId(),
INTERNAL_TASK_RELATION_ASSIGNEE_INFO + task.getTaskDefinitionKey(),
dto.getTargetAssigner().getAssigneeId());
dto.getTargetAssigner().buildAssigneeId());
runtimeService.setVariable(task.getProcessInstanceId(),
INTERNAL_TASK_RELATION_ASSIGNEE_INFO_SNAPSHOT + task.getTaskDefinitionKey(),
dto.getTargetAssigner());
taskService.setAssignee(task.getId(), dto.getTargetAssigner().getAssigneeId());
taskService.setAssignee(task.getId(), dto.getTargetAssigner().buildAssigneeId());
}
}