- 浏览: 7936487 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (2425)
- 软件工程 (75)
- JAVA相关 (662)
- ajax/web相关 (351)
- 数据库相关/oracle (218)
- PHP (147)
- UNIX/LINUX/FREEBSD/solaris (118)
- 音乐探讨 (1)
- 闲话 (11)
- 网络安全等 (21)
- .NET (153)
- ROR和GOG (10)
- [网站分类]4.其他技术区 (181)
- 算法等 (7)
- [随笔分类]SOA (8)
- 收藏区 (71)
- 金融证券 (4)
- [网站分类]5.企业信息化 (3)
- c&c++学习 (1)
- 读书区 (11)
- 其它 (10)
- 收藏夹 (1)
- 设计模式 (1)
- FLEX (14)
- Android (98)
- 软件工程心理学系列 (4)
- HTML5 (6)
- C/C++ (0)
- 数据结构 (0)
- 书评 (3)
- python (17)
- NOSQL (10)
- MYSQL (85)
- java之各类测试 (18)
- nodejs (1)
- JAVA (1)
- neo4j (3)
- VUE (4)
- docker相关 (1)
最新评论
-
xiaobadi:
jacky~~~~~~~~~
推荐两个不错的mybatis GUI生成工具 -
masuweng:
(转)JAVA获得机器码的实现 -
albert0707:
有些扩展名为null
java 7中可以判断文件的contenttype了 -
albert0707:
非常感谢!!!!!!!!!
java 7中可以判断文件的contenttype了 -
zhangle:
https://zhuban.me竹板共享 - 高效便捷的文档 ...
一个不错的网络白板工具
activiti是不错的工作流,最近发现5.12中可以通过在运行期间动态生成一个BPMN的流程模型,因为一般来说,是通过如activiti designer这样的工具,去画好一个BPMN图的,现在可以通过代码的方法去生成了.acitivti 核心工作组的老外提供了一个完整的DEMO来演示,
详细代码在:https://github.com/frederikheremans/activiti-dynamic-process中,
下面小结下,代码其实很简单,如下:
其实上面的注解已经比较清楚了.首先是 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图为:
详细代码在: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图为:
发表评论
-
复习:强迫线程顺序执行方式
2019-01-03 23:42 1568方法1: 三个线程,t1,t2,t3,如果一定要按顺序执行, ... -
(转)不错的前后端处理异常的方法
2019-01-02 23:16 2017前言 在 Web 开发中, 我们经常会需要处理各种异常, 这是 ... -
info q的极客时间大咖说等资料下载
2018-08-15 08:40 3463info q的极客时间大咖说等资料下载,还有不少思维导图 链 ... -
CXF 客户端超时时间设置(非Spring配置方式)
2018-07-03 22:38 2231import org.apache.cxf.endpoint. ... -
(转)synchronized关键字画像:正确打开方式
2018-06-14 09:25 489https://mp.weixin.qq.com/s/b3Sx ... -
CountDownLatch的例子
2018-06-13 14:10 683public class StatsDemo { ... -
两道面试题,带你解析Java类加载机制
2018-06-12 16:29 606https://mp.weixin.qq.com/s/YTa0 ... -
Spring中获取request的几种方法,及其线程安全性分析
2018-06-11 09:03 668https://mp.weixin.qq.com/s/KeFJ ... -
内部类小结
2018-06-06 10:25 432https://mp.weixin.qq.com/s/hErv ... -
JVM虚拟机小结1
2018-06-04 20:43 5381 jps -l //列出详细的类名和进程ID 2)jps ... -
windows下自带命令行工具查看CPU资源情况等
2018-06-04 12:53 3095微软提供了不少命令行 ... -
(收藏)深入分析Java的序列化与反序列化
2018-05-30 15:21 612https://mp.weixin.qq.com/s/T2Bn ... -
apache common包中的序列化工具
2018-05-30 09:10 1842什么是序列化 我们的 ... -
JAVA8 JVM的变化: 元空间(Metaspace)
2018-05-24 22:30 962本文将会分享至今为至我收集的关于永久代(Permanent G ... -
(转)服务器性能指标(一)——负载(Load)分析及问题排查
2018-05-21 21:03 1359原创: Hollis Hollis 负载 ... -
(转)对象复用
2018-05-20 15:27 856public class Student { priv ... -
mapreduce中入门中要注意的几点
2018-05-06 08:59 668在 mapreduce中,比如有如下的词: I love b ... -
HDFS的基本操作
2018-05-02 21:47 936-mkdir 在HDFS创建目录 ... -
一个不错的开源工具类,专门用来解析日志头部的,好用
2018-05-02 20:00 767一个不错的开源工具类,专门用来解析日志头部的,好用。 http ... -
介绍个不错的RESTFUL MOCK的工具wiremock
2018-04-27 21:02 1903介绍个不错的RESTFUL MOCK的工具wiremock,地 ...
相关推荐
Activiti 提供了一个强大的API和直观的模型定义语言(BPMN),使得开发者能够快速构建和部署业务流程应用。 ### 2. Eclipse Activiti 5.12 插件特性 - **流程建模**:Eclipse 插件提供了图形化的流程建模工具,...
在本文中,我们将深入探讨如何使用 Activiti 生成 BPMN 图的代码,这对于理解流程设计以及调试流程逻辑至关重要。 首先,BPMN(Business Process Model and Notation)是一种图形化表示业务流程的标准,它提供了...
在MyEclipse环境中,Activiti插件是开发者用来设计、部署和管理流程模型的重要工具。针对标题和描述中提到的问题,我们将详细探讨如何在MyEclipse中成功安装和使用Activiti 5.18插件,以及解决打开BPMN文件时可能...
activiti-bpmn-converter-5.12
在浏览器中创建、嵌入和扩展 BPMN 图。单独使用它或将其集成到您的应用程序中。 1.使用基于Web 的建模组件 轻松创建您自己的 BPMN 2.0 图表。 2.使用该工具包将 BPMN 2.0 图表嵌入到您的应用程序中。 使用对您和您的...
赠送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-...
*Name:*Activiti BPMN 2.0 designer *Location:*http://activiti.org/designer/update/ 出错,有人说是 是这个网址已经不存在了。 用其他的联网安装确实速度有些让人吃惊,毕竟是连的外面的网。 只好使用离线安装。 ...
3. BPMN模型与Activiti的交互:学习如何使用BPMN2.0图形化工具(如Camunda Modeler或Eclipse BPMN2插件)创建流程图,并将其转换为Activiti可识别的XML格式进行部署。 4. Activiti API:掌握Activiti提供的Java API...
Activiti BPMN2.0 Designer是一款强大的业务流程管理(BPMN)工具,它基于开源的Activiti工作流引擎,专为设计、部署和管理业务流程而构建。BPMN2.0是一种标准的建模语言,用于描述企业级的工作流程和业务流程,它的...
Activiti 是一个开源的工作流和业务自动化引擎,它被广泛应用于企业级应用中,用于处理业务流程和工作流。这个压缩包包含的“activiti请假流程文件bpmn.xml”和“流程图”是理解Activiti如何实现请假流程的关键资料...
设计完成后,你可以导出为XML格式的BPMN 2.0文件,然后在Activiti引擎中部署和执行。 Activiti BPMN 2.0 Designer的强大之处在于它的可视化编辑器,它使得业务流程的设计变得简单直观。此外,由于Activiti本身支持...
Activiti以其轻量级、高性能和灵活性而受到开发者欢迎,它与Spring框架有很好的集成,使得在企业级应用中部署和管理工作流变得简单。"Activiti 5.4用户指南(中文).pdf"提供了关于Activiti 5.4版本的详细指导,包括...
标题中的 "activiti-bpmn-model-5.22.0.zip" 指的是 Activiti 的一个特定版本——5.22.0,其中包含了 BPMN(Business Process Model and Notation)模型的相关组件。 BPMN 是一种国际标准,用于图形化表示业务流程...
eclipse插件之Activiti BPMN 2.0 designer,activiti开发必备的可视化插件,当前版本为5.9.3...将解压后的文件夹“Activiti BPMN 2.0 designer”, 直接复制到eclipse根目录下的dropins目录中, 重启eclipse,即可生效
org.activiti/activiti-bpmn-model/5.18.0 Activiti - BPMN Model maven依赖
赠送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-...
eclipse 流程插件离线安装包和依赖包 Activiti BPMN Activiti项目是一项新的基于Apache许可的开源BPM平台,从基础开始构建,旨在提供支持新的BPMN 2.0标准,包括支持对象管理组(OMG),可以定义流程、执行流程并以...
activiti-bpmn-converter-5.18.0-sources.jar
部署业务文档是 Activiti 的一个重要特性,用于将流程定义部署到 Activiti 引擎中。 REST API Activiti 的 REST API 提供了强大的流程管理和自动化功能,包括: * 通用 Activiti REST 原则 * 安装与认证 * 方法...
*Name:*Activiti BPMN 2.0 designer *Location:*http://activiti.org/designer/update/ 总是出现以下的错误 An error occurred while collecting items to be installed 原因是这个网址已经不存在,最可恶是官网的...