审批套件使用 Power Platform 解决方案构建在开箱即用的审批连接器上。 该解决方案包括一组 Power Apps、Power Automate 和 Dataverse 组件,使创建业务审批流程更容易创作和触发。
该套件使您能够快速做出更改,而无需更新或部署 Power Platform 解决方案。 您可以为一个审批创建变体,而不会影响其他审批过程。 此外,Dataverse 提供了审计功能来记录审批过程。
套件的关键组件:
- 流程设计器:Power App,允许业务用户使用输入的应用程序数据、阶段和条件来创建和版本化审批工作流。 流程设计器使用的数据存储在 Dataverse 设计时间表中。
- 自定义连接器:为制作者提供一种简单的方法,让他们可以使用 Power Automate 触发器来启动基于 Power Platform 连接器和操作的业务审批流程。
- Dataverse:一组自定义表格,允许定义和监控工作流。
- Power Automate 云端流:一组云端流,对 Dataverse 表中的更改做出反应,以管理端到端审批流程。
- 使用应用程序/流:Power Platform 解决方案可以创建对审批套件连接器的连接引用,以开始业务审批工作流。
Power Automate
本部分总结了组成审批套件的 Power Automate 组件。
云端流
该表列出了与业务审批流程相关的流和过程。 每行描述一个特定的流或过程及其目的。
客户 | Description |
---|---|
BACore | 审批超时 | 通过使用检索业务审批人列表的 Dataverse 触发器来处理超时计数器达到零的情况。 然后,检查该代理是否外出,并在必要时指定后备代理。 如果没有代理或后备代理,则将检索默认审批人。 最后,为代理(如果存在)创建覆盖。 |
BACore | 审批人外出 | 该流订阅业务审批人上的 Dataverse 触发器,并监听特定实体中的变更。 当发生变更时,检索代理列表及其外出状态。 然后,选择一个可用的代理,并为分配给外出的原审批人的任何正在运行的审批实例创建覆盖。 覆盖会将代理设置为新的审批人,并提供覆盖的原因。 |
BACore | 级联过程状态 | 从处理应用数据、阶段状态、节点状态和条件的业务审批流程级联流程状态。 |
BACore | 级联发布激活 | 更新关联的运行时数据状态。 触发时,检索特定流程版本的所有相关运行时数据记录,并更新其状态代码以匹配触发器的状态代码。 |
BACore | Child | 激活已发布的工作流 | 复制业务审批运行时数据,以创建业务审批发布的工作流和业务审批发布的运行时数据。 |
BACore | Child | 评估规则 | 评估业务审批节点条件。 |
BACore | Child | 获取默认设置 | 获取业务审批设置,如果没有设置,则获取默认值。 |
BACore | Child | 获取动态审批人 | 从 Office Graph 中查找用户或经理,将审批人添加到业务审批中。 |
BACore | Child | 获取动态数据实例 | 获取审批人或业务审批数据实例数据。 |
BACore | Child | 日志运行 | 将数据记录到业务审批实例日志中。 |
BACore | 复制过程 | 由 Power App V2 的请求触发。 从 Dataverse 名为业务审批人的实体中检索记录列表。 |
BACore | Daily | 计算批准超时 | 此流减少业务审批实例的超时计数器。 如果超时模式设置为工作日,并且是没有节假日的工作日,则每笔业务的计数器递减一天。 否则,计数器按实际天数递减一天。 |
BACore | 发布过程 | 复制过程定义、阶段、条件和节点。 |
BACore | 运行时 - 初始化工作流队列 | 订阅业务审批工作流队列的 Dataverse 触发器,并为业务审批流程创建新的工作流实例。 从运行时数据实例中检索数据,并为数据实例中的每一项创建一条新记录。 该流还检索业务审批流程的活动版本,并为工作流实例创建新记录。 |
BACore | 运行时 - 启动审批 | 订阅业务审批实例上的 Dataverse 触发器,并为业务审批流程创建新的工作流实例。 从运行时数据实例中检索数据,并为数据实例中的每一项创建一条新记录。 该流还检索业务审批流程的活动版本,并为工作流实例创建新记录。 |
BACore | 运行时 - 启动节点 | 订阅创建审批、阶段和条件的业务运行时节点审批实例上的 Dataverse 触发器。 其功能包括根据条件进入新阶段。 一个节点可以完成一个业务审批工作流或一个定义的阶段。 |
BACore | 运行时 - 启动阶段 | 订阅业务审批运行时阶段实例的 Dataverse 触发器。 如果定义了节点,则设置工作流中要处理的第一个节点;如果没有定义节点,则完成阶段。 |
BACore | 运行时 - 启动工作流 | 订阅业务审批工作流的 Dataverse 触发器。 初始化第一个阶段或保存,且错误不是定义的阶段。 |
BACore | 运行时 - 更新审批 | 订阅业务审批实例的 Dataverse 触发器。 当发生更改时,检查实例的状态,并根据结果执行不同的操作。 如果结果为批准,将取消其他正在运行的实例,并更新节点实例状态。 如果结果为拒绝,将取消其他正在运行的实例,并将节点实例状态更新为已取消。 |
BACore | 运行时 - 更新节点实例 | 订阅业务审批运行时节点实例上的 Dataverse 触发器。 当发生更改时,检查实例状态字段,并根据其值执行不同的操作。 要么创建新的节点实例,要么完成运行时阶段实例状态,要么取消运行时阶段实例状态。 |
BACore | 运行时 - 更新阶段实例 | 订阅业务审批运行时阶段实例的 Dataverse 触发器。 根据状态,要么创建新的阶段实例,要么更新工作流实例以完成。 |
BACore | 同步审批人外出 | 运行每日任务以设置或清除外出状态。 |
BACore | 更新活动的已发布工作流 | 订阅业务审批版本的 Dataverse 触发器并调用子流程激活已发布的工作流。 |
Dataverse
本部分总结了组成审批套件的 Dataverse 组件。
表
有几种类型的表格可用:
- 过程定义表 - 定义审批过程。 这些表用于根据您的业务需求查找和配置审批流程。
- 版本表 - 定义已发布流程的版本。
- 参考表 - 定义审批人、工作配置文件和日历日期。
- 运行时表 - 存储审批的结果/状态。
过程定义表
下表用于定义。
客户 | Description | 示例 |
---|---|---|
业务审批流程 | 审批套件管理的每个审批情景的一条记录。 | 发票审批 |
业务审批数据 | 每个数据项一条记录,用于定义在审批过程中使用的输入字段 | 例如请求金额、运输方式和部门。 |
业务审批阶段 | 审批过程中的每个阶段的一条记录。 | 经理审批或直线经理审批 |
业务审批条件 | 定义阶段的可选条件。 | 无、如果、切换 |
业务审批节点 | 定义审批的每个步骤,包括该步骤的审批类型和审批人。 | n/a* |
*n/a = 不适用。
参考表格
客户 | Description | 示例 |
---|---|---|
业务审批人 | 定义审批流程中每个节点的关联审批人。 | n/a* |
业务审批工作配置文件 | 为每个审批人设置,以定义设置。 | 外出 |
业务审批假期日历 | 定义公司假期。 | 非工作日和周末,如星期六 |
业务审批公共假期 | 定义与组织假期不同的假期。 | n/a* |
业务审批人 OOF | 定义用户外出设置。 | n/a* |
*n/a = 不适用。
版本表
客户 | Description |
---|---|
业务审批版本 | 业务审批流程保存的版本。 |
业务审批发布的工作流 | 定义了已发布的审批流程版本。 |
业务审批发布的运行时数据 | 已发布的审批流程版本的已定义数据。 |
业务审批发布的运行时阶段 | 为已发布的审批流程版本定义的一个或多个阶段。 |
业务审批发布的运行时节点 | 已发布的审批流程阶段的已定义节点。 |
运行时表
对于发出的每个审批请求,数据都存储在运行时实例表中。 这些条目基于定义版本表的配置。
客户 | Description | 注释 |
---|---|---|
业务审批工作流 | 用于管理所有传入的审批请求以及用于该请求的相关表 | 根据来源触发系统中的数据生成的已创建审批。 为已发布的业务审批流程版本创建 |
业务审批运行时数据实例 | 用于存储审批数据中定义的元数据 | 例如,如果在审批数据表中定义“请求金额”,实例数据将存储请求的实际请求金额 |
业务审批运行时阶段实例 | 创建业务审批阶段版本的工作副本。 该记录用于保存审批的每个交易阶段 | 运行时所做的任何更改都保存在此 |
业务审批运行时节点实例 | 创建审批请求的节点事务引用的工作副本。 用于保存审批的每个事务性步骤,包括该步骤的审批类型和审批人 | 运行时所做的任何更改都保存在此 |
业务审批实例 | 存储特定节点实例的审批事务参考 | n/a* |
业务审批实例日志 | 存储审批参考和结果的事务参考 | n/a* |
业务审批实例覆盖 | 存储覆盖原始审批实例的事务性新审批人 | n/a* |
*n/a = 不适用。
数据模型
显示键表之间关系的实体关系图。
注释:
- 绿色表格是业务审批流程的当前工作版本
- 蓝色表格是保存流程版本信息的相关表格
- 黑色表是保存特定审批流程的事务性信息的相关表
自定义连接器
审批套件包括一个自定义连接器,可帮助启动新的业务审批流程。
作为套件的一部分提供的自定义连接器使用自定义代码支持来查询定义的工作流程和工作流所需的应用程序数据(变量)。
动态参数
自定义连接器利用多个 OpenAPI 操作来获取已发布的工作流、获取数据字段并启动业务审批流程。
获取已发布的工作流
“获取已发布的工作流”操作查询 Dataverse,以返回当前活动和已发布的工作流,以便制作者可以定义应该启动哪些审批工作流。
获取审批数据字段
要获取工作流的数据字段,自定义连接器会成为使用动态架构的用户,以便 x-ms-dynamic-schema 调用自定义代码操作。
自定义代码操作包括查询数据字段的 C# 代码,以便制作者可以提供所需的字段。
创建工作流实例
“创建工作流实例”操作将业务审批工作流数据保存为 JSON 序列化字符串,以便启动审批流程。
操作
该连接器依赖于三种操作:
- GetPublishedWorkflows
- GetApprovalDataFields
- CreateWorkflowInstance
GetPublishedWorkflows
此操作通过调用本机 API 并读取表业务审批发布的工作流,帮助列出所有已发布的业务审批模板。
/api/data/v9.2/cat_businessapprovalpublishedworkflows
GetApprovalDataFields
此操作有助于获取适用于所选工作流的动态模式列表。 在后台,它调用一个自定义 API (GetDynamicParameters
),根据提供/选择的工作流 ID 返回架构定义。
/api/data/v9.2/cat_GetDynamicParameters(ProcessID={processID})
备注
API 的返回值是实体类型,使用自定义连接器的自定义代码进一步修改,以支持开放 API 架构并与之保持一致。 有关详细信息,请参见 Script.csx 文件中的 ModifySchema() 方法。
CreateWorkflowInstance
该操作通过对本地 API 进行 POST 操作来帮助在 businessapprovalworkflowqueues
中创建记录。
/api/data/v9.2/cat_businessapprovalworkflowqueues
这里我们使用 CreateWorkflowQueue()
方法,使用自定义连接器的自定义代码来准备和解析 JSON,保存所有参数值和工作流 ID(也称为 ProcessID)。
备注
该操作执行最后的 POST 调用来创建记录。
下面是在调用后期间更新的两个值:
"cat_runtimedata": "[{"id":"9a664958-c656-ee11-be6f-0022482a97de","value":"True"},{"id":"7ddc1057-c656-ee11-be6f-0022482a91f4","value":"123"},{"id":"49dc1057-c656-ee11-be6f-0022482a91f4","value":""},{"id":"9b664958-c656-ee11-be6f-0022482a97de","value":"10/11/2023 8:49:51 AM"},{"id":"7cdc1057-c656-ee11-be6f-0022482a91f4","value":"Another title"}]",
"cat_processid": "57b2ee16-ea51-ee11-be6f-0022482a97de"