http://www.kafeitu.me/activiti/2013/05/27/dynamic-process-creation-and-deployment-in-100-lines.html?utm_source=tuicool&utm_medium=referral
`package com.create;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import org.activiti.bpmn.BpmnAutoLayout;
import org.activiti.bpmn.model.BpmnModel;
import org.activiti.bpmn.model.EndEvent;
import org.activiti.bpmn.model.Process;
import org.activiti.bpmn.model.SequenceFlow;
import org.activiti.bpmn.model.StartEvent;
import org.activiti.bpmn.model.UserTask;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.runtime.ProcessInstance;
import org.apache.commons.io.FileUtils;
import org.junit.Test;
/**
*
-
@Title: TestCreateAc.java
-
@Package com.create
-
@Description: 生成流程图测试
-
@author cc
-
@date 2019年7月24日
-
@version V1.0
*/
public class TestCreateAc {
//获取核心工厂类
ProcessEngine processEngine=ProcessEngines.getDefaultProcessEngine();/**
* 生成流程图-
@throws IOException
*/
@Test
public void createTest() throws IOException {
//创建Bpmn 绘制流程图
BpmnModel bpmnModel=new BpmnModel();
Process process=new Process();
bpmnModel.addProcess(process);
process.setId(“createTest_1”);
process.addFlowElement(createStartEvent());
process.addFlowElement(creatSequenceFlow(“sl1”,“first_ss”,“start”,“usertask”));
process.addFlowElement(createUserTask());
process.addFlowElement(creatSequenceFlow(“sl2”,“tow_ss”,“usertask”,“end”));
process.addFlowElement(createEndEvent());
//结束//生成图形信息
new BpmnAutoLayout(bpmnModel).execute();//部署流程图
Deployment deployment=processEngine.getRepositoryService().createDeployment().addBpmnModel(“createTest_1.bpmn”, bpmnModel).name(“createTest_1bpmn”).deploy();
//启动流程
ProcessInstance processInstance=processEngine.getRuntimeService().startProcessInstanceByKey(“createTest_1”);
System.err.println(“部署id”+processInstance.getId());
System.err.println(“部署名称”+processInstance.getName());
//存储流程 图片
InputStream inputsream=processEngine.getRepositoryService().getProcessDiagram(processInstance.getProcessDefinitionId());
FileUtils.copyInputStreamToFile(inputsream, new File(“E:/target/createTest_1.png”));
// 7. 存储xml
InputStream processBpmn =processEngine.getRepositoryService()
.getResourceAsStream(deployment.getId(), “createTest_1.bpmn”);
FileUtils.copyInputStreamToFile(processBpmn,
new File(“E:/target/createTest_1.bpmn20.xml”));
System.err.println(“执行完毕”);
}
/**
*userTask -
@return
/
protected UserTask createUserTask() {
UserTask userTask=new UserTask();
userTask.setAssignee(“cc”);
userTask.setId(“usertask”);
userTask.setName(“first Usertask”);
return userTask;
}
/* -
连线
-
@return
*/
protected SequenceFlow creatSequenceFlow(String id,String name,String from,String to) {
SequenceFlow sequenceFlow=new SequenceFlow();
sequenceFlow.setId(id);
sequenceFlow.setName(name);
sequenceFlow.setSourceRef(from);
sequenceFlow.setTargetRef(to);
return sequenceFlow;
}
/**
- 开始按钮
/
protected StartEvent createStartEvent() {
StartEvent startEvent=new StartEvent();
startEvent.setId(“start”);
return startEvent;
}
/*- 结束按钮
*/
protected EndEvent createEndEvent() {
EndEvent endEvent=new EndEvent();
endEvent.setId(“end”);
return endEvent;
}
- 结束按钮
-
}
`