`
lihao312
  • 浏览: 483520 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

动态创建activiti流程

阅读更多
@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;
}
0
2
分享到:
评论
1 楼 sweat89 2013-09-26  
activitiRule是个什么对象 怎么获取的

相关推荐

    activiti6.0实现流程图片自定义颜色 当前任务为红色,走过的任务为绿色,自定义文字颜色连线文字显示

    在IT行业中,Activiti是一个非常流行的开源工作流引擎,它被广泛用于企业级应用中来管理业务...总的来说,自定义流程图颜色是Activiti流程管理中一个实用且有价值的特性,它让复杂的业务流程变得更加生动和易于追踪。

    activiti流程管理的几个小例子

    这个压缩包中的“activiti流程管理的几个小例子”旨在帮助用户更深入地理解和应用Activiti。通过这些实例,我们可以探索以下几个关键知识点: 1. **流程定义(Process Definition)**:在Activiti中,流程定义是...

    Activiti学习文档(二)之画流程图并部署流程

    同时,Activiti还提供了丰富的API和表达式语言(EL),使得在流程中进行动态计算和决策成为可能。 总结来说,“Activiti学习文档(二)之画流程图并部署流程”会带你走过从设计到实施一个完整流程的整个过程,包括...

    activiti流程设计器.zip

    这个"activiti流程设计器.zip"压缩包内包含的资源显然是用于帮助用户设计和理解Activiti流程的工具,并且特别加入了中文翻译,使得中国用户在使用过程中能更方便地理解和操作。 Activiti 流程设计器是 Activiti ...

    oa项目中的activiti流程demo

    **OA项目中的Activiti流程Demo详解** 在OA(办公自动化)项目中,Activiti是一个非常重要的流程引擎,它被广泛用于实现业务流程自动化。这个"oa项目中的activiti流程demo"是一个实例,展示了如何将Activiti集成到...

    activiti流程学习总结

    ### Activiti流程学习总结 #### 一、工作流的基本概念 在深入了解Activiti之前,我们需要先理解工作流的概念。工作流是一种将业务过程部分或全部自动化的方法,它可以帮助组织提高工作效率,减少错误,并且能够更...

    activiti动态创建路径

    总的来说,"activiti动态创建路径"是Activiti的一个强大特性,它结合了源码编程和工具辅助,实现了流程模型的灵活性和适应性。通过深入理解和熟练运用这些概念,开发者可以构建出更加符合业务需求的动态流程系统。

    基于ACTIVITI流程管理系统界面框架搭建

    以上内容详细描述了基于Activiti流程管理系统界面框架搭建的相关知识点,涵盖了项目创建、配置、集成开发等各个步骤,以及相关的技术要点。通过阅读这些知识点,有开发经验的程序员应该能够掌握搭建基于Activiti的...

    activiti工作流高亮图配置.zip

    下面将详细介绍如何配置Activiti流程图的高亮显示。 首先,理解Activiti的核心概念。Activiti是一个基于Java的业务流程管理系统,它支持BPMN 2.0标准,能够处理复杂的业务流程定义。流程图是用图形化的方式表示这些...

    Activiti 学习笔记六:流程执行历史记录

    Activiti 是一个开源的工作流和业务自动化引擎,广泛应用于企业级应用中,提供流程定义、执行、...在实际项目中,结合 Activiti 的其他功能,如动态流程变更、表单设计等,可以构建出更灵活、高效的业务流程管理系统。

    activiti整合流程自定义设计

    在项目中,你可以使用Activiti Modeler创建流程图,定义任务、事件、网关等元素。保存的模型文件是XML格式,可以存入数据库。 4. **Web界面开发**:利用Angular构建前端界面,展示流程图并提供操作入口。通过...

    Activiti7(流程引擎)简单笔记,附带作者执行的Demo代码文件

    - **表达式和脚本**:Activiti7支持使用EL(Expression Language)和脚本来动态计算值或控制流程行为。 - **流程实例和历史记录**:如何查询已运行的流程实例,以及查看流程实例的历史信息,进行审计或分析。 - **...

    Activiti工作流示例Activiti Demo(带完整源码)非常实用

    在描述中提到的"Canvas动画"是指Activiti提供的可视化建模工具,它允许开发者通过拖拽方式创建流程图,并以动画形式展示流程执行的过程,使得流程设计更加直观易懂。这种动态演示方式有助于开发者和业务人员更好地...

    Activiti学习笔记三:管理流程定义

    在Activiti中,你可以使用Activiti Designer工具来创建和编辑流程定义。这个工具允许你通过拖拽图形元素,如开始事件、结束事件、用户任务、服务任务等,来构建流程图。设计完成后,会自动生成对应的`.bpmn20.xml`...

    Activiti如何动态获取流程图过程详解

    Activiti动态获取流程图过程详解 Activiti是一个基于Java的开源工作流引擎,广泛应用于企业级业务流程管理系统中。Activiti提供了动态获取流程图的功能,通过本文,我们将详细介绍Activiti如何动态获取流程图的过程...

    Activiti-5.4中实现会签

    当流程实例启动时,Activiti会为列表中的每个元素创建一个子任务,并将其分配给对应的用户。 3. **监听器与事件**:在会签过程中,可能需要监听某些特定事件,如任务的完成或分配。可以通过实现`TaskListener`接口...

    activiti流程文件细解.doc

    这个文档《Activiti流程文件细解》深入探讨了Activiti流程定义的关键元素,帮助我们理解如何设计和实现复杂的业务流程。 首先,我们要了解的是`<process>`标签,它是流程定义的基本单位。在这个例子中,`请假流程-...

    Activiti 工作流取回的示例

    在工作流系统中,"取回"通常指的是撤消或重新处理某个任务,这可能因为错误、需要更正或者业务流程的动态调整。Activiti提供了丰富的API和工具来支持这样的操作,使得开发者能够灵活地管理业务流程中的任务。 首先...

    Activiti 学习笔记五:流程变量

    例如,可以在 `boundary event` 中设置或改变变量,或者在 `script task` 中通过脚本语言动态创建变量。 2. **设置变量**:在流程启动时,可以通过 `RuntimeService.startProcessInstanceByKey()` 或 `...

    activiti实现请假流程

    在本案例中,“activiti实现请假流程”指的是利用 Activiti 开源插件创建了一个具体的应用场景,即员工请假流程的自动化管理。 Activiti 的核心功能包括: 1. **流程定义**:使用 BPMN 2.0 标准的图形化建模工具,...

Global site tag (gtag.js) - Google Analytics