fourcal/src/main/java/cn/palmte/work/service/ActProcDefService.java

90 lines
3.7 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package cn.palmte.work.service;
import cn.palmte.work.model.ActTaskDefRepository;
import cn.palmte.work.pojo.ActProcDef;
import cn.palmte.work.utils.ActUtil;
import org.activiti.bpmn.model.BpmnModel;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.repository.ProcessDefinition;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import top.jfunc.common.db.QueryHelper;
import top.jfunc.common.db.bean.Page;
import top.jfunc.common.db.utils.Pagination;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.concurrent.ConcurrentHashMap;
@Service
public class ActProcDefService {
private static final Logger logger = LoggerFactory.getLogger(ActProcDefService.class);
@Autowired
private RepositoryService repositoryService; //管理流程定义 与流程定义和部署对象相关的Service
@Autowired
private ActTaskDefRepository actTaskDefRepository;
@Autowired
private ActUtil actUtil;
@Autowired
Pagination pagination;
public Page<ActProcDef> list(ConcurrentHashMap<String, String> searchInfo, int pageNumber, int pageSize) {
String select = "select p.ID_ as id,p.NAME_ as procName,p.KEY_ as procKey,p.VERSION_ as version,p.DEPLOYMENT_ID_ as deploymentId,p.RESOURCE_NAME_ as resourceName,\n" +
" p.DGRM_RESOURCE_NAME_ as dgrmResourceName,p.SUSPENSION_STATE_ as suspensionState, d.DEPLOY_TIME_ as deployTime ";
QueryHelper queryHelper = new QueryHelper(select, " act_re_procdef p LEFT JOIN act_re_deployment d on p.DEPLOYMENT_ID_ = d.ID_");
String name = searchInfo.get("name");
queryHelper.addCondition(StringUtils.isNotEmpty(name), "(p.NAME_=? or p.KEY_=?)", name, name);
queryHelper.addOrderProperty("p.VERSION_", false);
return pagination.paginate(queryHelper.getSql(), ActProcDef.class, pageNumber, pageSize);
}
/**
* 创建默认的png
*
* @param response
* @param deploymentId
* @throws IOException
*/
public void createProcDefPng(HttpServletResponse response, String deploymentId) throws IOException {
ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().deploymentId(deploymentId).singleResult();
// 获取bpmnModel
BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinition.getId());
actUtil.responsePng(response, bpmnModel, new ArrayList<>(), new ArrayList<>());
}
@Transactional(rollbackFor = Exception.class)
public void deleteDeployment(String deploymentId) {
ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().deploymentId(deploymentId).singleResult();
actTaskDefRepository.deleteByProcDefId(processDefinition.getId());
//repositoryService.deleteDeployment(deploymentId); //不带级联的删除,此删除只能删除没有启动的流程,否则抛出异常 .act_re_deploymentact_re_procdef 和 act_ge_bytearray 三张表中相关数据都删除
repositoryService.deleteDeployment(deploymentId, true); //级联删除,不管流程是否启动,都可以删除
}
/**
* 挂起与激活
*
* @param procDefId
* @param status
*/
public void suspend(String procDefId, int status) {
if (1 == status) {
repositoryService.activateProcessDefinitionById(procDefId, true, null);
} else {
repositoryService.suspendProcessDefinitionById(procDefId, true, null);
}
}
}