从 SharePoint 外接程序模型工作流应用到 Microsoft Power Automate

使用 SharePoint 外接程序模型,可以创建在 SharePoint 托管的外接程序中运行的工作流应用。 只需创建 SharePoint 外接程序模型解决方案,选择创建 SharePoint 托管的应用程序,并向项目添加工作流类型的项。

默认情况下,创建的工作流将在 SharePoint 托管的应用程序网站中运行,并将面向该网站中的列表或库。 如果将工作流属性配置为 “集成应用” ,还可以在主机网站而不是应用网站中运行工作流。

重要

本文指的是所谓的 PnP 组件、示例和/或工具,它们是由提供支持的活动社区支持的开源资产。 没有来自 Microsoft 的官方支持渠道的开放源代码工具支持的 SLA。 但是,这些组件或示例使用的是 Microsoft 支持的现成 API 和 Microsoft 支持的功能。

如果愿意,可以watch以下视频,而不是阅读整篇文章,你仍然可以将其视为更详细的参考。

IMAGE_ALT

重要

从 Visual Studio 2022 开始,工作流模板已从 SharePoint 外接程序项目中删除。

使用 SharePoint 外接程序模型,可以创建以下类型的工作流:

  • 顺序工作流
  • 流程图工作流
  • 状态机工作流

示例 SharePoint 外接程序顺序工作流

在下图中,可以看到 SharePoint 外接程序顺序工作流在 Visual Studio 设计器中的外观。

用于顺序工作流的 Visual Studio 设计器。有一个初始审批任务,后跟一个 if 分支来评估审批任务的结果。工作流根据结果更新目标项目的审批状态,并发送一封信息性电子邮件。

示例工作流将完成以下步骤:

  • 创建简单的审批任务
  • 评估审批任务的结果
  • 根据审批任务的结果相应地汇报目标项
  • 发送和发送电子邮件,其中包含有关工作流结果的信息

工作流的目标列表是具有以下列的自定义订单列表:

  • 标题:任何 SharePoint 列表项的现用标题字段 (单行文本)
  • 客户:当前订单的客户名称 (单行文本)
  • 金额:订单金额 (货币)
  • 审批状态:无论订单是否已获批准 (选择,都可以假定值“待审批”、“已批准”或“已拒绝”)

在 SharePoint 外接程序模型解决方案中,可以使用 SharePoint 功能框架在目标网站中部署上述列表。

与以前在 SharePoint 的旧学校工作流引擎中一样,工作流可以将事件和信息存储在工作流历史记录列表中,可以依赖工作流任务列表向用户分配任务,并且可以将自定义表单用于任务和工作流本身, (启动表单和关联表单) 。

此外,每个 worfklow 定义还提供了一个工作流状态页,用于查看在目标项或文档上运行的工作流实例的当前状态。

这是一个非常基本但非常常见的方案,它依赖于 SharePoint 外接程序模型的现成功能。

将工作流转换为 Power Automate 流

假设你想要将上一部分描述的旧 SharePoint 外接程序模型工作流替换为新的 Power Automate 流。

首先,让我们使用上一部分所述的相同数据结构创建自定义订单列表。 可以使用 Web 浏览器手动创建它,也可以依赖于 PnP 预配模板,如本文相关示例中提供的模板 (orders.xml) 。

重要

若要了解有关 PnP 预配引擎的详细信息,可以阅读 了解项目的现代预配一文。

若要为订单列表创建 Power Automate 流,可以使用 SharePoint Online 的集成 UI,选择命令栏中的 “集成” 菜单,然后选择 “Power Automate” ->“创建流”,如以下屏幕截图所示。

命令栏菜单,用于从 SharePoint Online 列表的上下文中开始创建新的 Power Automate 流。

通过单击 “创建流” 命令,将显示一个新的侧面板,你可以从那里选择重用已可用的流模板之一,如以下屏幕截图所示。

SharePoint Online 列表中的侧面板,用于在创建新流时选择要从其开始的 Power Automate 流模板。有很多可用的模板,包括“添加新项时开始审批”流模板。

例如,可以选择 “添加新项时开始审批” 流模板,并从看起来非常接近需要创建的内容的已可用流开始。 你将转到 Power Automate 控制台,你可以在其中双重检查所选流模板的main功能,并且可以将 Power Automate 引擎与运行实际流过程所需的资源和服务连接起来。

如以下屏幕截图所示,流模板依赖于 SharePoint Online 数据、Microsoft 365 Outlook、Microsoft Teams 审批和 Microsoft 365 用户。

显示要创建的 Power Automate 流的依赖项和连接的网页。包括涉及的服务,如 SharePoint Online、Microsoft 365 Outlook、Microsoft Teams 审批和 Microsoft 365 用户,以及与这些服务的连接。

如果单击屏幕下半部分中的 “继续” 按钮,即表示你同意 Power Automate 引擎代表你自己连接到并使用流所需的 Microsoft 365 工作负载。

重要

请务必注意,根据设计,Power Automate 面向所谓的 Power Users (或 Makers) ,因此默认情况下,设计流的用户会使用所有服务。 没有“用户模拟”或“特权提升”的概念,就像 SharePoint 外接程序工作流模型一样。 在某些情况下,最终可以使用 Azure Active Directory 中注册的应用程序的仅限应用程序的令牌发出请求。

浏览器中托管的 Microsoft Power Automate 流设计器。使用 SharePoint 项目审批的预定义模板设计了流。

将帐户连接到流定义后,你将转到 Power Automate 流设计器,在那里你已经可以看到一个自动生成的流,它基本上解决了你的需求。 事实上,有一个类型为“创建 SharePoint 项目时”的触发条件,该条件为列表中的每个新项目触发一个新的流实例。

创建新项目后,流将使用 Microsoft Teams 审批创建审批任务,由你来定义任务的目标被分配者。 事实上,如果在配置“开始审批”操作的“分配到”属性之前按“保存”按钮,你将看到下图所示的异常。

突出显示了错误的 Microsoft Power Automate 流设计器。错误为“'分配到'是必需的”。

除了定义任务的受托人外,流已完全定义并准备就绪。 审批任务的结果是 “批准” 还是 “拒绝” ,流定义中的条件块将向项目创建者发送电子邮件,其中包含实际结果。 如果处理审批任务时出现任何错误,流将作为流的创建者向自己发送通知电子邮件。

自动生成的流中唯一缺少的部分是设置目标项的“审批状态”字段。 可以通过单击条件的“是”和“否”分支中的添加操作按钮轻松执行此操作。 让我们从 “是” 分支开始。

流设计器中的 microsoft power automate“添加操作”按钮。

在将显示的“选择操作”框中,可以按 “SharePoint” 进行筛选,然后选择为 SharePoint 添加类型为 “更新项目” 的操作,如以下屏幕截图所示。

流设计器中的 microsoft power automate“选择操作”框,其中突出显示了 sharepoint 的“更新项”。

首先,应使用适当的说明重命名操作,以保持流可读性。 单击操作右上角的三个点,然后选择“重命名”。 然后将默认标题 “更新项目” 替换为 类似“将项目更新为已批准”的内容。 现在,配置操作的以下属性:

  • “站点地址”:它是目标列表所在的目标站点。
  • “列表名称”:是包含要更新的项的目标列表。
  • “Id”:要更新的项的 ID,可逐一检索。

若要配置目标项的 ID ,只需单击字段,将显示一个对话框。 通过该对话框,可以选择已在流中定义的变量或字段,也可以生成动态表达式。 在你的方案中,触发流的项 ID 是你要查找的内容。

Microsoft Power Automate 设计器,用于从流上下文中选择值或定义动态表达式。有预定义的字段,例如触发流实例的项的 ID。

使用 “更新项” 操作时,始终需要为所有必填字段指定值,在当前方案中, “Title” 是唯一必须指定的必填字段。 除非要更改目标项的标题,否则只需选择使用操作创建新项目时”的“标题”字段。

注意

如果通过流多次更新项,请记住始终使用必填字段的最新值,最终使用 “获取项” 操作对项字段发出新的请求,而不是始终使用由触发器条件检索的字段。

在以下屏幕截图中,可以看到更新后的“是”分支,其中包含“更新项目”操作,将该项目的“审批状态”字段设置为“已批准”。

显示“是”分支的 microsoft power automate 设计器。

你可以对“否”分支应用完全相同的更改,当然,将项目的“审批状态”字段设置为“已拒绝”。 最终可以单击 右上角的“将项目更新为已批准” 操作的三个点,然后选择 “复制到剪贴板 (预览) ” 命令。 然后,单击“否”分支中的“添加操作时,可以选择“我的剪贴板”选项卡并粘贴复制的操作。

现在,单击设计器右上角的“保存”按钮保存流设计,如果需要,可以通过按“保存”按钮附近的“测试”按钮对其进行测试。 在执行此操作之前,请确保目标列表中至少有一个项目。 如果测试流,请选择 “手动” 测试流,你将看到一个漂亮的 UI,显示正在运行的流的状态,如以下屏幕截图所示。

用于跟踪流运行过程的 Microsoft Power Automate 工具。有正在等待实际审批的审批流。

从最终用户的角度来看,审批请求的代理人将在 Microsoft Teams 审批中找到新的审批任务,如以下屏幕截图所示。

Microsoft Teams 审批界面,其中包含分配给当前用户的审批任务。

审批任务的受托人可以单击挂起的请求以打开和批准或拒绝它。 请注意,如果需要,Microsoft Teams 审批任务也可以重新分配给另一个目标用户。

具有“批准”/“拒绝”按钮和“重新分配”按钮的 Microsoft Teams 审批任务。

每当要监视在列表项或文档顶部运行的任何流时,可以从目标列表或库中单击命令栏中的“集成”命令,然后选择“Power Automate”->“查看流”转到 Power Automate 仪表板。 你将进入 “我的流” 页面,还可以使用 Web 浏览器访问 Power Automate 门户的浏览。

SharePoint Online 中可用于转到 Power Automate 仪表板的命令。“集成”命令下有一个“Power Automate”-> “查看流”命令。

单击要深入了解的流的名称,可以看到执行历史记录 () 长达 28 天,可以看到有关流的所有详细信息,并且可以编辑和更新流定义。

Power Automate 门户中单个流的仪表板。有关流的常规信息、流的连接以及过去 28 天的执行历史记录。

通过单击执行历史记录中的任何项,可以查看流的处理方式,并可以深入了解所有已执行操作的输入和输出值。

显示流实例执行的关系图,其中包含有关所执行的每个操作的详细信息,以及每个操作的输入和输出。

从头开始构建 Power Automate 流

当然,还可以生成新的流定义,而无需从现有的模板开始。 如果是这种情况,只需转到 Power Automate 门户 并选择创建新流即可。 因此,转到 “我的流” 页,在命令栏中选择 “新建流” ,然后选择生成 “自动化云流”,如以下屏幕截图所示。

用于从 power automate 门户中的“我的流”列表创建新的“自动化云流”的命令按钮。

将显示一个对话框,允许你选择新流的触发条件。 触发条件是实际触发流的内容,从 SharePoint Online 的角度来看,可以是:

  • 在文件夹中创建文件时, (弃用)
  • 修改项或文件时
  • 创建项时
  • 删除项目时
  • 创建文件时, (属性仅)
  • 创建或修改项目时
  • 当文件被Microsoft Syntex模型分类时
  • 创建或修改文件时,仅 (属性)
  • 删除文件时
  • 在已弃用的文件夹中创建或修改文件时, ()

上述名称不言自明,但“ (属性仅) ”的名称除外,这意味着触发器将仅提供文件的元数据列,而不提供文件内容。 如果要获取文件的实际内容,可以使用流逻辑中的 “获取文件内容” 操作自行执行。

用于为新的“自动化云流”选择触发条件的对话框窗口。有很多选项可以自动触发流,包括与 sharepoint 项目或文档相关的触发器。

为新流选择一个名称,选择一个触发条件,然后就可以开始设计流,就像在上一节中所做的那样。

在 Power Automate 中为 SharePoint Online 设计新流时,应考虑到旧版 SharePoint 外接程序模型工作流中的大多数活动在新的 Power Automate 模型中也可用。 阅读 文档指南:在 SharePoint 中从经典工作流迁移到 Power Automate 流,可以找到其他信息和旧活动与新操作之间的映射。

但是,应考虑以下事项:

  • 使用 Power Automate 时,你没有工作流历史记录列表,顺便说一下,工作流历史记录列表存在一些限制,最终应依赖于自定义 SharePoint 列表或自定义存储库(如 Microsoft Dataverse 中的表)。 但是,由于 GDPR 隐私要求) , (的执行历史记录可以恢复到过去不超过 28 天。
  • 使用 Power Automate 时,你不再拥有工作流任务列表,与特定站点或工作流解决方案紧密联系,但依赖于 Microsoft 365 的全局任务。 因此,你可以受益于 Microsoft Teams 中的 Microsoft Teams 审批应用程序,以及 Microsoft 365 工作负载之间的完全集成。
  • Power Automate 是为电力用户和制造商设计的,而不是面向愿意向多个客户销售其解决方案的 ISV。 因此,与多个客户/租户共享同一流并非总是容易的。 存在导出/导入功能,但在将流导入其他租户时,需要重新配置所有连接。
  • 在 Power Automate 中,没有用于管理流和流执行的现用自动化和治理。
  • 在使用 Power Automate 设计的流中,无法模拟其他用户或使用提升的权限运行代码。 最终,可以从 Azure AD 检索 OAuth 访问令牌,并向 Microsoft Graph 发出低级别的 HTTP 请求。
  • 在 Power Automate 中,你无法设计状态机工作流或流程图,事实上,每个流都类似于顺序流。 当然,使用适当的设计并充分了解 Power Automate,可以定义行为类似于状态机的流,例如使用循环和条件。 此外,使用 Microsoft Visio 可以设计流程图,将关系图映射到 Power Automate 触发器和操作,然后将 BPMN (业务流程模型和表示法) 导出到 Power Automate 流中。

一般来说,尽管存在上述小限制,但 Power Automate 是用于在 Microsoft 365 和 SharePoint Online 中生成工作流的绝佳工具。 您绝对应停止使用 SharePoint 外接程序模型工作流,并应迁移到 Power Automate 和整个 Power Platform。

有关本主题的其他信息,请参阅以下文档: