跳到主要内容

封装业务流程(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配置输入参数

只需定义一个手机号参数即可。