Freigeben über


Neuen Anbieter erstellen

Führen Sie die folgenden Schritte aus, um einen neuen Anbieter zu erstellen. Sie können diese Schritte auch verwenden, um Ergänzungen zu bestehenden Anbietern vorzunehmen.

Anbieterarchitektur festlegen

Bevor Sie einen Anbieter erstellen, ist es wichtig zu verstehen, was der Anbieter tun soll und wofür Sie ihn verwenden möchten. Anbieter haben mehrere Komponenten und Sie benötigen möglicherweise nicht alle.

Bestimmen Sie anhand der folgenden Tabelle, welche Komponenten Sie benötigen.

Bedingung Erforderliche Komponente
Der Dienst, für den Sie einen Anbieter erstellen möchten, hat keinen Konnektor in Power Automate.
Weitere Informationen finden Sie unter Liste aller Power Automate-Konnektoren.
Erstellen Sie einen benutzerdefinierten Konnektor oder verwenden Sie einen generischen Konnektor.
Ihr Anbieter tauscht Daten zwischen einem externen Dienst und Microsoft Dataverse aus. Ihr Anbieter benötigt eine Anbietertransformation. Fügen Sie für jede Transformation eine Anbietertransformationskomponente hinzu.
Ihr Anbieter führt die Logik vom Orchestrierungs-Designer aus. Erstellen Sie einen separaten Power Automate-Flow, um die einzelnen Aktionen darzustellen.
Ihr Anbieter muss Meldungen von einem externen Dienst verarbeiten. Erstellen Sie Power Automate-Nachrichtenhandler-Flow.
Ihr Anbieter ruft in regelmäßigen Abständen Nachrichten von einem externen Dienst ab. Erstellen Sie Power Automate-Nachrichten-Puller-Flow.
Ihr Anbieter wird Geschäftsereignisse auslösen, die derzeit nicht in Intelligent Order Management definiert sind. Erstellen Sie eine neue Geschäftsereignisdefinition, und fügen Sie vorhandene Ereignisse hinzu.

Wenn Sie die Lösungen gut kennen, können Sie mit der Implementierung Ihres Anbieters fortfahren.

Eine Anbieterlösung erstellen

Sie müssen die folgenden Aufgaben in diesem Abschnitt ausführen, um eine Anbieterlösung zu erstellen.

  • Richten Sie einen benutzerdefinierten Anbieter ein.

  • Fügen Sie eine Anbieterdefinition hinzu.

  • Fügen Sie die Komponenten Ihrer Lösung hinzu.

Einen benutzerdefinierten Anbieter einrichten

Erstellen Sie eine Lösung in Power Apps, die die Komponenten Ihres Anbieters enthält. Um eine neue Lösung in Power Apps zu erstellen, führen Sie die Schritte in Eine Lösung in Power Apps erstellen aus.

Eine Anbieterdefinition hinzufügen

Eine Anbieterdefinition enthält Details zu Ihrem Anbieter. Die Definition bestimmt, wie Ihr Anbieter im Anbieterkatalog angezeigt wird.

  1. Wählen Sie Neu in der von Ihnen erstellten Anbieterlösung aus.

  2. Wählen Sie IOMAnbieterdefinition aus.

  3. Fügen Sie die folgenden Details hinzu:

    1. Anzeigename: Der Name, den Sie Ihrem Anbieter geben möchten, z. B. „Testanbieter“.

    2. Logischer Name: Der Exportschlüssel für Ihren Anbieter.

    3. Beschreibung: Text, der beschreibt, was Ihr Anbieter tut.

  4. Wählen Sie Speichern aus.

  5. Wenn Sie ein Logo hinzufügen möchten, laden Sie das Bild hoch.

  6. Überprüfen Sie, ob Ihre Anbieterdefinition in der Lösung angezeigt wird. Ein Datensatz mit dem Komponententyp IOM-Anbieterdefinition sollte angezeigt werden. Falls nicht, wählen Sie Vorhandenes Element hinzufügen und dann den soeben erstellten Datensatz aus.

  7. Überprüfen Sie, ob Ihre Anbieterdefinition im Anbieterkatalog angezeigt wird. Wenn Sie das Feld Ist aktiv auf Ja setzen, wird Ihre Anbieterdefinition im Anbieterkatalog angezeigt. Öffnen Sie Intelligent Order Management. Wechseln Sie zu Anbieter > Katalog. Vergewissern Sie sich, dass Ihre Anbieterdefinition angezeigt wird.

Der Lösung Komponenten hinzufügen

Nachdem Sie Ihre Anbieterdefinition erstellt haben, fügen Sie der Lösung die Anbieterkomponenten hinzu.

  1. Wechseln Sie zu Ihrer Lösung.

  2. Wählen Sie Vorhandene hinzufügen aus.

  3. Wählen Sie den Komponententyp „Intelligent Order Management” und dann den soeben erstellten Datensatz aus.

Eine Anbietertransformation erstellen

Wenn Ihr Anbieter eine Transformation erfordert, müssen Sie Ihrer Lösung eine Anbietertransformationskomponente hinzufügen. Möglicherweise müssen Sie mehrere Transformationen erstellen.

  1. Wählen Sie Neu in Ihrer Anbieterlösung aus.

  2. Wählen Sie IOM-Anbieterdefinitionstransformation aus.

  3. Fügen Sie die folgenden Details hinzu:

    1. Anzeigename: Der Name Ihrer Anbietertransformation, z. B. „Aufträge transformieren“.

    2. Logischer Name: Der eindeutige Bezeichner Ihres Anbieters. Dieser Wert ist der Import- und Exportschlüssel der Daten. Er sollte mit dem Präfix des Herausgebers beginnen. Microsoft verwendet beispielsweise das Herausgeberpräfix „msdyn_”. Beispiele für logische Namen sind: „msdyn_flexe_fulfillmentorderproduct_orderline” und „msdyn_flexe_fulfillmentorder_order”.

    3. Quelltyp: Dieses Feld zeigt an, welcher Typ von Daten empfangen wird. Es gibt zwei Möglichkeiten: JsonDocument oder Dataverse-Entität. Wenn Ihre Daten bereits in Dataverse vorhanden sind, wählen Sie Dataverse-Entität aus. Wenn nicht, wählen Sie JsonDocument aus. Diese Informationen werden im Power Automate-Element verwendet, das Sie festlegen, um die Transformation zu suchen.

    4. Quellobjektname: Der Name der Daten, die Sie transformieren. Wenn Sie einen Dataverse-Datensatz transformieren, vergewissern Sie sich, dass der Quellobjektname der gleiche Name wie in der Dataverse-Tabelle.

    5. Zielobjektname: Das Ziel des Datensatzes, den Sie transformieren möchten.

    6. Transformation: Die Power Query Online-MQuery, die zum Transformieren der Eingabedaten verwendet wird. Weitere Informationen zu Power Query und MQuery finden Sie unter Was ist Power Query? und Referenz zur Power Query M-Formelsprache. Nachfolgend finden Sie ein Beispiel für eine MQuery, die einen Auftrag von einem externen Bestellservice in einen Auftrag in Intelligent Order Management umwandelt.

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. Wählen Sie Speichern aus.

  2. Überprüfen Sie, ob Ihre Transformationskomponente richtig angezeigt wird. Ein Komponententyp der IOM-Anbieterdefinitionstransformationen mit dem Transformationsnamen sollte angezeigt werden. Falls nicht, wählen Sie Vorhandenes Element hinzufügen und dann die soeben erstellte Transformation aus.

Geschäftsereignisdefinitionen hinzufügen

Wenn Ihr Anbieter neue Geschäftsereignisse erstellt oder verwendet, müssen Sie Ihrer Lösung die IOM-Anbieterdefinitions-Geschäftsereignisdefinition-Komponenten hinzufügen. Sie müssen nur Geschäftsereignisse hinzufügen, die noch nicht in Intelligent Order Management enthalten sind.

Wenn sich das Geschäftsereignis, das Sie erstellen möchten, noch nicht in Intelligent Order Management befindet, können Sie selbst eines erstellen.

  1. Wählen Sie Neu aus.

  2. Wählen Sie Geschäftsereignisdefinitionen der IOM-Anbieterdefinition aus.

  3. Fügen Sie die folgenden Details hinzu:

    1. Name: Der Name Ihres Geschäftsereignisses.

    2. Anbieter: Der Anbieter, für den Sie diese Geschäftsdefinition erstellen.

    3. Zugeordnete Entität: Die Dataverse-Entität im Intelligent Order Management, die beim Erstellen des Ereignisses geändert oder beeinflusst wird.

    4. Zugeordneter Zustandswert: Wenn Sie möchten, dass der Zustand Ihrer zugeordneten Entität aktualisiert wird, wenn das Geschäftsereignis ausgelöst wird, geben Sie einen Zustandswert in dieses Feld ein.

    5. Zugeordneter Statuswert: Wenn Sie möchten, dass der STatus Ihrer zugeordneten Entität aktualisiert wird, wenn das Geschäftsereignis ausgelöst wird, geben Sie einen Statuswert in dieses Feld ein.

  4. Wählen Sie Speichern aus.

  5. Überprüfen Sie Ihre Lösung, um sicherzustellen, dass Datensatz IOM-Anbieterdefinition-Geschäftsereignisdefinition angezeigt wird. Wenn der Datensatz nicht in der Lösung angezeigt wird, wählen Sie Vorhandenes Element hinzufügen und dann den soeben erstellten Datensatz aus.

Konnektor hinzufügen

Wenn Ihr Anbieter einen Konnektor benötigt, der in nicht in Power Automate verfügbar ist, müssen Sie Ihren eigenen Konnektor erstellen. Weitere Informationen finden Sie unter Liste aller Power Automate-Konnektoren.

Um Ihren eigenen Power Automate-Connector zu erstellen, befolgen Sie die Schritte in Übersicht über benutzerdefinierte Konnektoren.

Nachdem Sie Ihren benutzerdefinierten Konnektor erstellt haben, fügen Sie ihn als Komponente zu Ihrer Anbieterlösung hinzu.

  1. Wechseln Sie zu Ihrer Anbieterlösung.

  2. Wählen Sie Vorhandene hinzufügen aus.

  3. Wählen Sie den soeben erstellten Konnektor aus.

Typen von Power Automate-Flows

Jede Aktion, die im Orchestrierungs-Designer ausgeführt wird, wird von Power Automate-Flows dargestellt. Wenn Power Automate bestimmte Informationen abzurufen oder bestimmte Aktionen auszuführen soll, müssen Sie die Flows für diese Aktionen erstellen. Weitere Informationen zu Power Automate finden Sie unter Einführung in Power Automate.

Fügen Sie Ihre Flows Ihrem Anbieter als Logische Anbieterdefinition-Komponenten hinzu.

Bevor Sie mit der Flowerstellung beginnen, überprüfen Sie die Flowtypen, die in Intelligent Order Management verwendet werden.

Nachrichtenhandler des Anbieters

Diese Flows empfangen und verarbeiten Nachrichten von einem externen Dienst und lösen das entsprechende Geschäftsereignis aus, um die Orchestrierung von Intelligent Order Management zu benachrichtigen. Diese Flows werden durch einen externen Dienst ausgelöst.

Im Folgenden sehen Sie eine Beispielstruktur zum Erstellen eines Power Automate-Flows vom Typ „Nachrichtenhandler”.

  1. Legen Sie einen Power Automate-Trigger fest. Dies ist normalerweise ein HTTP-Endpunkt, der ein Webhook-Trigger (empfohlen), ein Konnektortrigger oder ein Dataverse-Insert-Trigger ist. Der Trigger wird ausgelöst, wenn ein externer Dienst Daten an Intelligent Order Management senden muss. Screenshot des Triggers für das Ereignis, bei dem eine HTTP-Anforderung empfangen wird.

Das in Ihrem HTTP-Trigger zu verwendende JSON-Schema ist unten definiert.

{
    "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. Initialisieren Sie die Nachrichtenverarbeitung. Diese Aufgabe umfasst zwei Schritte.

    1. Initialisieren Sie das Ausführungsergebnis, das zum Verfolgen der Nachrichtenverarbeitung verwendet wird.

    2. Bestätigen Sie die Anbietermeldung in Intelligent Order Management, damit Sie den Verarbeitungsstatus verfolgen, wiederholen und anzeigen können. Das ist eine Power Automate-Aktion, die von Intelligent Order Management eingeführt wird. Diese Aktion heißt Anbietermeldungsanforderung in IOM bestätigen. Diese Aktion hast folgende erforderliche Parameter:

      1. PowerAutomateWorkflowId: WorkflowId in der Nachrichtenhandlerdefinition. Sie können diese, indem Sie eine Funktion mit workflow()['tags'] erstellen.

      2. PowerAutomateRunId: Der eindeutige Bezeichner für die Power Automate-Ausführung, der die Nachricht empfangen hat und der Pipeline erlaubt, die Verarbeitung zu wiederholen und die Ausführungsprotokolle zu verknüpfen. Sie können diese, indem Sie eine Funktion mit workflow()['run']?['name'] erstellen.

      3. ProviderMessageExternalRequestId: Ein Bezeichner für die gesendete Nachricht. Wenn kein Bezeichner vorhanden ist, kann eine GUID generiert werden. Dieser Bezeichner wird von der Pipeline verwendet, um zu verhindern, dass der Absender doppelte Nachrichten sendet. Der Bezeichner ist von der Quellnutzlast abhängig. Zum Beispiel: concat(triggerOutputs()?['body']?['type']?['name'], '_', triggerOutputs()?['body']?['id']).

Screenshot des Bildschirms „Anbieternachrichtenanforderung in IOM bestätigen“.

  1. Die zuvor definierte Anbietertransformation ruft die Eingabedaten ab und transformiert sie. Intelligent Order Management stellt einen sofort einsatzbereiten untergeordneten Flow namens IOM-Anbietertransformator bereit, der die Transformation ausführt. Fügen Sie die folgenden Details hinzu, um das Ereignis oder die Nachricht zu verarbeiten:

    1. Anbietername: Der Name des Anbieters, der mit dem Nachrichtenhandler verknüpft ist. Dieser Wert muss mit dem Namen Ihrer Anbietertransformation identisch sein.

    2. Quellobjektname: Der Wert des Quellensuchschlüssels für die auszuführende Transformation. Dieser Wert muss mit dem in Ihrer Anbietertransformation festgelegten Quellobjektnamen übereinstimmen.

    3. Zielobjektname: Der Wert des Zielsuchschlüssels für die auszuführende Transformation. Dieser Wert muss mit dem in Ihrer Anbietertransformation festgelegten Wert übereinstimmen.

    4. Nutzlast: Wird beim Transformieren einer JSON-Nutzlast bereitgestellt. Power Automate erfordert, dass die Parameter als serialisierte Zeichenfolge übergeben werden. Geben Sie eine Nutzlast oder eine Datensatzkennung an, jedoch nicht beides.

    5. Datensatzkennung: Wird bei der Transformation eines Dataverse-Datensatzes bereitgestellt. Geben Sie eine Nutzlast oder eine Datensatzkennung an, jedoch nicht beides.
      Screenshot für „Nachricht mit Power Query Online transformieren“.

  2. Sie können Daten in Dataverse durch Verwendung von HTTP-Anforderungen oder der Dataverse-Konnektoraktion Einfügen einfügen. Wenn Sie mehr als eine Einfügung durchführen und die Leistung verbessern möchten, packen Sie die Einfügungen in ein Changeset, sodass sich die Anforderungen in einer Buchungscharge befinden.
    Screenshot des Flows zum Einfügen von Meldungen.

  3. Wenn Sie möchten, dass Ihr Flow ein Geschäftsereignis auslöst, können Sie den untergeordneten FlowGeschäftsereignis auslösen verwenden. Fügen Sie die folgenden Details hinzu.

    1. BusinessEventName: Name des Ereignisses, das ausgelöst werden soll.

    2. EntityRecordId: Die ID des gerade erstellten und dem Ereignis zugeordneten Datensatzes.

  4. Aktualisieren Sie den Nachrichtenverarbeitungsstatus mithilfe der Aktion Status der Anbieternachrichtenanforderung aktualisieren, um das Ergebnis der Verarbeitungsausführung zu speichern. Fügen Sie die folgenden Details hinzu.

    1. ProviderMessageRequestExecutionId: Die Ausgabe-ID des Datensatzes, der erstellt wurde, um den Fortschritt der Nachrichtenverarbeitung zu verfolgen.

    2. IsProviderMessageRequestExecutionSuccess: Boolescher Wert, um anzugeben, ob die Verarbeitung erfolgreich war.

Nachrichten-Puller des Anbieters

Nachrichten-Puller des Anbieterssind Power Automate-Flows, die Nachrichten in einem festen regelmäßigen zeitlichen Abstand von einem externen Dienst abrufen.

Hinweis

Ein Nachrichtenhandler ist eine Voraussetzung für einen Nachrichten-Puller-Flow.

Im Folgenden sehen Sie eine Beispielstruktur zum Erstellen eines Power Automate-Flows vom Typ „Nachrichten-Puller”.

  1. Verwenden Sie einen Serienworkflow, um einen Trigger zu planen.

  2. Rufen Sie einen Prüfpunkt von Dataverse ab. Prüfpunkte verfolgen, welche Nachrichten erfolgreich vom externen Anbieter abgerufen wurden. Fügen Sie die folgenden Details hinzu.

    1. Aktionsname: Name für den Prüfpunkt.

    2. WorkflowId: Legen Sie die folgende Verfassenfunktion fest, um diese Informationen abzurufen: workflow()['tags']['xrmWorkflowId'].
      Screenshot von „Prüfpunkt abrufen“.

  3. Erstellen Sie eine HTTP-Post-Anforderung an einen externen Anbieter, um die Nachrichten abzurufen. Fügen Sie die folgenden Details hinzu.

    1. Methode: Setzen Sie dieses Feld auf POST.

    2. URL: Der Endpunkt des externen Anbieters.

    3. Text: Die JSON-Anforderung sollte die folgende Formel haben: if(empty(outputs('Get_Checkpoint')?['body/Checkpoint']), 0, int(outputs('Get_Checkpoint')?['body/Checkpoint'])).
      Screenshot für Pull-Nachrichten.

  4. Analysieren Sie die in Schritt 3 abgerufenen Nachrichten. Fügen Sie die folgenden Details hinzu.

    1. Inhalt: Der Text, der aus Schritt 3 abgerufen wurde.

    2. Schema: Die in Schritt 3 abgerufene Struktur des Texts.
      Screenshot für Parse-Nachrichten.

  5. Verarbeiten Sie Nachrichten, bis Sie alle Nachrichten aus Schritt 4 durchlaufen haben.

  6. Analysieren Sie jede Nachricht aus den vorherigen Schritten. Fügen Sie die folgenden Informationen hinzu.

    1. Inhalt: Aktuelles Element von Nachrichten verarbeiten.

    2. Schema: Eine einzelne Nachricht im JSON-Format.
      Screenshot für „Nachrichten verarbeiten” 2.

  7. Rufen Sie den zugehörigen Anbieternachrichtenhandler auf, den Sie in den Voraussetzungen eingerichtet haben. Fügen Sie die folgenden Informationen hinzu.

    1. Untergeordneter Flow: Wählen Sie Ihren Anbieternachrichtenhandler aus.

    2. Nachricht: Die in Schritt 6 analysierte Nachricht.
      Screenshot für „Nachrichten verarbeiten” 3.

  8. Speichern Sie den Prüfpunkt in Dataverse. Fügen Sie die folgenden Informationen hinzu.

    1. Prüfpunkt: Dies kann ein beliebiger Zeichenfolgenwert sein (max. 100). In diesem Beispiel ist dies die ID der zuletzt verarbeiteten Nachricht.

    2. WorkFlowId: Sie können diese ID durch Hinzufügen einer Verfassenfunktion abrufen, die auf workflow()['tags']['xrmWorkflowId'] festgelegt ist.
      Screenshot für „Nachrichten verarbeiten” 4.

Anbieteraktion

Anbieteraktionsflows werden vom Orchestrierungs-Designer aufgerufen. Diese Flows führen in der Regel Aufrufe von Intelligent Order Management an externe Dienste durch.

Der Hauptunterschied zwischen einem Anbieternachrichtenhandler und einer Anbieteraktion besteht darin, dass ein Nachrichtenhandler zwar den Orchestrierungs-Designer benachrichtigen kann, er jedoch nicht durch eine Aktivitätskachel im Orchestrierungs-Designer ausgelöst werden kann, während dies bei einer Anbieteraktion der Fall ist.

Im Folgenden sehen Sie eine Beispielstruktur für einen Power Automate-Anbieteraktionsflow.

  1. Beginnen Sie mit einem HTTP-Trigger. Die folgenden Informationen werden zur Runtime vom Orchestrierungsdienst übergeben. Für den Text wird das folgende JSON-Schema verwendet:
{
    "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. Initialisieren Sie die Aktionsverarbeitung.

    1. Initialisieren Sie das Ausführungsergebnis und alle anderen Verarbeitungsvariablen.

    2. Bestätigen Sie den Start der Aktionsausführung mit der Aktion Ausführung der Anbieteraktion starten in Dataverse. Dadurch kann die Pipeline den Verarbeitungsstatus in Intelligent Order Management verfolgen, wiederholen und anzeigen. Fügen Sie die folgenden Informationen hinzu.

      1. ProviderActionExecutionEventId: Dieser Wert wurde in Schritt 1 als Eingabeparameter an die Aktion übergeben.

      2. PowerAutomateRunID: Die einzigartige Ausführung der Power Automate-Aktion. Dadurch kann die Pipeline die Ausführungsprotokolle verknüpfen. Rufen Sie diese Informationen ab, indem Sie das Feld auf einen Power Automate-Ausdruck worflow()['run']?['name'] festlegen.

  2. Führen Sie die Aktion aus.

    1. Transformieren Sie bei Bedarf die Datensätze mit dem untergeordneten Flow Nachricht mit Power Query Online transformieren.

      1. Anbietername: Der Name des Anbieters, der mit der Aktion verknüpft ist. Der Name muss mit dem Namen Ihrer Anbieterdefinition identisch sein.

      2. Quellobjektname: Der Quellname für die auszuführende Transformation. Dieser Name muss dasselbe Quellobjekt wie in Ihrer Power Automate-Transformation sein.

      3. Zielobjektname: Der Wert des Zielsuchschlüssels für die auszuführende Transformation. Dieser Name muss mit dem in Ihrer Anbietertransformation festgelegten Wert übereinstimmen.

      4. Nutzlast: Wird beim Transformieren einer eingehenden JSON-Nutzlast bereitgestellt. Power Automate erfordert, dass die Parameter als serialisierte Zeichenfolge übergeben werden. Fügen Sie eine Nutzlast oder eine Datensatzkennung an, jedoch nicht beides.

      5. Datensatzkennung: Wird bei der Transformation eines ausgehenden Dataverse-Datensatzes bereitgestellt. Fügen Sie eine Nutzlast oder eine Datensatzkennung an, jedoch nicht beides.
        Screenshot für „Nachricht mit Power Query Online transformieren“.

    2. Führen Sie alle benutzerdefinierten Aktionen aus, die Sie definiert haben. Dies sind Aktionen, die auf dem Power Automate-Konnektor vorhanden sind, den Sie verwenden.

    3. Rufen Sie ein aktivitätsspezifisches Geschäftsereignis auf. Verwenden Sie den untergeordneten Flow Geschäftereignis auslösen. Fügen Sie die folgenden Informationen hinzu.

      1. BusinessEventName: Der Name des Ereignisses, das ausgelöst werden soll.

      2. EntityRecordId: Die ID des dem Ereignis zugeordneten Datensatzes.

  3. Schließen Sie die Aktionsausführung ab und speichern Sie die Ergebnisse. Die Ergebnisse werden vom Orchestrierungs-Designer verarbeitet. Fügen Sie die folgenden Informationen hinzu.

    1. ExecutionResult: Boolescher Wert, um anzugeben, ob die Verarbeitung erfolgreich war.

    2. ExecutionDetails: Optionale Protokolldetails für Test- und Debugging-Zwecke.

    3. ProviderActionExecutionEventId: Dieser Wert wurde als ein in Schritt 1 definierter Eingabeparameter an die Aktion übergeben.
      Screenshot von „Anbieteraktionsausführung abschließen“.

Untergeordneter Flow

Ein untergeordneter Flow ist ein Unterflow, auf den in anderen Power Automate-Flows verwiesen wird. Es ist hilfreich, einen untergeordneten Flow zu definieren, wenn Sie einige Schritte in mehreren Bereichen wiederholen. Für untergeordnete Flows gibt es weder eine spezielle Vorlage noch einen empfohlenen Prozess, da sie in erster Linie dazu gedacht sind, ähnliche Schritte zu konsolidieren.

Untergeordnete Anbieterflows können keine anderen untergeordneten Anbieterflows aufrufen.

Cloud-Flows erstellen

Wenn Sie wissen, welche Arten von Flows Sie erstellen möchten, können Sie Cloud-Flows erstellen. Gehen Sie hierzu folgendermaßen vor:

  1. Öffnen Sie die Standardlösung in Ihrer Power Apps-Umgebung.

Wichtig

Fügen Sie diese Lösungen Ihrer Anbieterlösung nicht hinzu.

  1. Wählen Sie Neu und dann Cloud-Flow aus.

  2. Richten Sie Ihren Power Automate-Flow ein. Verwenden Sie die Vorlagen im vorherigen Abschnitt als Referenz.

  3. Lesen Sie den folgenden Abschnitt, um Ihre Flows zu speichern.

Power Automate-Definition speichern

Nachdem Sie Ihre Flows erstellt haben, müssen Sie sie als Komponente Logische Definition Anbieterdefinition speichern. Dieser Komponententyp stellt Intelligent Order Management die Aktionen bereit, die während der Anbieteraktivierung bereitgestellt werden.

Sie müssen die folgenden Voraussetzungen erfüllen, bevor Sie Ihre Flows speichern können.

  • Um Ihre logische Power Automate-Definitionen zu speichern, müssen Sie OData-Anforderungen ausgeben. Dazu benötigen Sie ein Konto bei PostMan oder einem ähnlichen Dienst.

  • Sie müssen ein Zugriffstoken für Ihre Dataverse-Umgebung generieren, um die GET- und POST-Anforderungen auszugeben.

    • Richten Sie ein Azure-Konto mit einem aktiven Abonnement ein. Wenn Sie kein aktives Konto haben, müssen Sie ein Konto auf der Azure-Website einrichten.

    • PowerShell muss installiert sein. Weitere Informationen finden Sie unter Installieren von PowerShell.

    • Geben Sie den folgenden Befehl in PowerShell ein, um ein Zugriffstoken zu erhalten: az login --allow-no-subscriptions account get-access-token --resource=https://YourDataverseTenantURL.api.crm.dynamics.com/ --query=accessToken --output=tsv | Set-Clipboard.

Um Ihre Power Automate-Definition zu speichern, gehen Sie wie folgt vor.

  1. Finden Sie die Workflowkennung des Power Automate-Flow, den Sie speichern möchten. Führen Sie einen der folgenden Schritte aus.

    1. Finden Sie die Workflowkennung mit einer Power Automate-Aktion.

      1. Erstellen Sie eine Verfassenaktion mit dem Ausdruck workflow() am Ende Ihres Power Automate-Flows.
        Screenshot der Verfassenaktion.

      2. Führen Sie Power Automate aus.

      3. Die xrmWorkflowId-Eigenschaft aus den Ausführungsergebnissen enthält die Workflowkennung.
        Screenshot der Workflowkennung.

      4. Löschen Sie diese Aktion aus dem Flow, damit sie nicht erneut ausgeführt wird.

    2. Optional können Sie eine Get OData-Anforderung ausgeben.

      1. Wechseln Sie zu dem Flow, für den Sie die Workflowkennung speichern möchten. Finden Sie in der URL den eindeutigen Bezeichner. Dies ist die Kennung, die nach ../flows/ in der URL angezeigt wird.
        So finden Sie den eindeutigen Bezeichner.

      2. Geben Sie eine OData-Anforderung aus, um die Workflow-Metadaten abzurufen. Hier sehen Sie ein Beispiel einer GET-Anforderung.
        GET {Env url}/api/data/v9.1/workflows?$filter=workflowidunique eq '{Unique Workflow Id from the Power Automate U}'&$select=workflowid,workflowidunique

      3. Speichern Sie die zurückgegebene Workflowid-Eigenschaft.

  2. Finden Sie die Anbieterdefinitionskennung.

    1. Wählen Sie die Anbieterdefinition aus, in der Sie den Flow speichern möchten.

    2. Kopieren Sie die Anbieterdefinitionskennung aus der URL. Dies ist der Teil der URL ../id={example number}/.
      So finden Sie die Anbieterdefinitionskennung.

  3. Notieren Sie sich den Wert des Optionssatzes für den Power Automate-Typ, den Sie speichern.

    1. Untergeordneter Flow: 192350002

    2. Anbieteraktion: 192350001

    3. Nachrichtenhandler des Anbieters: 192350000

    4. Nachrichten-Puller des Anbieters: 192350003

  4. Geben Sie eine POST-Anforderung aus, um Ihre Power Automate-Definition zu speichern. Hier sehen Sie ein Beispiel einer Anforderung.

    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. Stellen Sie sicher, dass Ihre „Logische Definition Anbieterdefinition“-Komponente hinzugefügt wurde. Gehen Sie hierzu folgendermaßen vor:

    1. Wechseln Sie zu Ihrer Anbieterlösung.

    2. Überprüfen Sie, ob die „Logische Definition Anbieterdefinition“, die Sie erstellt haben, hinzugefügt wurde. Wenn sie nicht hinzugefügt wurde, wählen Sie Vorhandenes Element hinzufügen aus, und fügen Sie dann die von Ihnen erstellte Komponente hinzu.

Systemverbindungsreferenzen speichern

Wenn Ihr Anbieter benutzerdefinierte Power Automate-Connectors verwendet, müssen Sie die folgenden Schritte ausführen, um die Verbindungsreferenzen in Ihrer Power Automate-Lösung zu speichern.

  1. Geben Sie eine GET-Anforderung aus, um Ihre Verbindungsreferenz-ID abzurufen. Beispiel:
GET {Env url}/api/data/v9.2/connectionreferences

Wenn Sie weiter filtern möchten, können Sie nach dem Verbindungsreferenznamen filtern. Beispiel:

    {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. Überprüfen Sie, ob die richtige Verbindungsreferenz-ID abgerufen wurde, indem Sie in Ihren Power Automate Client-Daten suchen.

    1. Gehen Sie zu der „Logische Definition Anbieterdefinition“-Komponente, die Sie vorher gespeichert haben.

    2. Überprüfen Sie die Client-Daten, um sicherzustellen, dass connectionReferenceLogicalName angezeigt wird.

  2. Finden Sie Ihre Anbieterdefinitionskennung. Dies ist derselbe Wert, den Sie in Schritt 2 verwendet haben, um logische Power Automate-Definitionen zu speichern.

  3. Geben Sie eine POST-Anforderung aus, um Ihre Verbindungsreferenz-ID zu speichern. Beispiel:

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

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

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

}
  1. Stellen Sie sicher, dass Ihre „Logische Definition Anbieterdefinition“-Komponente hinzugefügt wurde.

    1. Wechseln Sie zu Ihrer Anbieterlösung.

    2. Überprüfen Sie, ob die Referenzkomponente „Logische Definition Anbieterdefinition“, die Sie erstellt haben, hinzugefügt wurde. Wenn sie nicht hinzugefügt wurde, wählen Sie Vorhandenes Element hinzufügen aus, und fügen Sie dann die soeben erstellte Komponente hinzu.

Ihre Anbieter freigeben

Wenn Sie Ihre Anbieterdefinition in einer anderen Umgebung verwenden oder Ihre Lösung freigeben möchten, können Sie Ihre Anbieterlösung exportieren. Weitere Informationen finden Sie unter Lösungen exportieren.