重构工作流引擎
This commit is contained in:
@ -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,返回null(Controller只需要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;
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user