package com.highdatas.mdm.service.act.impl;
|
|
import com.highdatas.mdm.entity.TUser;
|
import org.activiti.engine.IdentityService;
|
import org.activiti.engine.RepositoryService;
|
import org.activiti.engine.RuntimeService;
|
import org.activiti.engine.repository.Model;
|
import org.activiti.engine.repository.ProcessDefinition;
|
import org.activiti.engine.runtime.ProcessInstance;
|
import org.apache.commons.lang3.StringUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import java.util.HashMap;
|
import java.util.List;
|
|
@Service
|
public class IdentityServiceImpl extends BaseServiceImpl implements com.highdatas.mdm.service.act.IdentityService{
|
@Autowired
|
IdentityService identityService;
|
@Autowired
|
RuntimeService runtimeService;
|
@Autowired
|
RepositoryService repositoryService;
|
|
|
@Override
|
public String startProcess(String businessId, String key) {
|
return startProcess(businessId, key, null, null);
|
}
|
|
@Override
|
public String startProcess(String businessId, String key, String workflowStall, HashMap<String, Object> variables) {
|
TUser user = getOnlineUser();
|
if (user == null) {
|
error(" user is null");
|
return "";
|
}
|
|
ProcessInstance processInstance = null;
|
try {
|
// add workflowstall
|
|
if (StringUtils.isEmpty(workflowStall)) {
|
workflowStall = "1";
|
}
|
|
if (variables == null) {
|
variables = new HashMap<>();
|
}
|
|
int workflowStallInt = Integer.parseInt(workflowStall);
|
variables.put("workflowstall", workflowStallInt);
|
|
identityService.setAuthenticatedUserId(user.getUserId());
|
|
//get max version processDefinition
|
List<Model> modelList = repositoryService.createModelQuery().modelKey(key).orderByModelVersion().desc().list();
|
ProcessDefinition processDefinition = null;
|
|
for (Model model : modelList) {
|
if (processDefinition == null && model.getDeploymentId() != null) {
|
String deploymentId = model.getDeploymentId();
|
processDefinition = repositoryService.createProcessDefinitionQuery().deploymentId(deploymentId).singleResult();
|
}
|
}
|
|
processInstance = runtimeService.startProcessInstanceById(processDefinition.getId(), businessId, variables);
|
|
String processInstanceId = processInstance.getId();
|
//TODO db
|
// NamedSQL updateActinstUserSql = NamedSQL.getInstance("updateActinstUser");
|
// updateActinstUserSql.setParam("userid", user.getId());
|
// updateActinstUserSql.setParam("id", processInstanceId);
|
// SQLRunner.execSQL(updateActinstUserSql);
|
|
return processInstanceId;
|
|
}
|
finally {
|
identityService.setAuthenticatedUserId(null);
|
}
|
}
|
|
|
}
|