你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

从 Azure 逻辑应用中的工作流连接到 Microsoft Dataverse

适用范围:Azure 逻辑应用(消耗型 + 标准型)

重要

2022 年 8 月 30 日,Common Data Service 2.0(也称为 Microsoft Dataverse (旧版))的连接器操作已迁移到当前的 Microsoft Dataverse 连接器。 旧操作带有“旧”标签,而当前操作则带有“预览”标签。 可在任何现有或新的逻辑应用工作流中使用当前的 Dataverse 连接器。 为了保持后向兼容性,现有工作流可继续与旧 Dataverse 连接器一起使用。 但是,请确保查看这些工作流,并及时更新这些工作流。

从 2023 年 10 月开始,旧版本对新工作流不可用。 现有工作流可继续正常运作,但必须为新工作流使用当前的 Dataverse 连接器操作。 旧操作和触发器的关闭日期时间线将宣布。 有关详细信息,请参阅适用于 Azure 逻辑应用的 Microsoft Dataverse(旧版)连接器即将弃用并将替换为另一个连接器

若要创建和运行在 Microsoft Dataverse 数据库中创建和管理行的自动化工作流,可以使用 Azure 逻辑应用Microsoft Dataverse 连接器。 这些工作流可以创建行、更新行,以及执行其他操作。 还可以从 Dataverse 数据库中获取信息,使输出可供工作流中的其他操作使用。 例如,在 Dataverse 数据库中添加、更新或删除行时,可以使用 Office 365 Outlook 连接器发送电子邮件。

本指南将演示如何创建在每次创建新的潜在顾客行时都创建任务行的工作流。

连接器参考

如需基于连接器的 Swagger 说明的技术信息,例如操作、限制和其他详细信息,请参阅托管连接器参考页

先决条件

添加 Dataverse 触发器

当你添加连接到服务或系统的触发器或操作时,如果没有现有连接或活动连接,Azure 逻辑应用会提示你提供连接信息,这些信息因连接类型而异,例如:

  • 帐户凭据
  • 要用于连接的名称
  • 服务器或系统的名称
  • 要使用的身份验证类型
  • 一个连接字符串

此示例使用的 Dataverse 触发器,它在添加、更新或删除行时启动工作流。

备注

Dataverse 连接器具有特定于操作的参数和特定于数据库的参数。 例如,选择某个表时,该表的可用参数不同于其他表。

  1. Azure 门户的设计器中,打开标准逻辑应用资源和空白工作流。

  2. 在设计器上,按照这些常规步骤添加名为“添加、修改或删除行时”的“Microsoft Dataverse”触发器

  3. 如果出现提示,请登录到 Dataverse 环境或数据库。

  4. 在触发器信息框中,提供必需的值。

    有关示例触发器,请参阅添加、修改或删除行时

    Screenshot shows Standard workflow designer and example trigger.

  5. 完成后,请保存逻辑应用工作流。 在设计器工具栏上选择“保存”。

  6. 现在,为工作流添加至少一项操作,以在触发器触发时执行。 例如,可以添加 Dataverse 操作或基于触发器输出发送电子邮件的操作。

添加 Dataverse 操作

当你添加连接到服务或系统的触发器或操作时,如果没有现有连接或活动连接,Azure 逻辑应用会提示你提供连接信息,这些信息因连接类型而异,例如:

  • 帐户凭据
  • 要用于连接的名称
  • 服务器或系统的名称
  • 要使用的身份验证类型
  • 一个连接字符串

此示例使用向数据库添加新行的 Dataverse 操作。

备注

Dataverse 连接器具有特定于操作的参数和特定于数据库的参数。 例如,选择某个表时,该表的可用参数不同于其他表。

  1. Azure 门户的设计器中,打开标准逻辑应用资源和工作流。

  2. 在设计器上,按照这些常规步骤添加名为“添加新行”的“Microsoft Dataverse”操作

  3. 如果出现提示,请登录到 Dataverse 环境或数据库。

  4. 在操作信息框中,提供必需的值。

    有关示例操作,请参阅添加新行

    Screenshot shows Standard workflow designer and example action.

  5. 完成后,请保存逻辑应用工作流。 在设计器工具栏上选择“保存”。

  6. 如果需要,可继续添加更多操作。

测试工作流

若要测试和触发工作流,请遵循以下步骤:

  1. 在工作流菜单上,选择“概述”。

  2. 在“概述”工具栏上,选择“运行”>“运行”。

  3. 重现触发器运行工作流所需的条件。

基于筛选器返回行

对于返回行的操作(例如“列出行”操作),可使用基于指定筛选器返回行的 ODATA 查询。 例如,可将操作设置为仅返回活动帐户的行。 有关示例操作的详细信息,请参阅列出行

  1. 在设计器上的操作中,打开“高级参数”列表,然后选择“筛选行”属性。

    Screenshot shows Standard workflow and property named Filter rows.

  2. 在操作中当前显示的“筛选行”属性中,输入 ODATA 查询表达式,例如:

    statuscode eq 1

    Screenshot shows Standard workflow and property named Filter rows with ODATA query.

有关 $filter 系统查询选项的详细信息,请参阅使用 Web API 查询数据 - 筛选结果

基于排序顺序返回行

对于返回行的操作(例如“列出行”操作),可以使用一个按指定顺序(因操作返回的行而异)返回行的 ODATA 查询。 例如,可将操作设置为返回按帐户名称组织的行。 有关示例操作的详细信息,请参阅列出行

  1. 在设计器上的操作中,打开“高级参数”列表,然后选择“排序依据”属性。

    Screenshot shows Standard workflow, a Dataverse action, and Sort By property.

  2. 在操作中当前显示的“排序依据”属性中,输入用于排序的列名称,例如“name”:

    Screenshot shows Standard workflow, a Dataverse action, and Sort By property with column name.

有关 $orderby 系统查询选项的详细信息,请参阅使用 Web API 查询数据 - 排序依据

字段数据类型

在触发器或操作中,字段值的数据类型必须与字段所需的数据类型匹配。 无论是手动输入值还是从动态内容列表中选择值,此要求都适用。

备注

Dataverse 连接器具有特定于操作的参数和特定于数据库的参数。 例如,选择某个表时,该表的可用参数不同于其他表。

例如,假设有一个名为“任务”的表。 此表具有仅适用于该表的字段,而其他表具有自己的字段。 对于示例“任务”表,下表描述了一些示例字段类型以及这些字段的值所需的数据类型。

字段 数据类型 说明
文本字段 单个文本行 需要单行文本或具有文本数据类型的动态内容,例如以下属性:

- 描述
- 类别
整数字段 整数 需要一个整数或具有整数数据类型的动态内容,例如以下属性:

- 完成百分比
- 持续时间
日期字段 日期和时间 需要一个 MM/DD/YYY 格式的日期或具有日期数据类型的动态内容,例如以下属性:

- 创建日期
- 开始日期
- 实际开始日期
- 实际结束日期
- 截止日期
引用其他实体行的字段 主密钥 需要一个行 ID(例如 GUID)和一个查找类型,这意味着来自动态内容列表的值将不起作用,例如以下属性:

- 所有者:必须是有效的用户 ID 或团队行 ID。
- 所有者类型:必须是一个查找类型,例如 systemusersteams

- 相关:必须是有效的行 ID,例如帐户 ID 或联系人行 ID。
- 相关类型:必须是一个查找类型,例如 accountscontacts

- 客户:必须是有效的行 ID,例如帐户 ID 或联系人行 ID。
- 客户类型:必须是一个查找类型,例如 accountscontacts

对于示例“任务”表,假设你使用“添加新行”操作来创建与其他实体行相关联的新行,特别是用户行和帐户行。 那么在此操作中,必须使用与相关属性的预期数据类型匹配的值来指定这些实体行的 ID 和查找类型。

  • 该操作根据“所有者”属性(指定用户 ID)和“所有者类型”属性(指定 systemusers 查找类型),将新行与特定用户相关联。

  • 该操作根据“相关”属性(指定行 ID)和“相关类型”属性(指定 accounts 查找类型),将新行与特定帐户相关联。

解决问题

来自多个环境的调用

Dataverse 连接器存储逻辑应用工作流的相关信息,这些工作流使用 Dataverse 数据库中的 callbackregistrations 实体获取和请求数据库实体变更通知。 如果你复制某个 Dataverse 组织,则还会复制任何 Webhook。 如果在禁用映射到组织的工作流之前复制组织,则任何复制的 Webhook 也会指向相同的逻辑应用工作流,后者随后会从多个组织获取通知。

若要停止不需要的通知,请按照以下步骤从发送这些通知的组织中删除 callbackregistrations 实体:

  1. 确定要从中移除通知的 Dataverse 组织,并登录到该组织。

  2. 在 Chrome 浏览器中,找到要删除的回调注册。

    1. 在以下 OData URI 上查看所有回调注册的泛型列表,以便你可以查看 callbackregistrations 实体内的数据:

      https://{organization-name}.crm{instance-number}.dynamics.com/api/data/v9.0/callbackregistrations

      注意

      如果未返回任何值,表示你可能无权查看此实体类型,或者可能未登录到正确的组织。

    2. 请筛选触发实体的逻辑名称 entityname 以及与你的逻辑应用工作流(消息)匹配的通知事件。 每个事件类型都映射到消息整数,如下所示:

      事件类型 消息整数
      创建 1
      删除 2
      更新 3
      CreateOrUpdate 4
      CreateOrDelete 5
      UpdateOrDelete 6
      CreateOrUpdateOrDelete 7

      以下示例显示了如何为示例组织使用以下 OData URI 筛选名为 nov_validation 的实体上的 Create 通知:

      https://fabrikam-preprod.crm1.dynamics.com/api/data/v9.0/callbackregistrations?$filter=entityname eq 'nov_validation' and message eq 1

      Screenshot shows browser window and OData URI in address bar.

      注意

      如果同一个实体或事件存在多个触发器,则可以使用附加筛选器(例如 createdon_owninguser_value 属性)来筛选列表。 所有者用户的名称将显示在 /api/data/v9.0/systemusers({id}) 下。

    3. 找到要删除的回调注册的 ID 后,执行以下步骤:

      1. 在 Chrome 浏览器中,打开“Chrome 开发人员工具”(键盘:F12)。

      2. 在窗口顶部,选择“控制台”选项卡。

      3. 在命令行提示符下,输入此命令,该命令将发送请求以删除指定的回调注册:

        fetch('http://{organization-name}.crm{instance-number}.dynamics.com/api/data/v9.0/callbackregistrations({ID-to-delete})', { method: 'DELETE'})

        重要

        请确保从非统一的客户端界面 (UCI) 页面(例如,从 OData 或 API 响应页面本身)发出请求。 否则,app.js 文件中的逻辑可能会干扰此操作。

    4. 若要确认回调注册不再存在,请检查回调注册列表。

重复的“callbackregistrations”实体

在标准型逻辑应用工作流中,在实例重新分配或应用程序重启等特定条件下,Microsoft Dataverse 触发器会启动重复运行,这会在 Dataverse 数据库中创建重复的 callbackregistrations 实体。 如果编辑从 Dataverse 触发器开始的标准型工作流,请检查此 callbackregistrations 实体是否重复。 如果存在重复项,请手动删除重复 callbackregistrations 实体。

后续步骤