重构工作流引擎

This commit is contained in:
yuchen
2026-04-08 14:25:20 +08:00
parent 62bbecc925
commit cb60fadb6a
2 changed files with 111 additions and 2 deletions

View File

@ -61,6 +61,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.sipai.workflow.IWorkflowEngine;
import com.sipai.workflow.simple.SimpleProcessInstanceWrapper;
import javax.annotation.Resource;
import java.text.SimpleDateFormat;
@ -171,15 +172,20 @@ public class WorkflowService {
String processInstanceId = workflowEngine.startProcess(businessKey, userId, processDefKey, variables);
if (processInstanceId != null) {
// activiti模式下通过runtimeService查询返回原始ProcessInstance对象
// simple模式下runtimeService可能为null返回nullController只需要getId()可通过processInstanceId获取
try {
if (runtimeService != null) {
return runtimeService.createProcessInstanceQuery()
ProcessInstance pi = runtimeService.createProcessInstanceQuery()
.processInstanceId(processInstanceId).singleResult();
if (pi != null) {
return pi;
}
}
} catch (Exception e) {
logger.warn("查询ProcessInstance失败processInstanceId={}", processInstanceId);
}
// simple模式下返回轻量包装对象调用方只需要getId()
final String pid = processInstanceId;
return new SimpleProcessInstanceWrapper(pid, businessKey, processDefKey);
}
return null;
}

View File

@ -0,0 +1,103 @@
package com.sipai.workflow.simple;
import org.activiti.engine.runtime.ProcessInstance;
import java.util.Map;
/**
* 自研流程引擎的ProcessInstance轻量包装类
* 调用方只需要getId()和getBusinessKey()等基本方法
*/
public class SimpleProcessInstanceWrapper implements ProcessInstance {
private String id;
private String businessKey;
private String processDefinitionId;
private String processDefinitionKey;
public SimpleProcessInstanceWrapper(String id, String businessKey, String processDefinitionKey) {
this.id = id;
this.businessKey = businessKey;
this.processDefinitionKey = processDefinitionKey;
this.processDefinitionId = processDefinitionKey;
}
@Override
public String getId() {
return id;
}
@Override
public String getBusinessKey() {
return businessKey;
}
@Override
public String getProcessDefinitionId() {
return processDefinitionId;
}
@Override
public String getProcessDefinitionKey() {
return processDefinitionKey;
}
@Override
public String getProcessInstanceId() {
return id;
}
@Override
public boolean isEnded() {
return false;
}
@Override
public boolean isSuspended() {
return false;
}
@Override
public String getActivityId() {
return null;
}
@Override
public String getName() {
return null;
}
@Override
public String getDescription() {
return null;
}
@Override
public String getProcessDefinitionName() {
return null;
}
@Override
public Integer getProcessDefinitionVersion() {
return null;
}
@Override
public String getDeploymentId() {
return null;
}
@Override
public Map<String, Object> getProcessVariables() {
return null;
}
@Override
public String getTenantId() {
return null;
}
@Override
public String getParentId() {
return null;
}
}