package com.hyj.service.impl;
import com.hyj.service.IFlowService;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.flowable.bpmn.converter.BpmnXMLConverter;
import org.flowable.bpmn.model.BpmnModel;
import org.flowable.bpmn.model.Process;
import org.flowable.engine.RepositoryService;
import org.flowable.engine.RuntimeService;
import org.flowable.engine.repository.Deployment;
import org.flowable.engine.repository.DeploymentBuilder;
import org.flowable.engine.repository.ProcessDefinition;
import org.flowable.engine.runtime.ProcessInstance;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Service;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Primary
@Service
public class FlowServiceImpl implements IFlowService {
/**
* 日志类
*/
private static final Logger log = LoggerFactory.getLogger(FlowServiceImpl.class);
/**
* Flowable仓库时服务
*/
@Autowired
private RepositoryService repositoryService;
/**
* Flowable运行时服务
*/
@Autowired
private RuntimeService runtimeService;
@Override
public ProcessInstance strartFlow(String processKey, Map<String, Object> paras) {
if (StringUtils.isEmpty(processKey)){
return null;
}
if (null == paras){
paras = new HashMap<>();
}
List<Deployment> deployments = repositoryService.createDeploymentQuery().processDefinitionKey(processKey).list();
if (CollectionUtils.isEmpty(deployments) ){
log.error("没有该流程");
return null;
}
return runtimeService.startProcessInstanceByKey(processKey,paras);
}
@Override
public Map<String,Object> createFlow(String filePath) {
Map<String,Object> res = new HashMap<>();
//解析BPMN模型看是否成功
XMLStreamReader reader = null;
InputStream inputStream = null;
try {
BpmnXMLConverter bpmnXMLConverter = new BpmnXMLConverter();
XMLInputFactory factory = XMLInputFactory.newInstance();
inputStream=new FileInputStream(new File(filePath));
reader = factory.createXMLStreamReader(inputStream);
BpmnModel model = bpmnXMLConverter.convertToBpmnModel(reader);
List<Process> processes = model.getProcesses();
Process curProcess = null;
if (CollectionUtils.isEmpty(processes)) {
log.error("BPMN模型没有配置流程");
return null;
}
res.put("processes",processes);
curProcess = processes.get(0);
inputStream=new FileInputStream(new File(filePath));
DeploymentBuilder deploymentBuilder = repositoryService.createDeployment().name("TEST_FLOW")
.addInputStream(filePath,inputStream);
Deployment deployment= deploymentBuilder.deploy();
res.put("deployment",deployment);
log.warn("部署流程 name:"+curProcess.getName()+" key "+deployment.getKey() + " deploy "+deployment);
return res;
}
catch (Exception e){
log.error("BPMN模型创建流程异常",e);
return null;
}
finally {
try {
reader.close();
} catch (XMLStreamException e) {
log.error("关闭异常",e);
}
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
Flowable深入浅出-12 Flowable-BPMN操作流程之用户任务UserTask
共18个文件
xml:10个
java:6个
yml:1个
需积分: 41 50 下载量 117 浏览量
2019-01-13
19:51:47
上传
评论 1
收藏 23KB ZIP 举报
温馨提示
Flowable深入浅出-12 Flowable-BPMN操作流程之用户任务UserTask,请参考专栏https://blog.csdn.net/houyj1986/column/info/31755第12篇
资源推荐
资源详情
资源评论
收起资源包目录
flowablestudych12.zip (18个子文件)
flowablestudy
flowablestudy.iml 81B
flowablech5
pom.xml 2KB
src
test
java
main
resources
flows
测试BPMN模型2.bpmn20.xml 3KB
测试BPMN模型3.bpmn20.xml 3KB
测试BPMN模型.bpmn20.xml 2KB
application.yml 726B
mapper
java
com
hyj
config
ProcessConfig.java 1KB
mapper
flowlistener
CommonUserStartListener.java 1KB
main
App.java 856B
controller
FlowController.java 4KB
service
impl
FlowServiceImpl.java 4KB
IFlowService.java 475B
pom.xml 4KB
.idea
uiDesigner.xml 9KB
misc.xml 526B
encodings.xml 363B
compiler.xml 780B
workspace.xml 43KB
共 18 条
- 1
资源评论
书山登峰人
- 粉丝: 490
- 资源: 101
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功