封装业务流程(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数组,通过"从JSON示例生成"可以将粘贴进去的JSON数组自动生成参数。
1.4配置工作流的相关节点
通过相关功能节点的编排实现具体的库存更新逻辑。
重点介绍:节点如何使用输入参数值
在定位具体商品的库存记录时,需要使用传递进来的商品ID,获取单条数据节点中的条件值选择输入参数即可。
其他节点不再赘述。
1.5配置输出参数
前面我们已经梳理好,无需输出参数,点击输出参数节点后、删除空白参数并保存节点。
1.6修改流程名称并发布
修改流程名称,便于日常管理和方便外部流程调用时识别,
发布流程后,才可被调用。
其他流程如何调用PBP
PBP发布后,其他需要更新库存的业务流程都可以直接调用PBP,我们以采购入库流程中,采购入库明细调用PBP为例进行介绍。
入库流程中获取到多条入库记录后(获取多条数据节点),即可调用"更新库存PBP"。
1)添加“调用业务流程” 节点
2)选择更新库存PBP
3)选择执行方式(执行单次还是多次)
此处和子流程节点功能相同,本案例中,需要多个商品的入库记录同时更新库存,因此选择执行多次。同时,执行的次数要基于多条数据的数据量。
由于每个商品的库存更新互不影响,可以选择并行执行。
PBP多次执行时,可接收多少行数据
不同的配置,执行次数有不同的限制,主要有以下两种。
执行次数按字段值或固定值,则按实际次数执行,没有限制
执行次数选择为根据多条记录数据行数
如果PBP的输入参数任意一个使用了多条数据节点(从工作表中获取)中值,最多100行
- 数据是工作表数据才限制100条, 如果数据来着代码块、API等则不限制。
如果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配置输入参数
只需定义一个手机号参数即可。
2.4配置工作流的相关节点
本场景实现比较简单、只需通过发送API请求节点获取手机号归属地信息。
2.5配置输出参数
根据实际需要、可以将归属地的省市拼接后作为一个参数输出,可以直接写入到工作表的“地区”字段中。
注意省份和城市之间的连接符号 /,不然无法写入到地区字段中。
2.6修改流程名称并发布
其他流程调用PBP
例如,在线索联系人新增时触发的流程中,调用查询手机号PBP,获取手机号归属地。
执行方式 由于是查询当前新增的联系人归属地,因此只会执行单次。
业务流程执行完毕后,再开始下一个节点
如果流程中后面的节点需要使用PBP的输出参数,则一定要勾选,表示等待PBP执行完毕再开始执行后续节点。
输入参数 即查询谁的手机号,选择触发节点的手机号即可。
后面节点如何使用PBP执行参数
如果无法选择PBP的输出参数,表示没有勾选"业务流程执行完毕后,再开始下一个节点"
配置完成,发布流程测试即可
示例3.通过PBP的API接口实现外部系统对订单数据的查询
外部系统通过订单编号,查询到订单的客户公司、订单额、付款日期,以及订单明细(产品名称、单间、数量、小计)等个别信息。
3.1梳理PBP的4要素
输入参数
只需一个参数,即订单编号,格式文本、必填。
流程编排
触发流程后,通过相关节点进行编排,完成指定商品的库存更新。
获取单条数据节点 根据订单编号找到对应的订单记录
获取多条数据节点 根据订单记录,获取订单下的明细数据。
代码节点 例用代码节点,将订单明细数据组装为数组
输出参数
- 客户公司(文本)
- 订单金额(数值)
- 付款日期(文本)
- 订单明细(数组)
是否启用API
本流程主要供外部系统调用,需要开启API接口功能
3.2创建业务封装流程
进入应用的工作流模块,依次点击 封装业务流程 > 新建封装业务流程
3.3配置输入参数
只需定义一个订单编号即可。
3.4编排工作流节点
根据业务需求,需要逐步获取订单记录和订单明细数据,而订单明细是多行数据,因此需要利用代码块将其转换为数组。
具体节点配置如下:
3.5配置输出参数
根据前面的梳理,只需定义4个输出参数即可。
3.6修改流程名称并发布
3.7启用API能力
进入流程配置 > 平台API能力 ,开启或关闭当前流程的API能力
1)API请求地址
自动为当前流程生成了一个API地址,如:https://api.mingdao.com/workflow/hooks/******2YzQzNDVlZDM0YzBhNDRiMWU0
请求地址中支持继续拼接子路径,如接口功能是获取订单信息的,可以拼接上GetOrderinfo,对于开发者便于识别。但是实际执行时依然只有前面自动生成的部分有效。
2)请求鉴权认证
有使用应用授权和无需授权两种方式, 使用应用授权时,调用API时,参数中需要appKey和sign 两个参数, 无需授权方式则不需要这两个参数。
3)定义API中的请求参数(输入参数)
PBP中的参数名称可以是中文,在平台内部方便识别和使用,但是在API中,参数名不支持中文,因此我们需要再次定义“别名”,方便外部系统使用。
如果有别名,API参数中的参数名显示为别名
如果没有别名,则显示为参数名,如果含有中文,在使用时可能会出错。
4)选择响应方式
支持5种响应方式:
- 通过回调地址接受返回参数
- 直接返回固定文本给请求地址
- 直接返回流程节点数据对象给请求地址
- 直接返回流程节点的字段值给请求地址
- 直接返回输出参数给请求地址
如果需要返回参数给请求地址,PBP流程中不能包含调用业务流程、审批、填写、延时、子流程等不确定处理时长类的节点。
响应方式是“直接返回流程节点的数据给请求地址”时,支持配置流程中止时响应。
6)查看API文档
通过应用的API接口,可以看到应用下所有可用的API接口,包括封装业务流程的API接口。当然,您也可以通过下面快速查看。
在API接口中说明中,给出来示例代码,可以直接复用测试。
- appkey和sign不要更改,直接使用。
示例4. 通过PBP统一管理公司财务支付流程
如果公司对财务支付流程要求统一规范化管理,在各类业务活动执行后,和支付相关的流程都需统一调用支付流程,财务只需在一个应用或流程中处理,那么很适合通过PBP来管理支付流程,例如,在付款申请或报销申请通过后,进入财务支付流程(PBP),财务付款后,并上传付款凭证等信息,再反写到付款申请单中。
4.1梳理PBP的4个要素
输入参数
由于需要财务在一个流程(业务表)中操作,财务在支付时需要以下信息:客户/个人名称、账号信息、支付日期、支付金额、为了查看原始记录,还需要知晓原记录的URL等等。为了便于示范,我们精简一下,只需必填的几个字段。
支付标题 文本、必填
账号信息 文本、必填
支付金额 数值、必填
支付日期 文本、必填
原记录URL 文本、必填
同时,需要新增一张工作表《财务支付》,用来存储这些信息,并且财务上传凭证时,填写到此表的记录中。表中除了上面的参数,还需要一个“支付凭证”的附件字段。
流程编排
根据传入的参数,向《财务支付》表中新增一条记录,字段值选择对应的输入参数即可。
然后通过“填写”节点向财务人员发出提醒,等待完成支付并上传凭证。
输出参数
由于需要获取支付凭证等信息,返回参数不支持附件字段,因此我们需要返回一个记录ID,供原业务流程查找定位到此支付记录,然后使用凭证字段。
记录ID, 选择支付记录的记录ID
是否启用API
暂不需要
4.2创建封装业务流程
进入应用的工作流模块,依次点击 封装业务流程 > 新建封装业务流程
4.3设置输入参数
4.4配置工作流
1)向财务支付表中新增一张记录
2)填写节点通知财务办理支付
4.5输出参数
根据前面的梳理,只需输出支付记录的记录ID内容记录。
4.6修改流程名称并发布
发布后,流程才能被外部流程调用。
外部流程如何调用PBP并使用输出参数
我们以付款申请流程为例,当付款申请审批通过后,调用统一支付业务流程PBP,等待财务执行完毕,自动将凭证信息写入到申请记录中。
1) 通过“调用业务流程” 节点调用PBP
选择PBP后,选择参数对应的字段
2) 通过“获取单条数据”节点,定位到财务填写的支付记录。
如果无法选择PBP的输出参数,勾选“等待业务流程执行完毕后,再开始下一个节点”即可。
3)将支付记录的凭证信息写入到付款申请记录
到此流程配置完毕,您可以提交一个付款申请进行测试。
示例5、自定义页面中点击按钮后通过扫描设备码,自动完成维修工单
5.1梳理PBP的4个要素
输入参数 :设备码,文本类型,必填。只需通过设备码识别出设备记录。
流程编排 :通过设备码查找到对应的设备记录和维修工单,然后分别将状态改为正常或维修完成。
输出参数 :无需返回任何信息,不定义。
是否启用API: 无API需求,不配置。
5.2创建封装业务流程
进入应用的工作流模块,依次点击 封装业务流程 > 新建封装业务流程
5.3设置输入参数
只需设置1个设备码参数即可。
5.4业务流程配置
根据业务需要,需要通过两个“获取单条数据”节点,分别获取到设备记录和维修记录。然后通过两个更新节点分别修改状态。
5.5输出参数
无需输出参数,删除已有参数后保存即可。
5.6修改流程名称并发布
流程发布后才能被调用。
自定义页面按钮如果调用PBP
进入自定义的配置页面,配置快捷按钮。如下图配置:
1、选择相关按钮后,开始配置此按钮的相关动作。
2、点击按钮触发,启动扫码功能
也可以直接触发封装业务流程,本场景需要有明确的操作对象,因此需要扫码后再调用PBP。
3、选择码类型
支持二维码和条形码,本场景我们以二维码为例)
4、记录连接
如果二维码的内容是某条记录链接,则做什么操作,我们选择 “无”,不做任何动作。
5、其他连接
如果二维码的内容是其他类型的链接,则做什么操作,我们选择 “无”,不做任何动作。
6、文本
如果二维码内容是一段文本,则做什么操作。设备码是一串文本,符合我们的需求,我们选择识别出了设备码后调用封装业务流程。
7、选择对应的PBP
8、选择输入参数的值,即扫码结果
以上配置结束后,保存页面。然后在APP中点击按钮扫码测试。
文档问题反馈
文档中是否有错别字、内容过期、难以理解等问题? 点此给我们反馈吧