Поделиться через


Создание нового поставщика

Чтобы создать нового поставщика, выполните следующие шаги. Эти шаги также можно использовать для добавления к существующим поставщикам.

Определение архитектуры поставщика

Перед созданием поставщика важно понять, что именно должен делать поставщик и для чего вы хотите его использовать. Поставщики имеют несколько компонентов, и, возможно, вам нужны не все компоненты.

Воспользуйтесь следующей таблицей, чтобы определить требуемые компоненты.

Условие Требуемый компонент
У службы, для которой вы хотите создать поставщика, нет соединителя в 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. Тип источника: это поле указывает тип принимаемых данных. Имеются две возможности: JsonDocument или Сущность Dataverse. Если данные уже есть в Dataverse, выберите Сущность Dataverse. Если нет, выберите JsonDocument. Эта информация будет использоваться в элементе Power Automate, определяемом для поиска преобразования.

    4. Имя объекта-источника: имя данных, которые требуется преобразовать. При преобразовании записи Dataverse убедитесь, что Имя объекта-источника совпадает с именем в таблице Dataverse.

    5. Имя целевого объекта: назначение для записи, которую требуется преобразовать.

    6. Преобразование: сетевой запрос MQuery Power Query, который будет использоваться для преобразования входных данных. Сведения о Power Query и MQuery см. в разделах Что такое Power Query? и Справочник по языку формул Power Query M. Ниже приводится пример запроса MQuery, который преобразует заказ на продажу из внешней службы заказов в заказ на продажу в Intelligent Order Management.

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. Связанная сущность: сущность Dataverse в Intelligent Order Management, которая изменяется или затрагивается при создании события.

    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, которая представляет собой триггер веб-перехватчика (рекомендуется), триггер соединителя или триггер вставки Dataverse. Триггер создается, когда внешняя служба имеет данные для отправки в Intelligent Order Management. Снимок экрана триггера при получении HTTP-запроса.

Схема JSON для использования в триггере HTTP определена ниже.

{
    "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, чтобы вы могли отслеживать, повторять и выводить состояние обработки. Это действие Power Automate, которое вводит Intelligent Order Management. Это действие называется Запрос подтверждения сообщения поставщика в 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 требует, чтобы параметры были переданы как сериализованная строка. Укажите значение параметра Полезная нагрузка или ИД записи, но не оба значения одновременно.

    5. ИД записи: предоставляется при преобразовании записи Dataverse. Укажите значение параметра Полезная нагрузка или ИД записи, но не оба значения одновременно.
      Снимок экрана для преобразования сообщения в Power Query Online.

  2. Можно вставить данные в Dataverse, используя запросы HTTP или действие Вставить соединителя Dataverse. Если выполняется несколько вставок и требуется повысить производительность, заключите вставки в набор изменений, чтобы запросы находились в пакете транзакций.
    Снимок экрана потока вставки сообщений.

  3. Если необходимо, чтобы поток инициировал бизнес-событие, можно использовать дочерний поток Создание бизнес-события. Добавьте следующие детали.

    1. BusinessEventName: имя события, которое требуется вызвать.

    2. EntityRecordId: идентификатор только что созданной записи, связанной с событием.

  4. Обновите состояние обработки сообщения, используя действие Обновить состояние запросов сообщений поставщика, чтобы сохранить результат выполнения обработки. Добавьте следующие детали.

    1. ProviderMessageRequestExecutionId: выходной идентификатор записи, созданной для отслеживания хода выполнения обработки сообщения.

    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). В этом примере это идентификатор последнего обработанного сообщения.

    2. WorkFlowId: можно извлечь этот идентификатор, добавив функцию создания, для которой задано workflow()['tags']['xrmWorkflowId'].
      Снимок экрана обработки сообщений 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 требует, чтобы параметры были переданы как сериализованная строка. Добавьте значение параметра Полезная нагрузка или ИД записи, но не оба значения одновременно.

      5. ИД записи: предоставляется при преобразовании исходящей записи Dataverse. Добавьте значение параметра Полезная нагрузка или ИД записи, но не оба значения одновременно.
        Снимок экрана для преобразования сообщения в Power Query Online.

    2. Выполните любые определенные вами пользовательские действия. Это действия, которые присутствуют в используемом соединителе Power Automate.

    3. Создайте бизнес-событие, относящееся к действию. Используйте дочерний поток Создание бизнес-события. Добавьте следующую информацию.

      1. BusinessEventName: имя события, которое требуется создать.

      2. EntityRecordId: идентификатор записи, связанной с событием.

  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, который необходимо сохранить. Выполните одно из следующих действий.

    1. Найдите идентификатор рабочего процесса с помощью действия Power Automate.

      1. Создайте действие создания с помощью выражения workflow() в конце потока Power Automate.
        Снимок экрана действия создания.

      2. Выполните Power Automate.

      3. Свойство xrmWorkflowId из результатов выполнения будет содержать идентификатор рабочего процесса.
        Снимок экрана идентификатора рабочего процесса.

      4. Удалите это действие из потока, чтобы оно не запускалось снова.

    2. Кроме того, можно выдать запрос Get OData.

      1. Перейдите к потоку, для которого необходимо сохранить идентификатор рабочего процесса. Найдите уникальный идентификатор в URL-адресе. Это идентификатор, который появляется после ../flows/ в URL-адресе.
        Порядок поиска уникального идентификатора.

      2. Выдача запроса OData для получения метаданных рабочего процесса. Ниже приведен пример запроса GET.
        GET {URL-адрес среды}/api/data/v9.1/workflows?$filter=workflowidunique eq '{Уникальный ИД рабочего процесса из Power Automate U}'&$select=workflowid,workflowidunique

      3. Сохраните возвращенное свойство workflowid.

  2. Найдите идентификатор определения поставщика.

    1. Выберите определение поставщика, в которое необходимо сохранить поток.

    2. Скопируйте идентификатор определения поставщика из URL-адреса. Это часть URL-адреса ../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 для получения идентификатора ссылки на подключение. Рассмотрим пример.
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.

    1. Перейдите к компоненту определения логики определения поставщика, которое вы сохранили ранее.

    2. Проверьте данные клиента, чтобы убедиться, что появляется connectionReferenceLogicalName.

  2. Найдите идентификатор определения поставщика. Это значение совпадает со значением, которое было использовано на шаге 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. Убедитесь, что был добавлен созданный вами компонент ссылки на определение логики определения поставщика. Если он не был добавлен, выберите Добавить существующий и добавьте только что созданный компонент.

Поделитесь своими поставщиками

Если вы хотите использовать определение поставщика в другой среде или поделиться вашим решением, вы можете экспортировать ваше решение поставщика. Дополнительные сведения см. в разделе Экспорт решений.