activiti中文手册:http://www.mossle.com/docs/activiti/index.html
在学习activiti自定义流程的过程中,发现了下面的方法可以获取已经部署的流程的流程图,和bpmn文件,在这里想记录一下。
一.获取ProcessEngine
protected static ProcessEngine getProcessEngine(){
ProcessEngine processEngine= ProcessEngineConfiguration.createStandaloneInMemProcessEngineConfiguration()
.setJdbcUrl("jdbc:mysql://localhost:3306/activiti")
.setJdbcDriver("com.mysql.jdbc.Driver")
.setJdbcUsername("root")
.setJdbcPassword("数据库密码")
.setDatabaseSchemaUpdate("true")
.setActivityFontName("宋体")
.setAnnotationFontName("宋体")
.setLabelFontName("宋体")
.buildProcessEngine();
return processEngine;
}
.setDatabaseSchemaUpdate(“true”) 表示设置自动检索数据库是否存在activiti相关表,不存在相关表时会在服务启动时自动创建相关表。
一般情况下,考虑系统性能,参数传false。
二.获取流程图和bpmn文件
ProcessEngine processEngine=getProcessEngine();
final String PROCESSID ="process01";
final String PROCESSNAME ="测试01";
// 得到流程定义
List<ProcessDefinition> list = processEngine.getRepositoryService().createProcessDefinitionQuery().
orderByProcessDefinitionVersion().asc().
deploymentId(PROCESSID).list();
ProcessDefinition processDefinition = list.get(0);
//得到流程定义对应流程图
InputStream processDiagram = processEngine.getRepositoryService().getProcessDiagram(processDefinition.getId());
FileUtils.copyInputStreamToFile(processDiagram, new File("/deployments/"+PROCESSID+".png"));
// 得到部署
InputStream processBpmn = processEngine.getRepositoryService().getResourceAsStream(processDefinition.getDeploymentId(), PROCESSID+".bpmn");
FileUtils.copyInputStreamToFile(processBpmn,new File("/deployments/"+PROCESSID+".bpmn"));
代码运行以后的文件在项目所在系统盘下面deployments文件夹下。