绘制一个 Activiti BPMN 流程图
文章目录
- 1 摘要
- 2 流程绘制
- 2.1 流程绘制
- 2.2 指定代理人
- 2.3 保存与导出
- 2.4 流程图配置文件
- 3 推荐参考资料
- 4 Github 源码
1 摘要
BPMN 的全称是: Business Process Model and Nation,直译为:业务流程建模与标注,俗称流程图。本文将介绍使用 Activiti 官方的 web 工具绘制简易流程图。
2 流程绘制
2.1 流程绘制
一个流程,必须包含一个开始事件,一个结束事件,中间由具体的流程事件组成
流程示例:
学生请假流程:
2.2 指定代理人
每一个流程节点需要指定一个代理人,即流程执行到某个任务,需要有指定的用户来进行审批
指定代理人的方式有3种:
第一种: 固定代理人,如上图
第二种: 使用 UEL 表达式动态设置代理人
第三种,使用监听器实现动态设置代理人
2.3 保存与导出
流程图绘制完成之后即可保存模板
此时流程配置是保存在数据库中,查看流程列表,选中刚配置好的流程图,查看详情并导出
导出的文件为 xml
格式,将其改为 bpmn
格式,然后复制到 Activiti 项目中
2.4 流程图配置文件
上边介绍了3中设置代理人的方式,每一种生成的 bpmn
文件如下:
第一种,固定代理人:
./activiti-workflow/src/main/resources/processes/student_leave.bpmn
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.activiti.org/processdef"><process id="student_leave" name="student_leave" isExecutable="true"><startEvent id="startEvent1" name="开始"></startEvent><userTask id="sid-8D6861B2-9FE9-4909-B091-73F2B6400764" name="学生" activiti:assignee="张三"><extensionElements><modeler:initiator-can-complete xmlns:modeler="http://activiti.com/modeler"><![CDATA[false]]></modeler:initiator-can-complete></extensionElements></userTask><userTask id="sid-436168A2-4968-4D3F-9A33-51776F9733FE" name="班主任" activiti:assignee="李四"><extensionElements><modeler:initiator-can-complete xmlns:modeler="http://activiti.com/modeler"><![CDATA[false]]></modeler:initiator-can-complete></extensionElements></userTask><endEvent id="sid-EA98BD32-1A93-4AF2-A374-7DF39A33ABAA" name="结束"></endEvent><sequenceFlow id="sid-385279BD-97C2-44BC-9A9E-84179F795459" sourceRef="startEvent1" targetRef="sid-8D6861B2-9FE9-4909-B091-73F2B6400764"></sequenceFlow><sequenceFlow id="sid-6B7E69AB-52AA-4CD8-BF45-CD76E6CC7CEC" name="提交申请" sourceRef="sid-8D6861B2-9FE9-4909-B091-73F2B6400764" targetRef="sid-436168A2-4968-4D3F-9A33-51776F9733FE"></sequenceFlow><sequenceFlow id="sid-2A3D7AD7-E0F8-42ED-A521-A22E42F5B8CA" name="同意" sourceRef="sid-436168A2-4968-4D3F-9A33-51776F9733FE" targetRef="sid-EA98BD32-1A93-4AF2-A374-7DF39A33ABAA"></sequenceFlow></process></definitions>
第二种,使用 UEL 表达式设置代理人
./activiti-workflow/src/main/resources/processes/student_leave_2.bpmn
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.activiti.org/processdef"><process id="student_leave_2" name="student_leave_2" isExecutable="true"><startEvent id="startEvent1" name="开始"></startEvent><userTask id="sid-486A7692-35E4-476A-94EF-3566C01B8F39" name="学生申请" activiti:assignee="${student}"><extensionElements><modeler:initiator-can-complete xmlns:modeler="http://activiti.com/modeler"><![CDATA[false]]></modeler:initiator-can-complete></extensionElements></userTask><userTask id="sid-23DCF2CD-D1E0-4B66-9853-352B2E505782" name="班主任审批" activiti:assignee="${teacher}"><extensionElements><modeler:initiator-can-complete xmlns:modeler="http://activiti.com/modeler"><![CDATA[false]]></modeler:initiator-can-complete></extensionElements></userTask><endEvent id="sid-52FDCD77-D54C-4340-B624-93B92D941E77" name="结束"></endEvent><sequenceFlow id="sid-96C3385F-899C-4149-B695-CEF25F5213CB" sourceRef="startEvent1" targetRef="sid-486A7692-35E4-476A-94EF-3566C01B8F39"></sequenceFlow><sequenceFlow id="sid-5602EE93-61DC-4326-80A6-C76661889900" name="提交申请" sourceRef="sid-486A7692-35E4-476A-94EF-3566C01B8F39" targetRef="sid-23DCF2CD-D1E0-4B66-9853-352B2E505782"></sequenceFlow><sequenceFlow id="sid-EABF7DE5-1A32-4EFF-9627-9B5AB70D5E8A" name="同意" sourceRef="sid-23DCF2CD-D1E0-4B66-9853-352B2E505782" targetRef="sid-52FDCD77-D54C-4340-B624-93B92D941E77"></sequenceFlow></process></definitions>
第三种,使用监听器动态设置代理人
./activiti-workflow/src/main/resources/processes/student_leave_3.bpmn
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.activiti.org/processdef"><process id="student_leave_3" name="student_leave_3" isExecutable="true"><startEvent id="startEvent1" name="开始"></startEvent><userTask id="sid-569880EE-EF90-4CA2-BF03-8CE45BADD383" name="学生申请"><extensionElements><activiti:taskListener event="create" class="com.ljq.demo.springboot.activiti.listener.TaskListenerImpl"></activiti:taskListener></extensionElements></userTask><userTask id="sid-38242A27-92B1-4225-BE1E-1BEF001C6323" name="班主任审批"><extensionElements><activiti:taskListener event="create" class="com.ljq.demo.springboot.activiti.listener.TaskListenerImpl"></activiti:taskListener></extensionElements></userTask><endEvent id="sid-D4A37973-6FD9-4797-8F76-4741F1CED489" name="结束"></endEvent><sequenceFlow id="sid-66EACD0C-9A58-4D52-8CB8-B910D78A248B" sourceRef="startEvent1" targetRef="sid-569880EE-EF90-4CA2-BF03-8CE45BADD383"></sequenceFlow><sequenceFlow id="sid-C45AB0DF-5784-4DED-B73C-DDBD104962D2" name="批准" sourceRef="sid-38242A27-92B1-4225-BE1E-1BEF001C6323" targetRef="sid-D4A37973-6FD9-4797-8F76-4741F1CED489"></sequenceFlow><sequenceFlow id="sid-B9CE8749-BE0E-4669-A079-E97444983341" name="提交申请" sourceRef="sid-569880EE-EF90-4CA2-BF03-8CE45BADD383" targetRef="sid-38242A27-92B1-4225-BE1E-1BEF001C6323"></sequenceFlow></process></definitions>
一个简单的流程图至此已经绘制完成,如何启动流程,将在后边的博客讲解
3 推荐参考资料
【官方文档】Activiti User Guide
Activiti工作流实战开发
Activiti第一篇【介绍、配置开发环境、快速入门】
4 Github 源码
Gtihub 源码地址 : https://github.com/Flying9001/springBootDemo
个人公众号:404Code,分享半个互联网人的技术与思考,感兴趣的可以关注.
绘制一个 Activiti BPMN 流程图相关推荐
- Activiti bpmn流程图设计工具 分享
1.前言 由于最近在学习java的activiti工作流框架,本人使用是IDEA,但是idea的actibpmn 在新版idea中不支持,且bug多,使用体验也不好,其他的选择就是单独安装一个ecli ...
- java中bpmn流程图_Java学习之BPMN知识以及Activiti的流程部署
BPMN的介绍 Activiti项目是一项新的基于Apache许可的开源BPM平台,从基础开始构建,旨在提供支持新的BPMN 2.0标准,包括支持对象管理组(OMG),面对新技术的机遇,诸如互操作性和 ...
- 学习笔记之-Activiti7工作流引擎,概述,环境搭建,类关系图,使用Activiti BPMN visualizer,流程变量,组任务 网关,Activiti整合Spring SpringBoot
本篇学习笔记是观看黑马程序员Activiti7视频而得 Activiti7 一.工作流介绍 1.1 概念 工作流(Workflow),就是通过计算机对业务流程自动化执行管理.它主要解决的是" ...
- Activiti基础02:手把手带你来创建一个Activiti工作流
更多Java从0-1的笔记均在专栏中- Activiti基础01:从认识Activiti7开始,到环境配置 一.Activiti入门 在本章内容中,我们来创建一个Activiti工作流,并启动这个流程 ...
- Activiti 自定义流程图颜色
Activiti 自定义流程图颜色 流程图执行的为绿色,待执行为红色. 绘制流程图 package org.jeecg.common.config;/*** activiti6流程图绘制** @aut ...
- 【idea中Activiti BPMN visualizer插件和Camunda Modeler工作流设计器的简单使用】
1.Idea中的工作流插件Activiti BPMN visualizer Activiti插件actiBPM在新版的idea 2020及以上版本中已经不支持,Activiti BPMN visual ...
- activiti bpmn 安装不上_小猿圈之Eclipse安装Activiti插件(流程设计器)
学习java的朋友们,想必一定会接触到eclipse,那怎么在eclipse下安装activiti呢,小猿圈今天带你学习一下,希望大家看后可以学会. 一.安装步骤: 1,打开Eclipse的 Help ...
- 推荐一个在线创作流程图、思维导图软件—ProcessOn
转载自 推荐一个在线创作流程图.思维导图软件-ProcessOn 最近要画流程图,破解了半天Visio2016没搞定,2016的估计都被封了,Visio收费又过贵,又不想折腾低版本的破解,所以找了个在 ...
- 游戏策划入门(5)——开始绘制系统的结构流程图
开始绘制系统的结构流程 在完成了游戏的主框架后,你自己脑子里面应该非常清楚你的游戏是什么样子了.那么,怎么保证别人能够知道你的想法呢?详细的说明文档是一种办法,可是大量的文字信息只会让程序人员不断的打 ...
最新文章
- 【题解】P1508 Likecloud-吃、吃、吃(简单DP)
- 浏览器数据库IndexedDB介绍
- Linux 自定义命令
- PHP JSON数组与对象的理解
- 地牢房间迷宫走廊生成(二),Python实现洪水法、完美迷宫
- git安装步骤_详解linux安装git的方法步骤(超实用)
- 转专业有什么要求吗?
- Java获取函数参数名称
- Java URLEncoder 和 URLDecoder 对中文进行编码和解码
- 使用MSHTML解析HTML页面
- Kali下TheFatRat工具的安装教程
- JPEG中Huffman解码实例讲解
- [安卓手机安装Apk ] 安卓手机通过数据线在电脑下载本地的Apk应用
- 移动电影院为小众精品影片提供更广大的生存空间
- 开源中Web开发的各种资源
- 殷国辉老师 银行行长经营管理专家
- SMBLoris windows拒绝服务漏洞
- 玩转可视化图表之矩形树图
- 2021年高处安装、维护、拆除考试报名及高处安装、维护、拆除模拟考试题库
- python3-opencv库(4)--图片像素运算,利用加权叠加调节图像对比度和亮度
热门文章
- C#的TimeSpan通用操作
- Linux异步回调架构的实现
- leetcode中等之176.第二高的薪水
- 百度指数邀请序列号_百度男星人气榜,李现第六,王一博第二,榜首王者归来...
- 【增值税发票识别 OCR】如何实现自动化发票管理
- 风控建模七:拒绝推断
- 上市公司章程设置反收购条款研究
- python爬去百度搜索结果_python爬虫获取百度搜索结果的简单示例
- Java 9 揭秘(4. 模块依赖)
- 如何从数据库中筛选出达成指定里程碑节点的项目_【译】如何写出一份优秀的软件设计文档...