update - 添加测试逻辑

This commit is contained in:
wangli 2023-11-27 20:44:07 +08:00
parent 93cd2b45b6
commit cb18b8aa39
5 changed files with 71 additions and 15 deletions

View File

@ -28,6 +28,7 @@ public class FlowableConfiguration {
ObjectProvider<FlowableEventListener> listeners,
CustomActivityBehaviorFactory customActivityBehaviorFactory) {
return configuration -> {
configuration.setEnableHistoricTaskLogging(true);
configuration.setHistoryLevel(HistoryLevel.AUDIT);
configuration.setHistory(HistoryLevel.AUDIT.getKey());
configuration.setEventListeners(Lists.newArrayList(listeners));

View File

@ -1,12 +1,12 @@
package cn.axzo.workflow.core.deletage;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner;
import cn.axzo.workflow.core.deletage.BpmnTaskAssigneeSelector;
import org.flowable.bpmn.model.UserTask;
import org.flowable.engine.delegate.DelegateExecution;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
/**
* 开发阶段的模拟审批人查询
@ -24,6 +24,51 @@ public class MockTaskAssigneeSelector implements BpmnTaskAssigneeSelector {
@Override
public List<BpmnTaskDelegateAssigner> select(UserTask userTask, DelegateExecution execution) {
List<BpmnTaskDelegateAssigner> users = new ArrayList<>();
// 一级审批
if (Objects.equals(userTask.getId(), "2")) {
BpmnTaskDelegateAssigner task_2 = new BpmnTaskDelegateAssigner();
task_2.setAssignee("1");
task_2.setAssignerName("王粒");
task_2.setTenantId("");
users.add(task_2);
}
// 条件 2 审批节点
if (Objects.equals(userTask.getId(), "10")) {
BpmnTaskDelegateAssigner task_10_1 = new BpmnTaskDelegateAssigner();
task_10_1.setAssignee("1");
task_10_1.setAssignerName("王粒");
task_10_1.setTenantId("");
users.add(task_10_1);
BpmnTaskDelegateAssigner task_10_2 = new BpmnTaskDelegateAssigner();
task_10_2.setAssignee("2");
task_10_2.setAssignerName("王粒");
task_10_2.setTenantId("");
users.add(task_10_2);
}
// 业务节点有审批人
if (Objects.equals(userTask.getId(), "13")) {
BpmnTaskDelegateAssigner task_13_1 = new BpmnTaskDelegateAssigner();
task_13_1.setAssignee("1");
task_13_1.setAssignerName("王粒");
task_13_1.setTenantId("");
users.add(task_13_1);
BpmnTaskDelegateAssigner task_13_2 = new BpmnTaskDelegateAssigner();
task_13_2.setAssignee("2");
task_13_2.setAssignerName("王粒");
task_13_2.setTenantId("");
users.add(task_13_2);
BpmnTaskDelegateAssigner task_13_3 = new BpmnTaskDelegateAssigner();
task_13_3.setAssignee("3");
task_13_3.setAssignerName("王粒");
task_13_3.setTenantId("");
users.add(task_13_3);
}
return users;
}
}

View File

@ -618,12 +618,17 @@ public class BpmnProcessTaskServiceImpl implements BpmnProcessTaskService {
*/
private Task checkTask(String tenantId, String assignee, String taskId) {
Task task = getTask(taskId, null, null);
if (Objects.nonNull(task) && !Objects.equals(assignee, task.getAssignee())) {
throw new WorkflowEngineException(TASK_COMPLETE_FAIL_ASSIGN_NOT_SELF);
}
if (Objects.isNull(task)) {
List<BpmnTaskDelegateAssigner> assigners = (List<BpmnTaskDelegateAssigner>) taskService.getVariable(taskId,
INTERNAL_TASK_RELATION_ASSIGNEE_LIST_INFO_SNAPSHOT + task.getTaskDefinitionKey());
if (CollectionUtils.isEmpty(assigners)) {
throw new WorkflowEngineException(TASK_COMPLETE_FAIL_NOT_EXISTS);
}
assigners.stream()
.filter(i -> Objects.equals(i.buildAssigneeId(), assignee))
.filter(i -> Objects.equals(i.getTenantId(), tenantId))
.findFirst()
.orElseThrow(() -> new WorkflowEngineException(TASK_COMPLETE_FAIL_ASSIGN_NOT_SELF));
return task;
}
@ -648,24 +653,29 @@ public class BpmnProcessTaskServiceImpl implements BpmnProcessTaskService {
}
@Override
@Transactional(rollbackFor = Exception.class)
public void assigneeTask(BpmnTaskAssigneeDTO dto) {
Task task = taskService.createTaskQuery().taskId(dto.getTaskId()).active().singleResult();
if (Objects.isNull(task)) {
throw new WorkflowEngineException(TASK_COMPLETE_FAIL_NOT_EXISTS);
}
if ((StringUtils.hasLength(task.getAssignee()) && Objects.isNull(dto.getOriginAssigner())) || !Objects.equals(task.getAssignee(), dto.getOriginAssigner().buildAssigneeId())) {
if ((StringUtils.hasLength(task.getAssignee()) && Objects.isNull(dto.getOriginAssigner()))
|| !Objects.equals(task.getAssignee(), dto.getOriginAssigner().buildAssigneeId())) {
throw new WorkflowEngineException(TASK_COMPLETE_FAIL_ASSIGN_NOT_SELF);
}
Authentication.setAuthenticatedUserId(dto.getOriginAssigner().getAssignee());
if (Objects.isNull(dto.getTargetAssigner())) {
taskService.setAssignee(task.getId(), "");
runtimeService.removeVariable(task.getProcessInstanceId(),
INTERNAL_TASK_RELATION_ASSIGNEE_INFO_SNAPSHOT + task.getId());
INTERNAL_TASK_RELATION_ASSIGNEE_INFO_SNAPSHOT + task.getTaskDefinitionKey());
} else {
runtimeService.setVariable(task.getProcessInstanceId(),
INTERNAL_TASK_RELATION_ASSIGNEE_INFO_SNAPSHOT + task.getId(), dto.getTargetAssigner());
INTERNAL_TASK_RELATION_ASSIGNEE_INFO_SNAPSHOT + task.getTaskDefinitionKey(),
dto.getTargetAssigner());
taskService.setAssignee(task.getId(), dto.getTargetAssigner().buildAssigneeId());
}
saveAttachment(dto.getAttachmentList(), task.getProcessInstanceId(), task.getId());
}
@Override
@ -731,9 +741,9 @@ public class BpmnProcessTaskServiceImpl implements BpmnProcessTaskService {
if (StringUtils.hasLength(dto.getTaskDefinitionKey())) {
taskQuery.taskDefinitionKey(dto.getTaskDefinitionKey());
}
if (StringUtils.hasLength(dto.getTenantId())) {
taskQuery.processInstanceId(dto.getTenantId());
}
// if (StringUtils.hasLength(dto.getTenantId())) {
// taskQuery.processInstanceId(dto.getTenantId());
// }
List<Task> list = taskQuery.active().list();
if (CollectionUtils.isEmpty(list)) {
throw new WorkflowEngineException(TASK_REMIND_ERROR_NOT_EXISTS);

View File

@ -132,7 +132,7 @@ public class BpmnProcessModelController implements ProcessModelApi {
@PostMapping("/deploy")
@Override
public CommonResponse<String> deployById(@NotBlank(message = "流程模型 ID 不能为空") @RequestParam(required = false) String processModelId,
@RequestParam(required = false) String modelTenantId,
@RequestParam(required = false, defaultValue = "") String modelTenantId,
@NotNull(message = "操作人不能为空") BpmnTaskDelegateAssigner operator) {
log.info("部署模型deployBpmModelById===>>>参数:{}, 租户 ID: {}, operator: {}", JSON.toJSONString(processModelId),
modelTenantId, operator);

View File

@ -17,7 +17,7 @@ spring:
logging:
level:
com.alibaba.nacos.client.config.impl: WARN
# root: debug
org.flowable: INFO
---
#开发环境
@ -71,4 +71,4 @@ spring:
config:
server-addr: ${NACOS_HOST:https://pre-nacos.axzo.cn}:${NACOS_PORT:443}
file-extension: yaml
namespace: ${NACOS_NAMESPACE_ID:8b4cf725-7595-4c92-b2a6-9260a51ce078}
namespace: ${NACOS_NAMESPACE_ID:8b4cf725-7595-4c92-b2a6-9260a51ce078}