封装业务流程(PBP)
功能概述
封装业务流程,简称PBP (Packaged Business Process)是一种特殊的工作流,可以用工作流节点能力编排动作序列,还可以通过定义输入参数,让其他流程调用。如果需要使用封装业务流程中的执行结果,也可以通过输出参数,供外部流程使用。
同时,封装业务流程还会自动生成一套API接口,和定义的输入和输出参数完全对应,供外部系统调用。结合工作表和工作流能力,再加上封装业务流程的API能力,事实上企业拥有了一个可以自由组合的API中心,实现了可组合企业架构(Composable Architect)。
封装业务流程产品理念来自Gartner提出的Packaged Business Capabilities框架。和经典的PBC概念不同的是,PBP这样的可组合应用架构并不依赖前后台分离加微服务(microservice)的原生开发过程,它能够零代码实现同等的效果。
特点和价值
1、没有特定数据源,通过定义输入参数来建立触发。
2、可被组织内的所有流程调用,最大化流程复用价值。
3、具备API能力,供外部系统使用,实现自由组合的业务流程。
哪些场景适合使用封装业务流程
1、可复用的通用业务处理能力
场景1:商品的库存更新
库存的更新涉及多种场景,如商品的销售出库、采购入库、退货入库、盘点等等,在执行库存更新时,往往只需要知道是哪个仓库的,什么商品、出入库类型、出入库数量就可以直接更新库存了。因此可以将更新库存这部分逻辑放在封装业务流程中完成,销售出库、采购入库等工作流只需传入对应的参数,就可以直接完成库存的更新,无需每个工作流都写一遍更新库存的逻辑。
场景2:获取手机号归属地
多个业务表需要记录手机号,如销售线索、客户联系人、员工档案等等,需要知晓手机号归属地。可以通过Webhook节点,调用第三方服务获取到手机号,并返回归属地信息。将这部分功能放在封装业务流程中,每个工作表触发的流程直接调用即可。像这种通过Webhook或代码块实现的通用数据处理能力,非常适合作为封装业务流程,供所有流程调用。
2、多业务对象的API接口服务
场景:外部系统通过API查询多表数据
例如,外部系统需要查询订单数据,主要信息是:
- 订单表数据(订单名称、订单总额、付款日期)
- 订单明细表数据(产品名称、数量、单价、小计)
如果通过工作表API查询,需要调用两次API,而且返回的结果字段比较多,无法只返回需要的字段内容。同时,对于查询状态的提醒无法自定义。
如果使用封装业务流程的API接口,只需传入订单编号,触发流程后,通过查询数据节点逐步查询订单和明细数据,根据不同的查询结果,利用分支自定义查询状态消息,最终通过输出参数返回。
3、标准规范化的业务流程
场景1: 统一管理的财务支付流程
如果公司对财务支付流程要求统一规范化管理,在各类业务活动执行后,和支付相关的流程都需统一调用支付流程,财务只需在一个应用或流程中处理,那么很适合通过PBP来管理支付流程,例如,在付款申请或报销申请通过后,进入财务支付流程(PBP),财务付款后,并上传付款凭证等信息,再反写到付款申请单中。
场景2:新员工入职流程
根据员工的部门和职位,自动发送员工手册和物品领用清单、根据邮箱或手机号,运维开通各种软件账号清单等等,待一系列任务完成后,将结果发送给员工。 将以上任务放在封装业务流程中,可以方便管理企业流程,帮助企业流程规范化。
4、需要在应用首页一键点击或扫码触发的流程
场景: 设备维修后,维修人员在自定义页面中直接点击按钮启动扫码,扫描设备码并触发PBP,PBP中根据传递进来的设备码查询相关设备和维修工单,然后分别修改为正常状态。
配置示例
我们通过几个案例的介绍,逐步讲解PBP中相关知识点:
示例1.利用封装业务流程实现库存更新,供相关出入库业务流程调用
1.1梳理PBP的4要素
在设置流程前,我们需要梳理出PBP需要的四个要素
输入参数
更新库存时,我们需要知道更新对象和数量,以及出入库类型(入库是增加库存,出库是减少库存)。因此流程需要知道商品编号、出入库类型、和数量,这个3个信息就是我们需要的参数。
需要定义的输入参数有:产品编号 、出入库类型和出入库数量
如果您的商品是多仓库管理,还需要知道是哪个仓库出入库操作,也需要一个输入参数:仓库信息。这里我们为了快速示例、不再增加此参数。
流程编排
触发流程后,通过相关节点进行编排,完成指定商品的库存更新。
输出参数
在库存更新场景中,只需正常执行更新库存操作即可,不需要任何结果通知的返回,因此不需要定义输出参数。我们会在后面的场景示例中介绍输出参数的配置。
是否启用API
由于本功能仅在本平台内使用,无需开启API能力。
1.2新建封装业务流程
进入应用的工作流模块,依次点击 封装业务流程 > 新建封装业务流程
虽然PBP可被组织内所有应用的工作流调用,但依然归属在一个应用下管理。
1.3定义输入参数
什么是参数,简单来说就是你需要外面传递给你的信息,但是这个信息你需要提前约束好。
例如名称和格式, 名称用来区分不同的信息对象,格式用来保证传递进来的内容符合规范。
如果在处理业务时,有些信息是必要的,不然无法执行,则可以设定为 必填。
同时,建议充分描述参数说明,这样对方在调用PBP传参数时更加清晰。
在本场景中,需要定义的参数( 名称、格式类型、是否必填和说明)如下:
商品编号、文本类型、必填、说明(需要出入库商品的编号)
进出库类型、数值类型、必填、 说明(0代表入库,1代表出库)
数量、数值类型、必填
流程的触发历史列表中,触发的数据显示的是标题参数的内容。
支持的输入参数类型
- 文本
- 数值
- 人员
- 组织角色
- 部门
- 其中成员、部门、组织角色传递的是对象,不是文本。
- 日期时间
- 附件
- 普通数组和对象数组
- 代码块输出的数组,需通过JSON解析后才能选择为输入参数
数组结构示范
普通数组
["张三","李四"]
对象数组
[{"name":"张三","age":20},{"name":"李四","age":30}]
如果您有一段JSON数组,则可以粘贴生成参数。
1.4配置工作流的相关节点
通过相关功能节点的编排实现具体的库存更新逻辑。
重点介绍:节点如何使用输入参数值
在定位具体商品的库存记录时,需要使用传递进来的商品ID,获取单条数据节点中的条件值选择输入参数即可。
其他节点不再赘述。
1.5配置输出参数
前面我们已经梳理好,无需输出参数,点击输出参数节点后、删除空白参数并保存节点。
1.6修改流程名称并发布
修改流程名称,便于日常管理和方便外部流程调用时识别,
发布流程后,才可被调用。
其他流程如何调用PBP
PBP发布后,其他需要更新库存的业务流程都可以直接调用PBP,我们以采购入库流程中,采购入库明细调用PBP为例进行介绍。
入库流程中获取到多条入库记录后(获取多条数据节点),即可调用"更新库存PBP"。
1)添加“调用业务流程” 节点
2)选择更新库存PBP
3)选择执行方式(执行单次还是多次)
此处和子流程节点功能相同,本案例中,需要多个商品的入库记录同时更新库存,因此选择执行多次。同时,执行的次数要基于多条数据的数据量。
由于每个商品的库存更新互不影响,可以选择并行执行。
PBP多次执行时,可接收多少行数据
不同的配置,执行次数有不同的限制,主要有以下两种。
执行次数按字段值或固定值,则按实际次数执行,没有限制
执行次数选择为根据多条记录数据行数
如果PBP的输入参数任意一个使用了多条记录的字段值,最多100行
如果PBP的输入参数都没有使用多条记录的字段值,最多1万行。
4)设置PBP的传入参数
这里显示的参数,就是PBP流程定义的传入参数。
商品编号和入库数量是需要从节点对象中选择对应的字段,
因为本次流程是入库流程,出入库类型可以写为固定值0。在出库相关的流程中,则写为1。
5)发布流程并测试
6)开启API
本流程无需开启API,不再详述,具体开启API介绍,请参考示例3
开启API入口如下图:
示例2.通过封装业务流程实现获取手机号归属地的功能,供所有流程调用
2.1梳理PBP的4个要素
输入参数 只需传入手机号即可
流程编排 获取到手机号以后,通过发送API请求节点,利用外部服务API获取到手机号归属地。
输出参数 将获取到的归属地信息(省、市、县)输出。
启用API 由于本功能一般在平台内使用,无需开启API。
2.2创建封装业务流程
进入应用的工作流模块,依次点击 封装业务流程 > 新建封装业务流程
2.3配置输入参数
只需定义一个手机号参数即可。