`

activiti 5.12中新增的动态bpmn模型部署

阅读更多
activiti是不错的工作流,最近发现5.12中可以通过在运行期间动态生成一个BPMN的流程模型,因为一般来说,是通过如activiti designer这样的工具,去画好一个BPMN图的,现在可以通过代码的方法去生成了.acitivti 核心工作组的老外提供了一个完整的DEMO来演示,
详细代码在:https://github.com/frederikheremans/activiti-dynamic-process中,
下面小结下,代码其实很简单,如下:

@Test
public void testDynamicDeploy() throws Exception {

//创建bpmn模型
  BpmnModel model = new BpmnModel();
  Process process = new Process();
  model.addProcess(process);
  process.setId("my-process");

//创建bpmn元素
  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.生成BPMN自动布局
  new BpmnAutoLayout(model).execute();

  // 3. 部署这个BPMN模型
  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. 保存bpmn流程图 
  InputStream processDiagram = activitiRule.getRepositoryService()
    .getProcessDiagram(processInstance.getProcessDefinitionId());
  FileUtils.copyInputStreamToFile(processDiagram, new File("target/diagram.png"));

  // 7. 保存为bpmn.xml的xml类型文件
  InputStream processBpmn = activitiRule.getRepositoryService()
    .getResourceAsStream(deployment.getId(), "dynamic-model.bpmn");
  FileUtils.copyInputStreamToFile(processBpmn, 
    new File("target/process.bpmn20.xml"));
}

//创建task
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;
}



   其实上面的注解已经比较清楚了.首先是 BpmnModel model = new BpmnModel();
创建一个BPMN模型;然后Process process = new Process();这里创建一个process,
并把这个process加到bpmn模型中去,当然要设置其id了;
  然后用 process.addFlowElement去不断创建BPMN中的每一个元素;
可以看到包括start,end,task,sequence等元素都可以通过new的方法分别创建;
   并且用new BpmnAutoLayout(model).execute();对BPMN元素进行自动布局;
3,4,5部分则比较好理解了;6和7则都是生成BPMN的实际jpg图和生成实际的XML文件
   最后会生成的BPMN图为:
7
1
分享到:
评论

相关推荐

    eclipse-activiti5.12插件

    Activiti 提供了一个强大的API和直观的模型定义语言(BPMN),使得开发者能够快速构建和部署业务流程应用。 ### 2. Eclipse Activiti 5.12 插件特性 - **流程建模**:Eclipse 插件提供了图形化的流程建模工具,...

    activiti生成bpmn图的代码

    在本文中,我们将深入探讨如何使用 Activiti 生成 BPMN 图的代码,这对于理解流程设计以及调试流程逻辑至关重要。 首先,BPMN(Business Process Model and Notation)是一种图形化表示业务流程的标准,它提供了...

    myeclipse版activiti5.18插件(打开bpmn文件不报错)

    在MyEclipse环境中,Activiti插件是开发者用来设计、部署和管理流程模型的重要工具。针对标题和描述中提到的问题,我们将详细探讨如何在MyEclipse中成功安装和使用Activiti 5.18插件,以及解决打开BPMN文件时可能...

    bpmn.js 2.0流程编辑器 搭配 Activiti 7.0 进行工作流编辑器集成开发

    在浏览器中创建、嵌入和扩展 BPMN 图。单独使用它或将其集成到您的应用程序中。 1.使用基于Web 的建模组件 轻松创建您自己的 BPMN 2.0 图表。 2.使用该工具包将 BPMN 2.0 图表嵌入到您的应用程序中。 使用对您和您的...

    activiti-bpmn-converter-5.12

    activiti-bpmn-converter-5.12

    activiti-bpmn-model-5.21.0-API文档-中文版.zip

    赠送jar包:activiti-bpmn-model-5.21.0.jar; 赠送原API文档:activiti-bpmn-model-5.21.0-javadoc.jar; 赠送源代码:activiti-bpmn-model-5.21.0-sources.jar; 赠送Maven依赖信息文件:activiti-bpmn-model-...

    Activiti Designer bpmn2.0

    *Name:*Activiti BPMN 2.0 designer *Location:*http://activiti.org/designer/update/ 出错,有人说是 是这个网址已经不存在了。 用其他的联网安装确实速度有些让人吃惊,毕竟是连的外面的网。 只好使用离线安装。 ...

    bpmn适配activiti.rar

    3. BPMN模型与Activiti的交互:学习如何使用BPMN2.0图形化工具(如Camunda Modeler或Eclipse BPMN2插件)创建流程图,并将其转换为Activiti可识别的XML格式进行部署。 4. Activiti API:掌握Activiti提供的Java API...

    Activiti BPMN2.0 designer

    Activiti BPMN2.0 Designer是一款强大的业务流程管理(BPMN)工具,它基于开源的Activiti工作流引擎,专为设计、部署和管理业务流程而构建。BPMN2.0是一种标准的建模语言,用于描述企业级的工作流程和业务流程,它的...

    Activiti BPMN 2.0 designer

    设计完成后,你可以导出为XML格式的BPMN 2.0文件,然后在Activiti引擎中部署和执行。 Activiti BPMN 2.0 Designer的强大之处在于它的可视化编辑器,它使得业务流程的设计变得简单直观。此外,由于Activiti本身支持...

    工作流bpmn\jbpm\activiti的3个学习指南

    Activiti以其轻量级、高性能和灵活性而受到开发者欢迎,它与Spring框架有很好的集成,使得在企业级应用中部署和管理工作流变得简单。"Activiti 5.4用户指南(中文).pdf"提供了关于Activiti 5.4版本的详细指导,包括...

    activiti-bpmn-model-5.22.0.zip_Activiti 5.22.0_The News_activiti

    标题中的 "activiti-bpmn-model-5.22.0.zip" 指的是 Activiti 的一个特定版本——5.22.0,其中包含了 BPMN(Business Process Model and Notation)模型的相关组件。 BPMN 是一种国际标准,用于图形化表示业务流程...

    activiti-bpmn-model-5.21.0.jar

    org.activiti/activiti-bpmn-model/5.18.0 Activiti - BPMN Model maven依赖

    activiti-bpmn-converter-5.21.0-API文档-中英对照版.zip

    赠送jar包:activiti-bpmn-converter-5.21.0.jar; 赠送原API文档:activiti-bpmn-converter-5.21.0-javadoc.jar; 赠送源代码:activiti-bpmn-converter-5.21.0-sources.jar; 赠送Maven依赖信息文件:activiti-...

    activiti请假流程文件bpmn.xml和流程图

    Activiti 是一个开源的工作流和业务自动化引擎,它被广泛应用于企业级应用中,用于处理业务流程和工作流。这个压缩包包含的“activiti请假流程文件bpmn.xml”和“流程图”是理解Activiti如何实现请假流程的关键资料...

    Activiti_BPMN_2.0_designer.rar

    eclipse 流程插件离线安装包和依赖包 Activiti BPMN Activiti项目是一项新的基于Apache许可的开源BPM平台,从基础开始构建,旨在提供支持新的BPMN 2.0标准,包括支持对象管理组(OMG),可以定义流程、执行流程并以...

    activiti-bpmn-converter-5.18.0-sources.jar

    activiti-bpmn-converter-5.18.0-sources.jar

    Activiti中文手册

    部署业务文档是 Activiti 的一个重要特性,用于将流程定义部署到 Activiti 引擎中。 REST API Activiti 的 REST API 提供了强大的流程管理和自动化功能,包括: * 通用 Activiti REST 原则 * 安装与认证 * 方法...

    前后端分离项目中引入activiti工作流引擎

    - **流程图片的生成方式**:虽然Activiti在部署BPMN文件时会自动生成流程图,但这种方式可能会导致坐标偏移,影响到实际项目中流程状态图的准确性。因此推荐手动管理流程图,在发布流程时同时上传BPMN文件和对应的...

    离线安装Activiti BPMN 2.0 designer

    *Name:*Activiti BPMN 2.0 designer *Location:*http://activiti.org/designer/update/ 总是出现以下的错误 An error occurred while collecting items to be installed 原因是这个网址已经不存在,最可恶是官网的...

Global site tag (gtag.js) - Google Analytics