feat - 测试前加签代码逻辑

This commit is contained in:
wangli 2025-10-17 16:26:22 +08:00
parent c8238ba1ba
commit 565e6d320d

View File

@ -8,7 +8,6 @@ import cn.axzo.workflow.common.enums.BpmnFlowNodeType;
import cn.axzo.workflow.common.exception.WorkflowEngineException;
import cn.axzo.workflow.common.model.request.bpmn.BpmnJsonNode;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner;
import cn.hutool.core.lang.UUID;
import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j;
import org.flowable.bpmn.model.ExtensionAttribute;
@ -23,6 +22,7 @@ import org.flowable.engine.impl.bpmn.parser.factory.ActivityBehaviorFactory;
import org.flowable.engine.impl.cfg.ProcessEngineConfigurationImpl;
import org.springframework.util.StringUtils;
import java.util.Collections;
import java.util.List;
import static cn.axzo.workflow.common.code.ConvertorRespCode.CREATE_BPMN_PRE_SIGN_ERROR;
@ -36,6 +36,8 @@ import static cn.axzo.workflow.common.constant.BpmnConstants.ELEMENT_ATTRIBUTE_D
import static cn.axzo.workflow.common.constant.BpmnConstants.ELEMENT_ATTRIBUTE_VALUE;
import static cn.axzo.workflow.common.constant.BpmnConstants.INTERNAL_TASK_RELATION_ASSIGNEE_LIST_INFO;
import static cn.axzo.workflow.common.constant.BpmnConstants.OR_SIGN_EXPRESSION_ONLY_ONE;
import static cn.axzo.workflow.common.constant.BpmnConstants.SEQUENCE_FLOW_ID;
import static cn.axzo.workflow.core.common.utils.BpmnJsonConverterUtil.id;
import static cn.axzo.workflow.core.converter.json.UserTaskJsonConverter.setExecutionListeners;
import static cn.axzo.workflow.core.converter.json.UserTaskJsonConverter.setTaskListeners;
@ -167,12 +169,19 @@ public class CustomBpmnModelHelper {
incomingFlow.setTargetRef(newUserTask.getId());
// 如果需要也可以更新FlowElement中的引用但通常改TargetRef即可
}
newUserTask.setIncomingFlows(incomingFlows);
// 3. 创建一个新的顺序流 newUserTask 指向 originalUserTask
SequenceFlow newSequenceFlow = new SequenceFlow();
newSequenceFlow.setId("pre_sign_dynamic" + UUID.fastUUID());
newSequenceFlow.setId(id(SEQUENCE_FLOW_ID + "_PreSign"));
newSequenceFlow.setSourceRef(newUserTask.getId());
newSequenceFlow.setSourceFlowElement(newUserTask);
newSequenceFlow.setTargetRef(originalUserTask.getId());
newSequenceFlow.setTargetFlowElement(originalUserTask);
newUserTask.setOutgoingFlows(Collections.singletonList(newSequenceFlow));
process.addFlowElement(newSequenceFlow);
originalUserTask.setIncomingFlows(Collections.singletonList(newSequenceFlow));
}
}