关于“流程引擎”的学习、思考与实践
一般在低代码平台、或者OA、CRM产品中,我们常常可见“流程引擎”这一模块的存在。那么,流程引擎究竟是什么?它又可以解决哪些业务上的问题?本篇文章里,作者结合具体产品,从定位、作用、实践等维度对流程引擎做了一定思考,一起来看一下。
一、写在前面
最近心血来潮,一直想总结复盘一下自己此前做的“平台化”项目,形成文章后分享输出。但类似项目又实在是过少,且本人也欠缺很多知识,所以直接复盘我的项目,意义和收获将不是很大,我也怕写出来误人子弟,遂就有了本篇内容。
我通过亲自上手学习体验市面上的一些平台类产品(轻流低代码平台、飞书审批流程),试图理解其设计理念后,再与自己过往的经验做对比、剖析,以期获得更多收获和成长,同时将我关于“流程引擎”的一些学习内容和思考整理出来,供大家一同学习和参考~
二、学习目标
- 了解流程引擎是什么;
- 思考流程引擎为何会出现?流程引擎能用来做什么?
- 了解流程引擎的产品设计方法和设计思路,从而为个人在后续产品工作中接到类似任务/找工作跳槽时,提供相关经验参考。
三、流程引擎多用于应用在哪?什么样的产品会需要流程引擎?
如若平时有多看、多了解的话,就会发现:流程引擎、表单引擎、报表引擎、门户引擎…这些所谓的引擎,就是通过各种配置化减少编码量或无需编码的方式快速帮助用户搭建一个流程/报表/应用,多常见于各类【低代码平台】产品中,如低代码平台“轻流”、“宜搭”。且这些流程引擎、表单引擎、报表引擎、门户引擎,都处在产品架构的PaaS那一层。
此外,流程引擎、表单引擎…这些引擎也常见于OA、CRM这些超级应用的产品架构中。
图1 轻流 CRM应用产品架构(图来自轻流截图)
图2 宜搭产品功能介绍(图来自阿里云官网)
图3 飞书产品功能介绍
图4 纷享销客PaaS产品架构
为什么流程引擎、表单引擎…这些引擎也常见于OA、CRM这些超级应用的产品架构中?
这也不难理解,OA系统、CRM系统,属于通用垂直型SaaS产品(多为SaaS形态),服务于各行各业的各类组织和企业,每个企业均会涉及各种各样的业务流程和业务表单,有些流程是所有企业基本相通的,如报销流程、请假流程。
但企业与企业之间的流程,总归有些是不同的,是需要定制化的,一旦OA系统、CRM系统面对的客户量多起来后,为每个企业或组织单独定制化开发一套流程或一套表单,是不可能的,根本无法规模化。
所以,做OA/CRM等这些超级应用的厂商,为了节省定制开发成本,在战略上/产品架构上会去选择开发“可配置”的流程、“可配置”的表单、“可配置”的报表、“可配置”的应用,以适配于各行各业的业务应用场景,比如可用于来创建一个报销审批流程、一个营销活动审批流程、一个进销存管理流程等等…。
注:这些做CRM/OA系统和平台的厂商,会在产品的成长期或成熟期去做这样的流程引擎。而在产品引入或探索期,是不做的。为什么?
因为,客户量较少的情况下,开发这样一套流程引擎、表单引擎的成本可能还要大于直接定制表单、定制流程的成本。
个人认为,低代码平台/无代码平台,像轻流、宜搭,是CRM、OA、ERP这些业务系统的抽象,是抽象基础上的再抽象。——如果说CRM系统(如纷享销客CRM、销售易Neocrm)可以用来解决各类企业关于“客户全生命周期管理”的难题;那么低代码平台/无代码平台,不仅可以解决CRM能解决的问题,还能通过快速搭建自定义应用来解决OA、ERP、任何一个业务系统可以解决的业务难题。
四、轻流“流程引擎”、飞书“流程引擎”上手学习体验与思考
在了解了流程引擎/表单引擎为何会出现,以及常出现于何种应用场景、何种产品中后,就可以深入去体验一波现在市面上的一些低代码/无代码产品了,通过亲自上手体验学习了解后,作为对这块完全没经验的产品经理,才能自己设计。下面以【自定义报销审批流程】为例,进行体验和讲解。
图5、图6、图7分别给出了轻流和飞书创建【自定义审批流程】的界面截图:
图5 轻流-自定义报销审批流程-报销表单填写示例
图6 飞书-自定义审批流程-表单设计
图7 飞书-自定义审批流程-报销表单示例
通过对比我们发现:不论是轻流的自定义流程搭建、还是飞书的自定义流程搭建、还是图2宜搭的产品对外功能介绍截图,建立【流程引擎】都需要这样几个必备步骤:
- 流程基本信息填写(包括流程名称、流程描述等);
- 表单设计;
- 流程设计;
- 发布流程;
思考一下,为什么流程设计里需要表单设计?
这不是废话一样么?想一想,是不是我们参与过的任何一个流程,都有表单/订单/工单?这些表单也好,工单也罢,是用来承载/提交数据的,而流程则是数据流通的管道,所以流程运转的前提就是要有表单数据,而是否需要表单可配置(表单设计),一般情况下,都会提供现成的模版,但开发商不可能穷举所有模版,所以就需要表单设计啦。
下面我们逐一使用和思考【流程引擎】搭建过程中,每个步骤实现所必需的功能。
1. 关于【流程基本信息填写】
流程基本信息填写,通常包括流程名称、流程描述等内容的填写。
这个无需过多解释,我们平时在设计任何一个业务流程/表单/应用时,都会要求先填写名称和描述信息,系统根据这个生成一条独一无二的数据记录(分配一个ID)。
对于我创建的【报销审批流程】,我给它命名为“报销审批流程”,见图5。同时关于报销审批单的字段,我设置了有:项目编号(必填)、报销类型(必填)、所属公司/部门(必填)、费用金额(必填,人民币)、报销事由(必填)、费用类型(必填)、费用说明(选填)。
2. 关于【表单设计】
通过上面图2、图5、图6,我们看到关于【表单设计】功能,平台需提供常用的表单控件列表,供用户拖拉拽到画布中,还需支持用户编辑每一个控件的名称、是选填or必填、控件功能说明提示等基础设置外,还需支持一些常用的控件高级设置。
控件基础设置:
- 如下拉选择控件,需要定义枚举选项值;
- 如文本输入框,可以设置默认显示的文字、最长字符数限制等;
- 如数字控件,需支持设置数字是小数/整数,若设置为小数,还需支持设置小数位数最多几位;
- 如是附件控件,则需支持设置常见的附件总共文件大小、附件个数、附件文件类型等这些参数;
- 如是时间控件,则需支持设置日期类型。
控件高级设置:
在一些场景中,一些选项会有依赖关系。比如在报销审批场景中,对于“报销事由”这一项,只有当报销类型为差旅费或交通费时,才需要员工填写,此时我们可以对该“报销事由”控件进行高级设置,设置当报销类型选中差旅费或交通费时,该“报销事由”控件才会显示(这一点也特别类似于我们在使用Axure对元件交互设计时,当某个按钮某种状态30秒倒计时结束时,按钮恢复初始态/隐藏)。
图8 飞书-自定义审批流程-控件高级设置
再比如如下场景中:我需要根据用户选择的信源类型,来展示需要填写的字段内容(如twitter采集必填是账号名,tg群组采集必填是url),也可通过上述表单配置/高级配置来实现,在飞书中是高级配置;在轻流中,则是对下拉框设置“逻辑表单”。
图9 控件高级设置-场景举例(根据控件1选择的内容,自适应展示其它控件)
图10 轻流-自定义报销审批流程-控件高级设置(逻辑表单规则配置)
3. 关于【流程设计】
首先进行【流程设计】功能体验前,可以回想一下我们平时用的最多的一些场景,比如【报销】、【请假】,其业务流程都是怎样的?然后再基于这个先验知识再去上手使用会来的容易一些。
这是我们【报销】/【请假】场景的常见流程(是不是很熟悉?):
- 员工发起申请;
- 老板/上级/(逐级)负责审批,每一级可以审批通过、也可以驳回、也可以不通过;
- 有时还会看到:系统自动抄送给xxxx;
- 有些流程允许发起人撤回,有些则不允许撤回。
关于这块,额外补充下自己的看法与读者探讨。我认为,在流程设计时,可以优先保证正向流程走通,然后再保证逆向业务流程的走通。在产品设计时,除了要考虑正向情况,还要考虑边界情况。
带着上面关于请假、报销场景的流程的先验知识,我们具体来看一下飞书和轻流的【流程引擎-流程设计】都包含了哪些内容:
图11 飞书-自定义审批流程-流程配置截图
图12 飞书帮助中心/审批流程设计使用说明
图13 飞书帮助中心/审批流程设计使用说明
图14 轻流-自定义审批流程/流程设置界面截图
图15 轻流-流程引擎/节点说明
图16 轻流-流程引擎/编辑流程节点负责人-界面截图
图17 轻流-流程引擎/编辑审批节点-界面截图1
图18 轻流-流程引擎/编辑审批节点-界面截图2
图19 轻流-流程引擎/审批节点设置-审批超时提醒配置
图20 轻流-自定义审批流程-流程配置/添加完审批节点、抄送节点
通过上面几张界面截图以及轻流&飞书帮助手册,我们可以大致总结出如下几点内容:
1)常见的审批流程,通常包括如下几个环节:
- 发起节点(环节)
- 审批节点(环节)
- 抄送节点(环节)
- 结束节点(环节)
2)发起节点、结束节点一般不需要太多配置功能。
3)审批节点最麻烦,要支持的配置项最多。抄送节点,我觉得应该属于“旁支”,而像轻流把“抄送节点”放在了主流程中的一环,我觉得不妥当。如下是飞书的考勤异常-补卡申请流程,抄送节点并没有体现在审批流中。
图21 飞书-考勤异常-补卡申请
关于审批节点的知识:
- 审批环节,业务上一般会出现需要单人审批和多人审批的场景。
- 审批类型,一般有会签、或签、逐级审批(依次审批)。
对于单人审批的场景,会签=或签。
对于多人审批场景:会签,要求节点上的所有人均通过/均拒绝才可;而或签,只要求一名负责人通过/拒绝即可推进流程正向运转或退回上一节点。
4)要想通过配置方式,实现诸如上述【报销审批流程】的搭建,则必须进行业务流程抽象。
- 流程是由各个环节(节点)组成的。
- 在每个环节中,我们要支持设置节点的责任人(选择该流程节点的责任人,需支持快捷选择节点责任人,如按部门、按角色等),可能是具体用户、可能是机器人。
- 在每个环节中,除了设置责任人外,还需要支持设置对节点的操作(通过/不通过/驳回:①通过-通过填写通过意见;②不通过(不通过填写不通过原因);③驳回(驳回填写驳回意见))、超时提醒配置、超时预警配置、待办转交配置、添加抄送人及抄送方式等等)。
对于我创建的【报销审批流程】,我给它命名为“报销审批流程”,见图5。
关于报销审批单的字段,我设置了有:项目编号(必填)、报销类型(必填)、所属公司/部门(必填)、费用金额(必填,人民币)、报销事由(必填)、费用类型(必填)、费用说明(选填)。
关于报销审批流程-流程节点的设置,主要分为开始节点(发起申请节点)、审批节点、结束节点,以及在审批节点我添加了抄送节点的设置(即刻通知/邮件方式)。每个节点的负责人,我均设置的是我自己(实际情况中,应该按实际的业务流程要求去设置,这里仅是测试体验)。
4. 流程创建完毕,发布并应用流程
图22 轻流-应用发布成功截图
图23 轻流-应用列表截图
1)提交报销申请
点击图23的【发起新的】按钮,弹出如下表单。可以发现,报销审批单需要填写的内容字段要求,和我此前的配置是一模一样的。且在我提交了报销申请后,系统会自动发送待办给审批节点的负责人(下图,我把我自己设置成了发起人、审批人,所以我会邮件收到待办通知)。
图24 轻流-报销审批流程-填写表单
图25 轻流-报销审批流程-审批人收到邮件代办通知
2)审批节点负责人,对报销申请进行审批操作:通过、不通过、驳回
审批节点负责人,在【待办】栏,可以点击待办任务,进入【审批单详情】进行审批操作,如下所示:
驳回和通过要填写原因,且驳回时原因必填(也是我在配置审批节点的驳回操作时设置的必填)。
如上,我(审批负责人角色)对该审批申请,进行了“通过”。
3)查看流程状态及流程处理结果
每个节点的负责人,均可在对应的栏目下,查看报销审批流程的状态及流程处理结果。
- 对于发起人:应当可以查看到,已发起的流程有哪些?已发起的这些流程,哪些已通过,那些已拒绝,哪些待完善?哪些被驳回?
- 对于审批人:应当可以查看到,待办有哪些?我已办的有哪些?其中我已办的这些中,通过/驳回/待完善/不通过的,分别有哪些?
- 对于发起人和审批人,均应当可以查看到流程状态(现在这个流程到哪个节点了?谁在什么节点做了什么操作?正在做什么操作?已经做了什么操作?)
至此,【轻流】的“流程引擎”基本功能基本体验完了,一些高级配置功能:像高级表单控件的配置、流程的高级配置,都还未涉及到。读者可以自行体验。
此外,轻流还能支持配置表单数据的多种展现形式(卡片视图、表格视图、看板视图、甘特视图),以及列表展示字段及列表功能(如排序/筛选条件等)的按需配置,真的不得不感叹它的强大。
如下是轻流【轻流CRM应用】(系统自带)的活动申请模块下的活动列表截图,支持设置活动列表的多种视图形式,下图是卡片视图样式。
卡片视图配置/数据展示:
卡片视图配置/数据范围:
五、全文总结
本文首先介绍了 “流程引擎”是什么,“流程引擎”出现的目的是解决什么业务问题的,“流程引擎”多出现在何种产品中,以及在产品架构中处于什么位置。
接着,介绍了飞书及轻流“流程引擎”的使用实操,以自定义报销审批流程为例:一步步创建流程应用(基础信息->表单设计->流程设计->发布流程),到发布和使用应用),以及思考如何设计一个“审批流程”。
最后简单介绍了,轻流的列表配置功能。
六、写在最后
抽象化思维能力、动态思维能力,是产品经理非常重要的能力,实现静态容易,实现动态难。
这种【低代码平台】、【平台类】的产品(机器学习平台等),对产品经理抽象化能力的要求不用说,肯定是高之又高。
我觉得,要想锻炼抽象化思维能力,一个是要平时多练习多思考多总结,另一个是若有机会去尝试做【平台类】产品,可以去尝试,收获绝对异常多。如果没有机会去做【平台类】产品,可以思考你当前的业务或产品,未来如果要发展成“平台型”产品,你该做哪些准备?然后试着实操一下。
许多业务场景,许多对象一开始也都是从“静”开始的,而后随着业务的发展壮大,才变成“动”的。飞书一开始,也不是做面向外部企业的OA工具,而是给企业自己内部用的,随着业务的发展壮大,需要支持各种各样的业务流程、业务场景,一些配置化功能,甚至是【配置系统】才得以演变出来。
所以,产品经理平时要多锻炼自己“动”的思维和思考能力,这样总归是百利而无一害。
共勉!
本文由 @南方碟道 原创发布于人人都是产品经理。未经许可,禁止转载
题图来自Unsplash,基于CC0协议
该文观点仅代表作者本人,人人都是产品经理平台仅提供信息存储空间服务。
受益匪浅