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