Merge branch 'feature/countersign_ext' into dev

This commit is contained in:
wangli 2025-10-20 19:59:20 +08:00
commit c4701c1bd3

View File

@ -6,11 +6,11 @@ import cn.axzo.workflow.core.engine.cmd.helper.CustomBpmnModelHelper;
import cn.axzo.workflow.core.repository.entity.ExtAxDynamicSignRecord; import cn.axzo.workflow.core.repository.entity.ExtAxDynamicSignRecord;
import cn.axzo.workflow.core.service.ExtAxDynamicSignRecordService; import cn.axzo.workflow.core.service.ExtAxDynamicSignRecordService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.flowable.bpmn.model.BpmnModel;
import org.flowable.bpmn.model.Process; import org.flowable.bpmn.model.Process;
import org.flowable.bpmn.model.UserTask; import org.flowable.bpmn.model.UserTask;
import org.flowable.engine.RepositoryService;
import org.flowable.engine.RuntimeService; import org.flowable.engine.RuntimeService;
import org.flowable.engine.impl.persistence.deploy.DeploymentManager;
import org.flowable.engine.repository.ProcessDefinition;
import org.flowable.engine.runtime.ProcessInstance; import org.flowable.engine.runtime.ProcessInstance;
import org.flowable.spring.SpringProcessEngineConfiguration; import org.flowable.spring.SpringProcessEngineConfiguration;
import org.springframework.context.SmartLifecycle; import org.springframework.context.SmartLifecycle;
@ -83,13 +83,13 @@ public class RecoverDynamicCounterSignProcess implements SmartLifecycle {
) )
)); ));
DeploymentManager deploymentManager = springProcessEngineConfiguration.getDeploymentManager(); RepositoryService repositoryService = springProcessEngineConfiguration.getRepositoryService();
grouped.forEach((k, v) -> { grouped.forEach((k, v) -> {
if (runningProcessIds.contains(k)) { if (runningProcessIds.contains(k)) {
log.info("recover dynamic counter sign process instance id: {}", k); log.info("recover dynamic counter sign process instance id: {}", k);
BpmnModel bpmnModel = repositoryService.getBpmnModel(v.get(0).getProcessDefinitionId());
Process process = bpmnModel.getMainProcess();
ProcessDefinition processDefinitionEntity = deploymentManager.findDeployedProcessDefinitionById(v.get(0).getProcessDefinitionId());
Process process = deploymentManager.resolveProcessDefinition(processDefinitionEntity).getProcess();
v.forEach(sign -> { v.forEach(sign -> {
UserTask originalUserTask = (UserTask) process.getFlowElement(sign.getOriginalActivityId()); UserTask originalUserTask = (UserTask) process.getFlowElement(sign.getOriginalActivityId());
BpmnFlowNodeMode nodeMode = Objects.equals(originalUserTask.getLoopCharacteristics().getCompletionCondition(), AND_SIGN_EXPRESSION) ? BpmnFlowNodeMode.AND : BpmnFlowNodeMode.OR; BpmnFlowNodeMode nodeMode = Objects.equals(originalUserTask.getLoopCharacteristics().getCompletionCondition(), AND_SIGN_EXPRESSION) ? BpmnFlowNodeMode.AND : BpmnFlowNodeMode.OR;