上一篇我们学习了BPMN2.0规范    链接    ,知道了BPMN2.0规范是为了帮助我们规范的画流程图的,那么到底应该怎么画呢?这里给大家介绍一些遵循BPMN2.0规范的画图工具。

说明:业务流程图是用来定义具体的业务流程的,这里的业务流程图是依据BPMN2.0规范画的图,即.bpmn或.bpmn20.文件。

一、画业务流程图的工具

这种方式的好处就是上手简单,能实现业务流程的可视化图形建模,使业务流程变得清晰明了,即使不太专业的人员在了解了bpmn标记符号后,也能快速的画出标准的业务流程图。

可用的工具有:

1、activiti-app(activiti6官方demo,主要用他的流程设计器)

获取方式:从activiti官网下载activiti6的资源包,资源包里有个activiti-app.war文件,将这个war包放到tomcat下运行即可,默认的登录账号密码:admin/test。(要用tomcat7.0来运行,tomcat8会登录不上去)

具体方式可参照:SpringBoot Activiti6系列教程(一)-activiti-app部署

ps:可以看看他的代码,将这个流程设计器作为模块集成到项目里面,也是个不错的选择。

2、集成开发环境的bpmn插件

》》》先介绍idea的插件actiBPM

步骤:

1、打开idea的插件浏览器,搜索 actiBPM ,安装并重启idea。

2、右键菜单-》New,就会发现多了Bpmn File 选项,新建一个bpmn file,如果出现以下界面,就说明安装成功了

上面每个符号什么意思都标注出来了,大家可以参照上一章 BPMN2.0规范 画出以下这个请假的业务流程图,接下来的helloworld将会以此流程图来讲解。

ps:刚开始可能不太熟练,多去尝试几次就好了,加油!

解决两个小问题:

1、生成的bpmn文件内容中文乱码

解决:根据电脑版本,修改idea安装目录bin/idea64.exe.vmoptions文件,添加一行内容,重启idea即可。

2、如何生成bpmn文件对应的图片?

解决:idea中修改创建的.bpmn文件后缀为.xml,然后xml文件上右键Diagrams->show BPMN2.0 Designer->export to file即可

》》》再介绍eclipse的插件 Activiti Designer(推荐)

idea的actiBPM插件,当idea版本超过2019版时会有些小问题,所以还是推荐eclipse的插件Activiti Designer相对来说好用些。

我的是5.18版的,选择离线安装的方式。

具体安装方式百度吧

3、网上在线的流程设计器

例如:https://bpmn.52itstyle.vip/ (能导出bpmn文件,但bpmn文件能不能用没试过)

ProcessOn - 免费在线作图,思维导图,流程图,实时协作  (不能生成.bpmn文件,只能画好看的图)

4、其他画图软件,只要支持BPMN2.0规范都可以。

ps:目前我只找到了以上工具,没有找到特别顺手的工具,有好的推荐工具的小伙伴,请在评论区留言,好东西要分享。

值得注意的是,我们画的业务流程图,最终也是要转化成了.bpmn或.bpmn20.xml文件,才能被工作流引擎部署执行。1、2工具画的图虽然丑了点,但是能直接生成bpmn文件,省的再去编写了。3、4虽然画的图好看,但是不能生成bpmn文件,还用自己手动转换成bpmn文件。

方式二:手写xml文件

.bpmn或.bpmn20.xml本质上也是具有bpmn规范的xml文件,有特定的语法格式。学会了该语法就可以像写html加css一样,以标记语言的方式画业务流程图了,只需要找到能解析该语法的工具或环境,就能看到我们写的“代码”的效果。能看懂并手写.bpmn文件对我们学习bpmn规范和acticiti7的工作原理还是很有帮助的。

二、bpmn文件内容解析

以下是上一步在idea中画好的holiday.bpmn文件内容:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:tns="http://www.activiti.org/testm1618019760798" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" expressionLanguage="http://www.w3.org/1999/XPath" id="m1618019760798" name="" targetNamespace="http://www.activiti.org/testm1618019760798" typeLanguage="http://www.w3.org/2001/XMLSchema"><!--业务流程定义--><process id="holiday" isClosed="false" isExecutable="true" name="请假流程" processType="None"><startEvent id="_2" name="开始"><documentation id="_2_D_1"><![CDATA[开始事件的描述]]></documentation></startEvent><userTask activiti:assignee="zhangsan" activiti:exclusive="true" id="_3" name="填写请假单"><documentation id="_3_D_1"><![CDATA[填写请假单描述]]></documentation></userTask><userTask activiti:assignee="lisi" activiti:exclusive="true" id="_4" name="部门经理"><documentation id="_4_D_1"><![CDATA[部门经理审批描述]]></documentation></userTask><userTask activiti:assignee="wangwu" activiti:exclusive="true" id="_5" name="总经理"><documentation id="_5_D_1"><![CDATA[总经理审批描述]]></documentation></userTask><endEvent id="_6" name="结束"/><sequenceFlow id="_7" sourceRef="_2" targetRef="_3"/><sequenceFlow id="_8" sourceRef="_3" targetRef="_4"/><sequenceFlow id="_9" sourceRef="_4" targetRef="_5"/><sequenceFlow id="_10" sourceRef="_5" targetRef="_6"/></process><!--对业务流程图的定义,大小、坐标、符号类型、互相引用等信息--><bpmndi:BPMNDiagram documentation="background=#3C3F41;count=1;horizontalcount=1;orientation=0;width=842.4;height=1195.2;imageableWidth=832.4;imageableHeight=1185.2;imageableX=5.0;imageableY=5.0" id="Diagram-_1" name="New Diagram"><bpmndi:BPMNPlane bpmnElement="holiday"><bpmndi:BPMNShape bpmnElement="_2" id="Shape-_2"><dc:Bounds height="32.0" width="32.0" x="240.0" y="45.0"/><bpmndi:BPMNLabel><dc:Bounds height="32.0" width="32.0" x="0.0" y="0.0"/></bpmndi:BPMNLabel></bpmndi:BPMNShape><bpmndi:BPMNShape bpmnElement="_3" id="Shape-_3"><dc:Bounds height="55.0" width="85.0" x="215.0" y="140.0"/><bpmndi:BPMNLabel><dc:Bounds height="55.0" width="85.0" x="0.0" y="0.0"/></bpmndi:BPMNLabel></bpmndi:BPMNShape><bpmndi:BPMNShape bpmnElement="_4" id="Shape-_4"><dc:Bounds height="55.0" width="85.0" x="215.0" y="240.0"/><bpmndi:BPMNLabel><dc:Bounds height="55.0" width="85.0" x="0.0" y="0.0"/></bpmndi:BPMNLabel></bpmndi:BPMNShape><bpmndi:BPMNShape bpmnElement="_5" id="Shape-_5"><dc:Bounds height="55.0" width="85.0" x="215.0" y="335.0"/><bpmndi:BPMNLabel><dc:Bounds height="55.0" width="85.0" x="0.0" y="0.0"/></bpmndi:BPMNLabel></bpmndi:BPMNShape><bpmndi:BPMNShape bpmnElement="_6" id="Shape-_6"><dc:Bounds height="32.0" width="32.0" x="240.0" y="460.0"/><bpmndi:BPMNLabel><dc:Bounds height="32.0" width="32.0" x="0.0" y="0.0"/></bpmndi:BPMNLabel></bpmndi:BPMNShape><bpmndi:BPMNEdge bpmnElement="_7" id="BPMNEdge__7" sourceElement="_2" targetElement="_3"><di:waypoint x="256.0" y="77.0"/><di:waypoint x="256.0" y="140.0"/><bpmndi:BPMNLabel><dc:Bounds height="0.0" width="0.0" x="0.0" y="0.0"/></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge bpmnElement="_8" id="BPMNEdge__8" sourceElement="_3" targetElement="_4"><di:waypoint x="257.5" y="195.0"/><di:waypoint x="257.5" y="240.0"/><bpmndi:BPMNLabel><dc:Bounds height="0.0" width="0.0" x="0.0" y="0.0"/></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge bpmnElement="_9" id="BPMNEdge__9" sourceElement="_4" targetElement="_5"><di:waypoint x="257.5" y="295.0"/><di:waypoint x="257.5" y="335.0"/><bpmndi:BPMNLabel><dc:Bounds height="0.0" width="0.0" x="0.0" y="0.0"/></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge bpmnElement="_10" id="BPMNEdge__10" sourceElement="_5" targetElement="_6"><di:waypoint x="256.0" y="390.0"/><di:waypoint x="256.0" y="460.0"/><bpmndi:BPMNLabel><dc:Bounds height="0.0" width="0.0" x="0.0" y="0.0"/></bpmndi:BPMNLabel></bpmndi:BPMNEdge></bpmndi:BPMNPlane></bpmndi:BPMNDiagram></definitions>

解析:

1、可以看出这是一个xml文件,有个根元素definitions用于包含多个流程定义,但一般建议一个.bpmn文件是一个流程定义。

2、分为两大块,process块和bpmndi块。

3、process块的内容符合第一章讲的BPMN2.0规范,根据第一章讲的你会发现整个process块的内容你都能看懂。该process块的主要作用是定义业务流程信息,最终被工作流引擎解析并读取里面的内容,至于他是怎么读取并解析的,会在 acitivit7 Helloworld的activiti7工作原理中说明。

4、bpmndi块定义业务流程图形的信息,主要用于展示,不会对流程执行产生任何影响。

三、后记

ok,以上画图工具也有了,基本的业务流程图也画出来了,可谓万事俱备只欠东风啊!

接下来就要把画好的holiday.bpmn交给activiti解析和执行了,具体怎么样去执行?我会在接下来的activiti7 helloworld一文中说明,一起来看看吧!

activiti7(二):画业务流程图的工具以及bpmn文件内容解析相关推荐

  1. 2019-8-20 [Linux] 6.Shell的基本操作 查看 改变 列出 阅读开头/结尾 循环查看 阅读工具less 查找文件内容 文本分析工具AWK 文本编辑工具SED文件find 帮助man

    文章目录 6.linuxShell的基本操作 6.1 查看目录和文件 6.1.1 显示当前目录:pwd 6.1.2 改变目录:cd 6.1.3 列出目录内容:ls 1) 查看列表信息 以及详细信息 2 ...

  2. syncthing开源工具,同步文件内容,入门操作简要指导

    文章目录 一.前提 二.windows版本的syncthing操作步骤 1.首先在A机器上操作,下载windows版本 2.解压,运行 3.添加一个共享文件夹 4.查看设备ID 5.在 B机器 进行以 ...

  3. robotframework 测试工具添加PDF文件内容匹配插件

    robotframework  这个需要了解的请度娘.本文实现的是一个小功能.大体分为如下几个步骤 1)给定一个pdf文件. 2)读取pdf文件内容,并解析为文本内容. 3)通过给定的内容,比对pdf ...

  4. 业务流程图怎么画?3步+8张案例,5分钟教你快速上手!

    业务流程图能很好地帮助我们梳理业务,高效表达需求.尤其是产品经理在梳理业务时,经常会用到业务流程图,业务流程图会在产品经理画原型图前,帮助梳理产品业务流程,避免做无用功. 今天从业务历程图的基本介绍. ...

  5. 大话业务流程图(二)—如何绘制业务流程图?

    上一篇文章(大话业务流程图(一)--什么是业务流程图)介绍了业务流程图的基本概念,本篇重点聊聊如何绘制一份完整的业务流程图. 还是先来看一个例子: 小李是某SaaS公司的产品助理,拜师在经验丰富的老王 ...

  6. 产品经理必备技能:业务流程图

    PM的日常工作中,经常和业务流程图打交道.对于才入行的PM来讲,业务流程图到底是什么.该怎么画以及注意事项有哪些,在本篇文章中将具体介绍,希望给在工作中对应业务流程图"懵逼"的你有 ...

  7. 业务流程图与数据流程图的比较

    业务流程图与数据流程图的比较 [摘要]业务流程图(Transaction Flow Diagram)和数据流程图(Data Flow Diagram)是结构化信息系统开发方法中两种常用的图形工具.本文 ...

  8. 业务流程图 vs 数据流程图

    一.业务流程图与数据流程图的区别 1. 描述对象不同 业务流程图的描述对象是某一具体的业务; 数据流程图的描述对象是数据流. 业务是指企业管理中必要且逻辑上相关的.为了完成某种管理功能的一系列相关的活 ...

  9. 如何绘制业务流程图?

    绘制业务流程图是产品经理必备掌握的技能之一,尤其是对 B 端产品经理来说,要分析好需求写好一篇完整的 PRD 文档,首先就是绘制正确的业务流程图. 什么是业务流程图 在开始讲业务流程图之前,我们需要先 ...

最新文章

  1. 诺奖得主涉嫌学术不端!30余篇论文被指涉嫌P图造假、复制粘贴,合作者包括中国学者...
  2. ng-options渲染的第一项为空的解决办法
  3. 史上最全的CSS hack方式一览(转)
  4. CSS修改tr边框属性
  5. Prototype Pattern(原型模式)
  6. 14英寸电脑长宽多少_连接4K显示器流行,带雷电3雷电4接口的笔记本要多少钱?...
  7. java字符串排序_对字符串排序持一种宽容的心态
  8. 检查点(Checkpoint)过程如何处理未提交的事务
  9. vue中使用Ueditor编辑器 -- 1
  10. 06.Qt菜单栏工具栏学习(一)
  11. Android面试系列文章2018之内存管理之UI卡顿篇
  12. 使用Elasticsearch和C#理解和实现CRUD APP的初学者教程——第1部分
  13. 正交匹配追踪算法OMP
  14. pert计算公式期望值_PERT网络分析法
  15. 孝感市小学生机器人编程比赛_小学生获机器人大赛一等奖 编程是语文老师教的...
  16. 区块链开发零基础必备技能之GO语言从入门到高级
  17. 腾讯云服务器80等端口无法访问
  18. arcos的matlab定义,基于MATLAB编程软的齿轮设计
  19. java.lang.ClassCastException: cn.hutool.json.JSONObject cannot be cast toXXXX
  20. 解决this._data.$$state...“Error: [vuex] do not mutate vuex store state outside mutation handlers.“ 报错

热门文章

  1. 实现AI角色的自主移动-追逐Pursuit行为
  2. codepen中html如何引用图片,源自codepen的25个最受欢迎的HTML/CSS 代码
  3. c语言iconv转码错误,调用iconv转换编码坑
  4. C语言编程:猴子吃桃问题
  5. zabbix配置钉钉机器人告警
  6. Android PopupWindow简略总结
  7. 了解SYSDATE函数
  8. Zotero如何在word中引用跳转到参考文献/建立超链接
  9. 现代C++学习笔记——第4章 容器
  10. vue项目打包后直接修改ip地址