跳到主要内容

封装业务流程(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接口中说明中,给出来示例代码,可以直接复用测试。

  • appkeysign不要更改,直接使用。

示例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后,选择参数对应的字段

记录URL如何获取

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中点击按钮扫码测试。


文档问题反馈

文档中是否有错别字、内容过期、难以理解等问题? 点此给我们反馈吧