Merge branch 'feature/REQ-1309' into dev
This commit is contained in:
commit
013463bb5f
@ -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;
|
||||
}
|
||||
|
||||
@ -29,6 +29,7 @@ public class BpmnTaskInstanceVO {
|
||||
@ApiModelProperty(value = "任务归属人")
|
||||
private String owner;
|
||||
@ApiModelProperty(value = "任务审批人")
|
||||
// TODO 调整审批人
|
||||
private String assignee;
|
||||
@ApiModelProperty(value = "任务创建时间")
|
||||
private Date createTime;
|
||||
|
||||
@ -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()) {
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user