创建新提供程序

要创建新的提供程序,请使用以下步骤。 您还可以使用这些步骤对现有提供程序进行添加。

定义提供程序体系结构

在创建提供程序之前,一定要了解您希望提供程序做什么以及使用它的目的。 提供程序有多个组件,您可能并不需要所有组件。

使用下表确定您需要哪些组件。

条件 需要的组件
您要为其创建提供程序的服务在 Power Automate 中没有连接器。
有关更多信息,请参阅所有 Power Automate 连接器列表
创建客户连接器或使用通用连接器。
您的提供程序将在外部服务和 Microsoft Dataverse 之间交换数据。 您的提供程序需要提供程序转换。 为每个转换添加一个提供程序转换组件。
您的提供程序将执行来自编排设计器的逻辑。 创建一个单独的 Power Automate 流来表示每个操作。
您的提供程序需要处理来自外部服务的消息。 创建一个 Power Automate 消息处理程序流。
您的提供程序将定期从外部服务中拉取消息。 创建一个 Power Automate 消息拉取器流。
您的提供程序将引发 Intelligent Order Management 中当前未定义的业务事件。 创建新的业务事件定义并添加现有事件。

当您对解决方案有了很好的理解后,可以继续实施您的提供程序。

创建提供程序解决方案

您需要完成本部分中的以下任务才能创建提供程序解决方案。

  • 设置自定义提供程序。

  • 添加提供程序定义。

  • 将组件添加到您的解决方案中。

设置自定义提供程序

在 Power Apps 中创建一个解决方案,其中将包含您的提供程序的组件。 要在 Power Apps 中创建新解决方案,请执行在 Power Apps 中创建解决方案中的步骤。

添加提供程序定义

提供程序定义包含有关您的提供程序的详细信息。 该定义决定了您的提供程序将如何出现在提供程序目录中。

  1. 在您创建的提供程序解决方案中,选择新建

  2. 选择 IOM提供程序定义

  3. 添加以下详细信息:

    1. 显示名称:您要为提供程序提供的名称,例如“测试提供程序”。

    2. 逻辑名称:您的提供程序的导出密钥。

    3. 描述:用于描述您的提供程序所做工作的文本。

  4. 选择保存

  5. 如果要添加徽标,请上传图像。

  6. 验证您的提供程序定义是否出现在解决方案中。 应该会显示具有组件类型 IOM 提供程序定义的记录。 如果未显示,请选择添加现有,然后选择您刚刚创建的记录。

  7. 验证您的提供程序是否出现在提供程序目录中。 如果您将有效字段设置为,您的提供程序定义将显示在提供程序目录中。 打开 Intelligent Order Management。 转到提供程序 > 目录。 验证是否显示了您的提供程序定义。

将组件添加到解决方案

创建提供程序定义后,将提供程序组件添加到解决方案中。

  1. 转到您的解决方案。

  2. 选择添加现有

  3. 选择 Intelligent Order Management 组件类型,然后选择您刚刚创建的记录。

创建提供程序转换

如果您的提供程序需要转换,您需要在您的解决方案中添加提供程序转换组件。 您可能需要创建多个转换。

  1. 在您的提供程序解决方案中,选择新建

  2. 选择 IOM 提供程序定义转换

  3. 添加以下详细信息:

    1. 显示名称:提供程序转换的名称,例如“转换销售订单”。

    2. 逻辑名称:您的提供程序的唯一标识符。 该值将成为数据的导入和导出键。 它应该以发布者的前缀开头。 例如,Microsoft 使用发布者前缀 msdyn_。 逻辑名称的示例是:msdyn_flexe_fulfillmentorderproduct_orderline 和 msdyn_flexe_fulfillmentorder_order。

    3. 源类型:该字段表示接收到的数据类型。 有两个选项:JsonDocumentDataverse 实体。 如果您的数据已经在 Dataverse 中,请选择 Dataverse 实体。 否则,请选择 JsonDocument。 此信息将在您定义的 Power Automate 元素使用,来查找转换。

    4. 源对象名称:您正在转换的数据的名称。 如果您要转换 Dataverse 记录,请确保源对象名称与 Dataverse 表中的名称相同。

    5. 目标对象名称:要转换的记录的目标。

    6. 转换:将用于转换输入数据的 Power Query Online MQuery。 有关 Power Query 和 MQuery 的信息,请参阅什么是 Power Query?Power QueryM 配方语言参考。以下是一个将外部订单服务中的销售订单转换为 Intelligent Order Management中的销售订单的 MQuery 示例。

shared TransformSourceData =

let

orderItems = Source\[OrderItems\],

orderheader =

Record.FromTable

(

Table.SelectRows

(

Record.ToTable

(

\[

ordernumber = Record.FieldOrDefault(Source, "SellerOrderId", Text.From(Source\[OrderServiceOrderId\])),

name = ordernumber,

msdyn\_ExternalOrderId = Text.From(Source\[OrderServiceOrderId\]),

\#"customerid\_account@odata.bind" = "/accounts(" & Text.From(Source\[accountid\]) & ")",

\#"pricelevelid@odata.bind" = "/pricelevels(" & Text.From(Source\[pricelevelid\]) & ")",

totalamount = if Record.HasFields(Source, "OrderTotal") then Decimal.From(Record.FieldOrDefault(Source\[OrderTotal\], "Amount")) else null,

shipto\_name = if Record.HasFields(Source, "ShippingAddress") then Record.FieldOrDefault(Source\[ShippingAddress\], "Name") else null,

shipto\_contactname = shipto\_name,

shipto\_line1 = if Record.HasFields(Source, "ShippingAddress") then Record.FieldOrDefault(Source\[ShippingAddress\], "AddressLine1") else null,

shipto\_line2 = if Record.HasFields(Source, "ShippingAddress") then Record.FieldOrDefault(Source\[ShippingAddress\], "AddressLine2") else null,

shipto\_line3 = if Record.HasFields(Source, "ShippingAddress") then Record.FieldOrDefault(Source\[ShippingAddress\], "AddressLine3") else null,

shipto\_city = if Record.HasFields(Source, "ShippingAddress") then Record.FieldOrDefault(Source\[ShippingAddress\], "City") else null,

shipto\_stateorprovince = if Record.HasFields(Source, "ShippingAddress") then Record.FieldOrDefault(Source\[ShippingAddress\], "StateOrRegion") else null,

shipto\_country = if Record.HasFields(Source, "ShippingAddress") then Record.FieldOrDefault(Source\[ShippingAddress\], "CountryCode") else null,

shipto\_postalcode = if Record.HasFields(Source, "ShippingAddress") then Record.FieldOrDefault(Source\[ShippingAddress\], "PostalCode") else null,

shipto\_telephone = if Record.HasFields(Source, "ShippingAddress") then Record.FieldOrDefault(Source\[ShippingAddress\], "Phone") else null,

overriddencreatedon = Record.FieldOrDefault(Source, "PurchaseDate")

\]

), each \[Value\] \<\> null

)

),

orderlines = List.Transform(orderItems, each

Record.FromTable

(

Table.SelectRows

(

Record.ToTable

(

\[

isproductoverridden = true,

ispriceoverridden = true,

productdescription = \[OrderItemId\] & "-" & Record.FieldOrDefault(\_, "SellerSKU") & "-" & Record.FieldOrDefault(\_, "Title"),

quantity = \[QuantityOrdered\],

quantityshipped = Record.FieldOrDefault(\_, "QuantityShipped"),

priceperunit = if Record.HasFields(\_, "ItemPrice") then Decimal.From(Record.FieldOrDefault(\[ItemPrice\], "Amount")) else null,

manualdiscountamount = if Record.HasFields(\_, "PromotionDiscount") then Decimal.From(Record.FieldOrDefault(\[PromotionDiscount\], "Amount")) else null,

tax = if Record.HasFields(\_, "ItemTax") then Decimal.From(Record.FieldOrDefault(\[ItemTax\], "Amount")) else null,

shipto\_name = Record.FieldOrDefault(orderheader, "shipto\_name"),

shipto\_contactname = Record.FieldOrDefault(orderheader, "shipto\_contactname"),

shipto\_line1 = Record.FieldOrDefault(orderheader, "shipto\_line1"),

shipto\_line2 = Record.FieldOrDefault(orderheader, "shipto\_line2"),

shipto\_line3 = Record.FieldOrDefault(orderheader, "shipto\_line3"),

shipto\_city = Record.FieldOrDefault(orderheader, "shipto\_city"),

shipto\_stateorprovince = Record.FieldOrDefault(orderheader, "shipto\_stateorprovince"),

shipto\_country = Record.FieldOrDefault(orderheader, "shipto\_country"),

shipto\_postalcode = Record.FieldOrDefault(orderheader, "shipto\_postalcode"),

shipto\_telephone = Record.FieldOrDefault(orderheader, "shipto\_telephone"),

overriddencreatedon = Record.FieldOrDefault(orderheader, "overriddencreatedon")

\]

), each \[Value\] \<\> null

)

)

),

salesorder = Record.AddField(orderheader, "order\_details", orderlines)

in Text.FromBinary(Json.FromValue(salesorder));
  1. 选择保存

  2. 验证您的转换组件是否正确显示。 应该会显示具有组件名称的 IOM 提供程序定义转换的组件类型。 如果未显示,请选择添加现有,然后选择您刚刚创建的转换。

添加业务事件定义

如果您的提供程序将创建或使用新的业务事件,您必须将 IOM 提供程序定义业务事件定义组件添加到您的解决方案中。 您只需添加 Intelligent Order Management 中尚不存在的业务事件。

如果您要创建的业务事件尚未在 Intelligent Order Management 中,您可以创建自己的业务事件。

  1. 选择新建

  2. 选择 IOM 提供程序定义业务事件定义

  3. 添加以下详细信息:

    1. 名称:您的业务事件的名称。

    2. 提供程序:您为其创建此业务定义的提供程序。

    3. 关联实体:Intelligent Order Management 中的 Dataverse 实体,在事件创建时会发生变化或受到影响。

    4. 关联状态值:如果您希望在引发业务事件时更新关联实体的状态,请在此字段中包含一个状态值。

    5. 关联状态值:如果您希望在引发业务事件时更新关联实体的状态,请在此字段中包含一个状态值。

  4. 选择保存

  5. 检查您的解决方案以验证是否显示了 IOM 提供程序业务事件定义记录。 如果该记录未出现在解决方案中,请选择添加现有,然后选择您刚刚创建的记录。

添加连接器

如果您的提供程序需要一个在 Power Automate 中不可用的连接器,您需要创建自己的连接器。 有关更多信息,请参阅所有 Power Automate 连接器列表

要创建您自己的 Power Automate 连接器,请执行自定义连接器概览中的步骤。

创建自定义连接器后,将其作为组件添加到您的提供程序解决方案中。

  1. 转到您的提供程序解决方案。

  2. 选择添加现有

  3. 选择您创建的连接器。

Power Automate 流的类型

在编排设计器中执行的任何操作都由 Power Automate 流表示。 如果您希望 Power Automate 检索特定信息或执行特定操作,则需要为这些操作创建流。 要了解有关 Power Automate 的更多信息,请参阅Power Automate 简介

将您的流作为提供程序定义逻辑定义组件添加到您的提供程序。

在开始流创建过程之前,请查看 Intelligent Order Management 中使用的流类型。

提供程序消息处理程序

这些流接收并处理来自外部服务的消息,并引发适当的业务事件以通知 Intelligent Order Management 编排。 这些流由外部服务触发。

以下是创建 Power Automate 流的消息处理程序类型的示例结构。

  1. 定义一个 Power Automate 触发器。 这通常是一个 HTTP 终结点,它是一个 webhook 触发器(推荐)、连接器触发器或一个 Dataverse 插入触发器。 当外部服务有数据要发送到 Intelligent Order Management 时,触发器会被触发。 收到 HTTP 请求时触发器的屏幕截图。

在 HTTP 触发器中使用的 JSON 架构的定义如下。

{
    "type": "object",
    "properties": {
        "text": {
            "title": "ProviderActionExecutionEventId",
            "type": "string",
            "x-ms-dynamically-added": true,
            "description": "Please enter your input",
            "x-ms-content-hint": "TEXT"
        },
        "text_1": {
            "title": "EntityRecordId",
            "type": "string",
            "x-ms-dynamically-added": true,
            "description": "Please enter your input",
            "x-ms-content-hint": "TEXT"
        }
    },
    "required": [
        "text",
        "text_1"
    ]
}
  1. 初始化消息处理。 此任务涉及两个步骤。

    1. 初始化将用于跟踪消息处理的执行结果。

    2. 在 Intelligent Order Management 中确认提供程序消息,以便您可以跟踪、重试和显示处理状态。 这是 Intelligent Order Management 引入的 Power Automate 操作。 此操作称为在 IOM 中确认提供程序消息请求。 此操作具有以下必需参数。

      1. PowerAutomateWorkflowId:消息处理程序定义上的 WorkflowId。 您可以通过使用具有 workflow()['tags'] 的组合函数来检索它。

      2. PowerAutomateRunId:收到消息并且允许管道重试处理并链接执行日志的 Power Automate 运行的唯一标识符。 您可以通过使用具有 workflow()['run']?['name'] 的组合函数来检索它。

      3. ProviderMessageExternalRequestId:已发送消息的标识符。 如果不存在标识符,则可以生成 GUID。 管道使用此标识符来帮助防止发送方发送重复的消息。 此标识符取决于源有效负载。 例如:concat(triggerOutputs()?['body']?['type']?['name'], '_', triggerOutputs()?['body']?['id'])。

确认提供程序消息请求屏幕的屏幕截图。

  1. 您之前定义的提供程序转换将检索输入数据并对其进行转换。 Intelligent Order Management 提供一个名为 IOM 提供程序转换程序的现成子流,它将执行转换。 添加以下详细信息以处理事件或消息:

    1. 提供程序名称:链接到消息处理程序的提供程序的名称。 该值必须与您的提供程序转换同名。

    2. 源对象名称:要执行的转换的源查找键值。 该值需要与您的提供程序转换中定义的源对象名称相同。

    3. 目标对象名称:要执行的转换的目标查找键值。 该值需要与您的提供程序转换中定义的值相同。

    4. 有效负载:在转换 JSON 有效负载时提供。 Power Automate 要求参数作为序列化字符串传递。 提供一个有效负载或一个记录 ID 值,而不是二者都提供。

    5. 记录 ID:转换 Dataverse 记录时提供。 提供一个有效负载或一个记录 ID 值,而不是二者都提供。
      使用 Power Query Online 转换消息的屏幕截图。

  2. 您可以使用 HTTP 请求或 Dataverse 连接器插入操作将数据插入 Dataverse 中。 如果您正在执行多个插入并希望提高性能,请将插入包装到一个更改集中,以便请求位于事务批处理中。
    插入消息流的屏幕截图。

  3. 如果您希望流引发业务事件,您可以使用引发业务事件子流。 添加以下详细信息。

    1. BusinessEventName:您要引发的事件的名称。

    2. EntityRecordId:刚刚创建并关联到事件的记录的 ID。

  4. 使用更新提供程序消息请求状态操作更新消息处理状态,以保存处理执行结果。 添加以下详细信息。

    1. ProviderMessageRequestExecutionId:为跟踪消息处理进度而创建的记录的输出 ID。

    2. IsProviderMessageRequestExecutionSuccess:布尔值,表示处理是否成功。

提供程序消息拉取器

提供程序消息拉取器是以定期定义的时间间隔从外部服务拉取消息的 Power Automate 流。

注释

消息处理程序是消息拉取器流的先决条件。

以下是创建 Power Automate 流的消息拉取器类型的示例结构。

  1. 使用重复工作流来安排触发器。

  2. 从 Dataverse 获取检查点。 检查点跟踪已成功从外部提供程序中拉取哪些消息。 添加以下详细信息。

    1. 操作名称:检查点的名称。

    2. WorkflowId:设置以下组合函数以检索此信息:workflow()['tags']['xrmWorkflowId']。
      获取检查点的屏幕截图。

  3. 创建一个针对外部提供程序的 HTTP post 请求以拉取消息。 添加以下详细信息。

    1. 方法:将此字段设置为 POST

    2. URL:外部提供程序终结点。

    3. 正文:JSON 请求应具有以下公式:if(empty(outputs('Get_Checkpoint')?['body/Checkpoint']), 0, int(outputs('Get_Checkpoint')?['body/Checkpoint']))。
      拉取消息的屏幕截图。

  4. 解析第 3 步中拉取的消息。 添加以下详细信息。

    1. 内容:从第 3 步中检索到的正文。

    2. 架构:在第 3 步中检索到的正文结构。
      分析消息的屏幕截图。

  5. 处理消息以循环遍历第 4 步中的每个消息。

  6. 解析前面步骤中的每个消息。 添加以下信息。

    1. 内容:来自处理消息的当前项目。

    2. 架构:JSON 格式的单个消息。
      处理消息 2 的屏幕截图。

  7. 调用您在先决条件中设置的关联提供程序消息处理程序。 添加以下信息。

    1. 子流:选择您的提供程序消息处理程序。

    2. 消息:从第 6 步分析的消息。
      处理消息 3 的屏幕截图。

  8. 将检查点保存到 Dataverse。 添加以下信息。

    1. 检查点:这可以是任何字符串值(最大 100)。 在此示例中,这是上次处理的消息的 ID。

    2. WorkFlowId:您可以通过将组合函数集添加到 workflow()['tags']['xrmWorkflowId'] 来检索此 ID。
      处理消息 4 的屏幕截图。

提供程序操作

提供程序操作流是从编排设计器调用的。 这些流通常从 Intelligent Order Management 调用外部服务。

提供程序消息处理程序和提供程序操作之间的主要区别在于,虽然消息处理程序可以通知编排设计器,但它不能由编排设计器中的操作磁贴触发,而提供程序操作却可以。

以下是提供程序操作 Power Automate 流的示例结构。

  1. 从 HTTP 触发器开始。 编排服务将在运行时传递以下信息。 以下 JSON 架构将用于主体:
{
    "type": "object",
    "properties": {
        "text": {
            "title": "ProviderActionExecutionEventId",
            "type": "string",
            "x-ms-dynamically-added": true,
            "description": "Please enter your input",
            "x-ms-content-hint": "TEXT"
        },
        "text_1": {
            "title": "EntityRecordId",
            "type": "string",
            "x-ms-dynamically-added": true,
            "description": "Please enter your input",
            "x-ms-content-hint": "TEXT"
        }
    },
    "required": [
        "text",
        "text_1"
    ]
}
  1. 初始化操作处理。

    1. 初始化执行结果和任何其他处理变量。

    2. 使用启动提供程序操作执行 Dataverse 操作来确认操作执行开始。 这将允许管道在 Intelligent Order Management 中跟踪、重试和显示处理状态。 添加以下信息。

      1. ProviderActionExecutionEventId:此值在第 1 步中作为输入参数传递到操作中。

      2. PowerAutomateRunID:Power Automate 操作的唯一运行。 这允许管道链接执行日志。 通过将字段设置为 Power Automate 表达式 worflow()['run']?['name'] 来获取此信息。

  2. 执行该操作。

    1. 如有必要,使用通过 Power Query Online 转换消息子流来转换记录。

      1. 提供程序名称:要链接到操作的提供程序的名称。 该名称必须与您的提供程序定义同名。

      2. 源对象名称:要执行的转换的源名称。 该名称必须与您的 Power Automate 转换中定义的源对象相同。

      3. 目标对象名称:要执行的转换的目标查找键值。 该名称必须与您的提供程序转换中定义的值相同。

      4. 有效负载:在转换入站 JSON 有效负载时提供。 Power Automate 要求参数作为序列化字符串传递。 添加一个有效负载或一个记录 ID 值,而不是二者都提供。

      5. 记录 ID:转换出站 Dataverse 记录时提供。 添加一个有效负载或一个记录 ID 值,而不是二者都提供。
        使用 Power Query Online 转换消息的屏幕截图。

    2. 执行您定义的任何自定义操作。 这些是出现在您正在使用的 Power Automate 连接器上的操作。

    3. 引发特定于操作的业务事件。 使用引发业务事件子流。 添加以下信息。

      1. BusinessEventName:您要引发的事件的名称。

      2. EntityRecordId:刚刚关联到事件的记录的 ID。

  3. 完成操作执行并保存结果。 结果将由编排设计器处理。 添加以下信息。

    1. ExecutionResult:布尔值,表示处理是否成功。

    2. ExecutionDetails:用于测试和调试目的的可选日志详细信息。

    3. ProviderActionExecutionEventId:此值作为在第 1 步中定义的输入参数传递到操作中。
      完整提供程序操作执行的屏幕截图。

子流

子流是在其他 Power Automate 流中引用的子流。 如果您在多个区域重复执行某些步骤,那么定义子流会很有帮助。 子流没有特定的模板或推荐流程,因为它们主要用于方便地合并类似步骤。

提供程序子流不能调用其他提供程序子流。

创建云端流

当您了解要创建的流类型时,您就可以创建云端流了。 为此,请执行以下步骤:

  1. 在您的 Power Apps 环境中打开默认解决方案。

重要

不要将这些解决方案添加到您的提供程序解决方案中。

  1. 选择新建,然后选择云端流

  2. 构建您的 Power Automate 流。 使用上一部分中的模板作为参考。

  3. 请参阅以下部分以保存您的流。

保存 Power Automate 定义

创建流后,您需要将其另存为提供程序定义逻辑定义组件。 此组件类型为 Intelligent Order Management 提供在提供程序激活期间部署的操作。

在保存流之前,您必须先满足以下先决条件。

  • 要保存您的 Power Automate 逻辑定义,您需要发出 OData 请求。 为此,您需要一个 PostMan 或类似服务的帐户。

  • 您需要为 Dataverse 环境生成一个访问令牌,以发出 GET 和 POST 请求。 为此,您需要完成以下操作。

    • 设置具有有效订阅的 Azure 帐户。 如果您没有活动帐户,则需要在 Azure 网站上设置一个帐户。

    • 必须安装 PowerShell。 有关更多信息,请参阅安装 PowerShell

    • 在 PowerShell 中输入以下命令以获取访问令牌:az login --allow-no-subscriptions account get-access-token --resource=https://YourDataverseTenantURL.api.crm.dynamics.com/ --query=accessToken --output=tsv | Set-Clipboard。

要保存您的 Power Automate 定义,请执行以下操作。

  1. 找到您要保存的 Power Automate 流的工作流 ID。 执行以下操作之一。

    1. 使用 Power Automate 操作查找工作流 ID。

      1. 在您的 Power Automate 流末尾使用 workflow() 表达式创建一个组合操作。
        撰写操作的屏幕截图。

      2. 运行 Power Automate。

      3. 执行结果中的 xrmWorkflowId 属性将包含工作流 ID。
        工作流 ID 的屏幕截图。

      4. 从流中删除此操作,使其不再运行。

    2. 或者,您可以发出 Get ODat 请求。

      1. 转到要为其保存工作流 ID 的流。 在 URL 中查找唯一标识符。 这是 URL 中在 ../flows/ 之后出现的 ID。
        如何找到唯一标识符。

      2. 发出 OData 请求以检索工作流元数据。 下面是一个示例 GET 请求。
        GET {Env url}/api/data/v9.1/workflows?$filter=workflowidunique eq '{Unique Workflow Id from the Power Automate U}'&$select=workflowid,workflowidunique

      3. 保存返回的 workflowid 属性。

  2. 查找提供程序定义 ID。

    1. 选择要将流保存到的提供程序定义。

    2. 从 URL 复制提供程序定义 ID。 这是 URL ../id={example number}/ 的一部分。
      如何查找提供程序定义 ID。

  3. 记下您正在保存的 Power Automate 类型的选项集值。

    1. 子流:192350002

    2. 提供程序操作:192350001

    3. 提供程序消息处理程序:192350000

    4. 提供程序消息拉取器:192350003

  4. 发出 POST 请求以保存您的 Power Automate 定义。 下面是一个示例请求。

    POST: {Env url}/api/data/v9.1/msdyn\_SaveProviderDefinitionLogicDefinition  
    Body:  
    {

"ProviderDefinitionId": "{ProviderId previously found}",

"WorkflowId": "{Power Automate WorkflowId previously found}",

"LogicalName": "{Export prefix \_ Power Automate Export Name}",

"LogicType": {Logic Type},

"MaxRetryAttempts": {Max number of attempts},

"TimeoutMinutes": {Timeout number ex: 5}

}
  1. 验证您的提供程序定义逻辑定义组件是否已添加。 为此,请执行以下步骤:

    1. 转到您的提供程序解决方案。

    2. 验证您创建的提供程序定义逻辑定义是否已添加。 如果未添加,请选择添加现有,然后添加您创建的组件。

系统连接引用

如果您的提供程序使用客户 Power Automate 连接器,您必须完成以下步骤以保存对您的 Power Automate 解决方案的连接引用。

  1. 发出 GET 请求以检索您的连接引用 ID。 例如:
GET {Env url}/api/data/v9.2/connectionreferences

如果要进一步筛选,可以按连接引用名称进行筛选。 例如:

    {Env url}/api/data/v9.2/connectionreferences?$[connectionreferences?$filter=connectionreferencedisplayname](https://orgdb90e3a2.api.crm10.dynamics.com/api/data/v9.2/connectionreferences?$filter=connectionreferencedisplayname) eq 'Provider Example'&$select=connectionreferencelogicalname,connectionreferencedisplayname,connectionreferenceid,connectorid

  1. 通过搜索您的 Power Automate 客户端数据验证是否检索到正确的连接引用 ID。

    1. 转到您之前保存的提供程序定义逻辑定义组件。

    2. 检查客户端数据以验证 connectionReferenceLogicalName 是否出现。

  2. 查找您的提供程序定义 ID。 这与您在第 2 步中用于保存 Power Automate 逻辑定义的值相同。

  3. 发出 post 请求以保存您的连接引用。 例如:

POST {Env url}/api/data/v9.1/msdyn\_SaveProviderDefinitionConnectionReference  
    Body:  
    {

"ProviderDefinitionId": "{ProviderId previously found}",

"ConnectionReferenceId": "{Connection reference id previously found}"

}
  1. 验证您的提供程序定义逻辑定义组件是否已添加。

    1. 转到您的提供程序解决方案。

    2. 验证您创建的提供程序定义逻辑定义引用组件是否已添加。 如果未添加,请选择添加现有,添加您刚刚创建的组件。

共享您的提供程序

如果您想在另一个环境中使用提供程序定义或共享解决方案,您可以导出提供程序解决方案。 有关更多信息,请参阅导出解决方案