文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

什么是 Bpmn ?为什么要用 Bpmn和工作流 ?

2024-12-03 01:07

关注

BPMN 和 Activiti 介绍

工作流介绍

在任何行业和企业中,都有各种各样的流程,例如:

就算你自己没有设计过工作流,那么你每天肯定也在使用各种流程。

为什么要用 BPMN ?

对于流程控制,有一种比较初级的玩法是:在业务代码里面加入 Status(状态机) 字段维护流程状态,流程负责的审批人可能也是 Hard Code(硬编码),这种玩法实现流程初级会比较快,但是长远来看会出现几个问题:

  1. 流程健壮性差,但凡出现人员变动,或者组织结构调整,就需要修改代码,维护成本高
  2. 流程无法复用,当组织出现新的工作流程,又要重新写一套代码,开发成本非常高
  3. 流程和业务代码耦合,你中有我,我中有你(并不符合单一职责和解耦的设计原则)

BPMN:业务流程模型和标记法 工作流(Workflow)是对各个行业的流程进行抽象,例如电信、软件、制造、金融和办公自动化领域。为了给全部业务的参与者提供易于理解的标准标记法,由业务流程管理倡议组织 BPMI 开发出了“业务流程建模标记法” Business Process Modeling Notation, BPMN。BPMI 组织 于 2005 年并入 OMG 国际规范组织(Object Management Group),当前 BPMN 规范由 OMG 组织进行维护。

为什么要遵循规范 ?

遵循市场行为

举例:我们日常的电池 ?? 有 7 号和 5 号标准,你当然可以生产一个 6 号的电池,有没有人买就没人知道了,如果你按标准生产出的电池,那么是可以直接用到大多数电器上,如果你生产 6 号电池,那么你只能自己开发 6 号电池的电器,且不说你这样的做法是否被市场和行业认可,另外搞那么多不同的标准出来对于消费者来说也是一种灾难,例如当年微软的 IE 和 FireFox 的两套标准让现在的开发人员多么痛苦就知道了。。

遵循行业的共识

目前主流的工作流厂商都是基于 BPMN 2.0 规范开发流程,想要自立规范之前也请完全掌握和了解目前的规范。

云程

JeectBoot

另外对于产品和业务人员也需要学习和理解 BPMN 的符号,从而可以对业务进行建模,可以看看人人都是产品经历这篇文章: 关于 BPMN 流程建模方法 ,从而可以利用现有的 BPMN 流程设计器工具快速对业务建模(无需自己开发),只需将导出的 *.bpmn 文件导入遵循 BPMN 规范的流程引擎内即可运行。充分利用行业的生态和工具。这就是遵循规范所带来的收益。

有没有银弹 ?(BPMN 的适用场景)

我们知道软件行业是没有银弹,任何工具都有适用场景,如果把一个工具放到一个不适应的场景内,那么最终起到事倍功半的效果,流程引擎也不是银弹,它是一个对于复杂流程和抽象和复用工具,对于那些工作流程多且复杂的业务系统,合理的使用流程引擎会大大降低我们对于工作流的开发成本和时间,并且最终交付的效果也会比自己开发流程引擎要好上许多。

但是如果你的业务系统没有那么多的工作流程,或者只有很简单的状态从 A -> B 的转移,那么引入流程引擎显然是 大马拉小车,费时费力不说,而且会造成简单的需求开发起来很麻烦,拉长开发周期时间,最终交付的效果也未必很好。所以选择合适的工具,就成了程序员最重要的选择。

Activiti 是应对大型系统的复杂流程的作战工具,小规模场景和流程不复杂的业务系统,不建议使用。 本章总结:为什么要用工作流引擎 ?

BPMN 规范介绍

由于 BPMN 1.0 规范广受欢迎,OMG (Object Management Group) 组织于2011年1月发布 BPMN 2.0 规范,BPMN 2.0 版本则继承了 1.0 版本的内容,并且注重流程执行语法和标准交换格式。

OMG 组织致力于维护 BPMN 规范的两个目标:

流程的可迁移性:BPMN 2.0 规范定义了业务流程的符号以及模型,并且为流程定义设定了转换格式,目的是为了让流程的定义实现可移植性,那么用户可以在不同的供应商环境中定义流程,并且这些 流程可以移植到其他遵守 BPMN 2.0 规范的供应商环境中。

解决简单和复杂的平衡:BPMN 想要解决流程设计和复杂需求中间寻找一个平衡点,可以让非技术人员建立简单并且易懂的业务流程模型,同时可以处理高度复杂的业务流程,因此要解决这两个矛盾的要求,需要在 BPMN 规范中定义标准的图形和符号。

四种基本要素

BPMN 2.0 的图形结构和要素,建议直接参考 WIKI 百科的答案,这里我就不搬运了:

2.0 的几点改进

相比 BPMN 1.0 主要有以下改进:

Activiti 介绍

Activiti 是目前国内比较主流的基于 BPMN 2.0 规范实现的工作流引擎,目前已经发布到 7.X 版本,并且已经开始实现 DMN 规范(决策与图形,后面会讲),另外关于工作流引擎还有一些比较老牌的玩家例如:JBPM 现在发展的也很不错,还有目前比较新兴的流程引擎:camunnda,flowable 目前看起来也潜力十足,他们都是遵循了 BPMN 2.0 规范,因为在国内应用的比较主流,所以这里我们这里重点介绍 Activiti

Activiti 出现和发展

这里简单介绍 JBPM 和 Activiti 的发展历史,有兴趣深究的自行去 Google 搜索

Activiti 的发展线路:

JBPM、Activiti 区别

  1. JBPM 推翻历史架构,重新使用了 Drools Flow 作为工作流架构
  2. JBPM 采用的是 LGPL 开源协议,对源码修改需要商业授权
  3. Activiti 采用了更为宽松的 Apache License 2.0 协议
  4. ……(想到再补充)

官方的 Activiti 示例

官方发布的 Activiti 演示程序,可以首先通过该例子来了解 Activiti 大部分功能,包括:

等等,通过这个示例程序,作为切入 Activiti 的引子,建立初步了解后,更有信心深入了解 Activiti 工作流引擎

下载和使用示例程序步骤:

Activiti 目录 /wars 下的三个示例程序职责分工:

应用 说明 地址 默认账号
activiti-app 一个比较完善的流程引擎示例程序 /activiti-app admin/test
activiti-admin 用于查看流程引擎中的主要数据 /activiti-admin admin/admin
activiti-rest rest-api 应用 API,不再局限 Jar /activiti-rest kermit/kermit

演示一个简易的工作流的几个步骤:

  1. 进入 activiti-app 系统,为创建用户
  2. 设计一个简单的工作流,并且为流程节点绑定用户
  3. 创建 HR App 应用程序,设置包含请假流程,并且发布
  4. 员工进入 HR App 程序,提交一个请假申请
  5. 经理进入系统,并且同意员工的请假申请,示例流程完成
  6. 通过 activiti-admin 程序连接到 activiti-app 查看流程的历史

进入 activiti-app 系统,为创建用户

这里简单介绍三个菜单的主要功能:

在 Identity management -> Users 菜单创建两个用户,用于模拟工作流:

在 Kickstart App -> Processes 创建简单的请假流程

值得注意的是需要为用户任务分配流程变量,我们这里简单起见直接绑定用户,如图:

最后我们在 Kickstart App -> Apps 创建一个应用程序,并且绑定刚才设计的请假流程,如图:图片

切记要发布流程,这样我们切换普通员工 jack 身份进入系统的时候,就能看到发布应用程序,并且可以发起请假申请了,如图:

Show New App

今天身体有点不舒服,进入 HR App 发起请假申请,如图:

当我的请假申请提交的时候,任务就会自动发到经理那边,我们切换经理账号看看:

当经理点击完成后,流程走完,任务就自动结束了。

那么如果想要查看流程历史,就要借助 activiti-admin 这个演示程序了:

  1. 打开链接:http://localhost:8080/activiti-admin/ 进入首页
  2. 输入默认账号 admin/admin 就可以
  3. 首次进入要配置 activiti-app 的信息

如图:

activiti-app Config

这里我们配置过就可以直接打开 Instance,就可以看到所有执行过的流程历史,点击流程实例就可以看到详细的历史信息,如图:

总结

本篇主要介绍:

以上功能只是流程引擎的九牛一毛,希望通过以上示例程序可以更好的帮助大家建立信心,从而更好面对后面的进阶知识。更好的掌握 Activiti 和 BPMN 2.0 的世界。

 

来源:小二十七内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯