1 RepositoryService类
RepositoryService的获取: (都是在processEngineConfiguration中实例化)
repositoryService = processEngine.getRepositoryService();
repositoryService可派生的类
派生类的作用:
DeploymentBuild的构造
DeploymentBuilder deploymentBuilder = repositoryService
.createDeployment()
.category("测试分类")
.name("名称");
资源部署的方式
classpath方式
public void deploy(){
DeploymentBuilder deploymentBuilder = repositoryService
.createDeployment()
.category("测试分类")
.name("名称")
.addClasspathResource("ceshi.bpmn20.xml");
Deployment deploy = deploymentBuilder.deploy();
System.out.println(deploy.getId());
}
文本部署方式
public void addString(){
String text= IoUtil.readFileAsString("ceshi.bpmn20.xml");
DeploymentBuilder deploymentBuilder = repositoryService
.createDeployment()
.category("测试分类")
.name("名称")
.key("测试的key")
.addString("ceshi.bpmn",text);
Deployment deploy = deploymentBuilder.deploy();
System.out.println(deploy.getId());
}
输入流方式
public void addInputStream(){
InputStream resourceAsStream = SpringTest.class.getClassLoader()
.getResourceAsStream("ceshi.bpmn20.xml");
DeploymentBuilder deploymentBuilder = repositoryService
.createDeployment()
.category("测试分类")
.name("名称")
.key("测试的key")
.addInputStream("shareniu.bpmn",resourceAsStream);
Deployment deploy = deploymentBuilder.deploy();
System.out.println(deploy.getId());
}
压缩流方式
public void addZipInputStream(){
InputStream resourceAsStream = SpringTest.class.getClassLoader()
.getResourceAsStream("1.zip");
ZipInputStream zipInputStream=new ZipInputStream(resourceAsStream);
DeploymentBuilder deploymentBuilder = repositoryService
.createDeployment()
.category("测试分类")
.name("名称")
.key("测试的key")
.addZipInputStream(zipInputStream);
Deployment deploy = deploymentBuilder.deploy();
System.out.println(deploy.getId());
}
字节方式
public void addBytes(){
InputStream resourceAsStream = SpringTest.class.getClassLoader()
.getResourceAsStream("ceshi.bpmn20.xml");
String inputStreamName="分享牛";
byte[] bytes = IoUtil.readInputStream(resourceAsStream, inputStreamName);
DeploymentBuilder deploymentBuilder = repositoryService
.createDeployment()
.category("测试分类")
.name("名称")
.key("测试的key")
.addBytes("ceshi.bpmn",bytes);
Deployment deploy = deploymentBuilder.deploy();
System.out.println(deploy.getId());
}
模型方式
public void deploy() {
String modelId = "c2d1a9c1-5ce4-11e9-b185-86ef18984e78";
String category = "test测试";
org.flowable.ui.modeler.domain.Model model =
modelCoreServiceImpl.getModel(modelId);
byte[] bpmnBytes = modelCoreServiceImpl.getBpmnXML(model);
String processName = model.getName();
if (!StringUtils.endsWith(processName, ".bpmn20.xml")) {
processName += ".bpmn20.xml";
}
//部署
Deployment deployment = repositoryService.createDeployment()
.addBytes(processName, bpmnBytes)
.name(model.getName())
.key(model.getKey())
.deploy();
System.out.println("流程部署deploy:" + deployment + " 分类:" + category);
}
部署设计的表
一些相关的配置
<bean id="processEngineConfiguration"
class="org.flowable.spring.SpringProcessEngineConfiguration">
<!--是否部署资源的时候生成流程图-->
<property name="createDiagramOnDeploy" value="true"></property>
<!--设置字体-->
<property name="activityFontName" value="宋体"></property>
<property name="labelFontName" value="宋体"></property>
<property name="annotationFontName" value="宋体"></property>
</bean>
查询流程定义相关的数据
public void createProcessDefinitionQuery(){
List<ProcessDefinition> list = repositoryService.createProcessDefinitionQuery()
.latestVersion() //查询的时候最后的一个版本
.processDefinitionName("测试流程")
// .processDefinitionCategory("")
.list();
}
删除流程实例
public void deleteDeployment(){
String deploymentId="42501";
repositoryService.deleteDeployment(deploymentId);
}
/**
* 级联删除会删除当前流程定义下面所有的流程实例
*/
@Test
public void deleteDeploymentCaseCade(){
String deploymentId="40001";
repositoryService.deleteDeployment(deploymentId,true);
}
获取部署实例的图片
public void viewImage() throws IOException {
String deploymentId="37501";
List<String> deploymentResourceNames = repositoryService
.getDeploymentResourceNames(deploymentId);
System.out.println(deploymentResourceNames);
String imageName=null;
for (String name : deploymentResourceNames){
if (name.indexOf(".png")>0){
imageName=name;
}
}
System.out.println(imageName);
if (imageName!=null){
File file=new File("C:/project/"+imageName);
InputStream resourceAsStream =
repositoryService.getResourceAsStream(deploymentId, imageName);
FileUtils.copyInputStreamToFile(resourceAsStream,file);
}
}
部署对象的查询以及sql查询
public void createDeploymentQuery(){
List<Deployment> list = repositoryService.createDeploymentQuery()
.deploymentCategory("测试分类")
.deploymentId("37501")
.list();
}
//sql查询
public void createNativeDeploymentQuery(){
List<Deployment> list = repositoryService.createNativeDeploymentQuery()
.sql("select * from ACT_RE_DEPLOYMENT").list();
}
ID生成器的使用
配置bean
<bean id="processEngineConfiguration"
class="com.shareniu.bpmn.spring.SpringProcessEngineConfiguration">
<!--<property name="idBlockSize" value="1000"></property>--> id值每个加1000
<property name="idGenerator" ref="ceshiUuidGenerator"></property>
</bean>
<bean id="strongUuidGenerator"
class="org.flowable.common.engine.impl.persistence.StrongUuidGenerator"></bean>
<bean id="ceshiUuidGenerator" class="com.shareniu.bpmn.CeshiUuidGenerator"></bean>
重写相关的类
public class CeshiUuidGenerator implements IdGenerator {
public String getNextId() {
return "ceshi_"+UUID.randomUUID().toString();
}
}