@Test
public void testDynamicDeploy() throws Exception {
// 1. Build up the model from scratch
BpmnModel model = new BpmnModel();
Process process = new Process();
model.addProcess(process);
process.setId("my-process");
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. Generate graphical information
new BpmnAutoLayout(model).execute();
// 3. Deploy the process to the engine
Deployment deployment = activitiRule.getRepositoryService().createDeployment()
.addBpmnModel("dynamic-model.bpmn", model).name("Dynamic process deployment")
.deploy();
// 4. Start a process instance
ProcessInstance processInstance = activitiRule.getRuntimeService()
.startProcessInstanceByKey("my-process");
// 5. Check if task is available
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. Save process diagram to a file
InputStream processDiagram = activitiRule.getRepositoryService()
.getProcessDiagram(processInstance.getProcessDefinitionId());
FileUtils.copyInputStreamToFile(processDiagram, new File("target/diagram.png"));
// 7. Save resulting BPMN xml to a file
InputStream processBpmn = activitiRule.getRepositoryService()
.getResourceAsStream(deployment.getId(), "dynamic-model.bpmn");
FileUtils.copyInputStreamToFile(processBpmn,
new File("target/process.bpmn20.xml"));
}
protected UserTask createUserTask(String id, String name, String assignee) {
UserTask userTask = new UserTask();
userTask.setName(name);
userTask.setId(id);
userTask.setAssignee(assignee);
return userTask;
}
protected SequenceFlow createSequenceFlow(String from, String to) {
SequenceFlow flow = new SequenceFlow();
flow.setSourceRef(from);
flow.setTargetRef(to);
return flow;
}
protected StartEvent createStartEvent() {
StartEvent startEvent = new StartEvent();
startEvent.setId("start");
return startEvent;
}
protected EndEvent createEndEvent() {
EndEvent endEvent = new EndEvent();
endEvent.setId("end");
return endEvent;
}
分享到:
相关推荐
在IT行业中,Activiti是一个非常流行的开源工作流引擎,它被广泛用于企业级应用中来管理业务...总的来说,自定义流程图颜色是Activiti流程管理中一个实用且有价值的特性,它让复杂的业务流程变得更加生动和易于追踪。
这个压缩包中的“activiti流程管理的几个小例子”旨在帮助用户更深入地理解和应用Activiti。通过这些实例,我们可以探索以下几个关键知识点: 1. **流程定义(Process Definition)**:在Activiti中,流程定义是...
同时,Activiti还提供了丰富的API和表达式语言(EL),使得在流程中进行动态计算和决策成为可能。 总结来说,“Activiti学习文档(二)之画流程图并部署流程”会带你走过从设计到实施一个完整流程的整个过程,包括...
这个"activiti流程设计器.zip"压缩包内包含的资源显然是用于帮助用户设计和理解Activiti流程的工具,并且特别加入了中文翻译,使得中国用户在使用过程中能更方便地理解和操作。 Activiti 流程设计器是 Activiti ...
**OA项目中的Activiti流程Demo详解** 在OA(办公自动化)项目中,Activiti是一个非常重要的流程引擎,它被广泛用于实现业务流程自动化。这个"oa项目中的activiti流程demo"是一个实例,展示了如何将Activiti集成到...
### Activiti流程学习总结 #### 一、工作流的基本概念 在深入了解Activiti之前,我们需要先理解工作流的概念。工作流是一种将业务过程部分或全部自动化的方法,它可以帮助组织提高工作效率,减少错误,并且能够更...
总的来说,"activiti动态创建路径"是Activiti的一个强大特性,它结合了源码编程和工具辅助,实现了流程模型的灵活性和适应性。通过深入理解和熟练运用这些概念,开发者可以构建出更加符合业务需求的动态流程系统。
以上内容详细描述了基于Activiti流程管理系统界面框架搭建的相关知识点,涵盖了项目创建、配置、集成开发等各个步骤,以及相关的技术要点。通过阅读这些知识点,有开发经验的程序员应该能够掌握搭建基于Activiti的...
下面将详细介绍如何配置Activiti流程图的高亮显示。 首先,理解Activiti的核心概念。Activiti是一个基于Java的业务流程管理系统,它支持BPMN 2.0标准,能够处理复杂的业务流程定义。流程图是用图形化的方式表示这些...
Activiti 是一个开源的工作流和业务自动化引擎,广泛应用于企业级应用中,提供流程定义、执行、...在实际项目中,结合 Activiti 的其他功能,如动态流程变更、表单设计等,可以构建出更灵活、高效的业务流程管理系统。
在项目中,你可以使用Activiti Modeler创建流程图,定义任务、事件、网关等元素。保存的模型文件是XML格式,可以存入数据库。 4. **Web界面开发**:利用Angular构建前端界面,展示流程图并提供操作入口。通过...
- **表达式和脚本**:Activiti7支持使用EL(Expression Language)和脚本来动态计算值或控制流程行为。 - **流程实例和历史记录**:如何查询已运行的流程实例,以及查看流程实例的历史信息,进行审计或分析。 - **...
在描述中提到的"Canvas动画"是指Activiti提供的可视化建模工具,它允许开发者通过拖拽方式创建流程图,并以动画形式展示流程执行的过程,使得流程设计更加直观易懂。这种动态演示方式有助于开发者和业务人员更好地...
在Activiti中,你可以使用Activiti Designer工具来创建和编辑流程定义。这个工具允许你通过拖拽图形元素,如开始事件、结束事件、用户任务、服务任务等,来构建流程图。设计完成后,会自动生成对应的`.bpmn20.xml`...
Activiti动态获取流程图过程详解 Activiti是一个基于Java的开源工作流引擎,广泛应用于企业级业务流程管理系统中。Activiti提供了动态获取流程图的功能,通过本文,我们将详细介绍Activiti如何动态获取流程图的过程...
当流程实例启动时,Activiti会为列表中的每个元素创建一个子任务,并将其分配给对应的用户。 3. **监听器与事件**:在会签过程中,可能需要监听某些特定事件,如任务的完成或分配。可以通过实现`TaskListener`接口...
这个文档《Activiti流程文件细解》深入探讨了Activiti流程定义的关键元素,帮助我们理解如何设计和实现复杂的业务流程。 首先,我们要了解的是`<process>`标签,它是流程定义的基本单位。在这个例子中,`请假流程-...
在工作流系统中,"取回"通常指的是撤消或重新处理某个任务,这可能因为错误、需要更正或者业务流程的动态调整。Activiti提供了丰富的API和工具来支持这样的操作,使得开发者能够灵活地管理业务流程中的任务。 首先...
例如,可以在 `boundary event` 中设置或改变变量,或者在 `script task` 中通过脚本语言动态创建变量。 2. **设置变量**:在流程启动时,可以通过 `RuntimeService.startProcessInstanceByKey()` 或 `...
在本案例中,“activiti实现请假流程”指的是利用 Activiti 开源插件创建了一个具体的应用场景,即员工请假流程的自动化管理。 Activiti 的核心功能包括: 1. **流程定义**:使用 BPMN 2.0 标准的图形化建模工具,...