Activiti

import org.activiti.bpmn.model.BpmnModel; //导入方法依赖的package包/类

@Test

public void testDynamicDeploy() throws Exception {

// 1. 创建一个空的BpmnModel和Process对象

BpmnModel model = new BpmnModel();

Process process = new Process();

model.addProcess(process);

process.setId("my-process");

// 创建Flow元素(所有的事件、任务都被认为是Flow)

process.addFlowElement(createStartEvent());

process.addFlowElement(createUserTask("task1", "First task", "fred"));

process.addFlowElement(createUserTask("task2", "Second task", "john"));

process.addFlowElement(createEndEvent());

process.addFlowElement(createSequenceFlow("start", "task1"));

process.addFlowElement(createSequenceFlow("task1", "task2"));

process.addFlowElement(createSequenceFlow("task2", "end"));

// 2. 流程图自动布局(位于activiti-bpmn-layout模块)

new BpmnAutoLayout(model).execute();

// 3. 把BpmnModel对象部署到引擎

Deployment deployment = activitiRule.getRepositoryService().createDeployment()

.addBpmnModel("dynamic-model.bpmn", model).name("Dynamic process deployment")

.deploy();

// 4. 启动流程

ProcessInstance processInstance = activitiRule.getRuntimeService()

.startProcessInstanceByKey("my-process");

// 5. 检查流程是否正常启动

List tasks = activitiRule.getTaskService().createTaskQuery()

.processInstanceId(processInstance.getId()).list();

Assert.assertEquals(1, tasks.size());

Assert.assertEquals("First task", tasks.get(0).getName());

Assert.assertEquals("fred", tasks.get(0).getAssignee());

// 6. 导出流程图

InputStream processDiagram = activitiRule.getRepositoryService()

.getProcessDiagram(processInstance.getProcessDefinitionId());

// 把文件生成在本章项目的test-classes目录中

String userHomeDir = getClass().getResource("/").getFile();

System.out.println(userHomeDir);

FileUtils.copyInputStreamToFile(processDiagram, new File(userHomeDir + "/diagram.png"));

// 7. 导出Bpmn文件到本地文件系统

InputStream processBpmn = activitiRule.getRepositoryService()

.getResourceAsStream(deployment.getId(), "dynamic-model.bpmn");

FileUtils.copyInputStreamToFile(processBpmn,

new File(userHomeDir + "/process.bpmn20.xml"));

}
原文链接:https://blog.csdn.net/weixin_31519139/article/details/114718900

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值