Schemas für Flatfiles in Azure Logic Apps codieren, decodieren oder generieren

Gilt für: Azure Logic Apps (Verbrauch + Standard)

Für Business-to-Business-Integrationsworkflows (B2B) müssen Sie häufig Daten zwischen XML- und flachen Dateiformaten konvertieren, bevor Sie diese Daten mit Handelspartnern austauschen können.

In diesem Leitfaden wird gezeigt, wie Sie integrierte Connectoraktionen für flat File verwenden, um XML zu codieren oder zu decodieren und BizTalk-kompatible Flache Dateischemas aus Beispieldaten zu generieren.

Technische Referenz für das Verbindungselement

Der Konnektor für flache Dateien umfasst die folgenden Codierungs-, Decodierungs- und Schemagenerierungsaktionen:

Action Consumption Norm
Flat File Encoding Yes Yes
Decodieren von Flachdateien Yes Yes
Generierung von Flachdateischemas No Yes
Logik-App Umwelt
Consumption Azure Logic Apps mit mehreren Mandanten
Norm Azure Logic Apps mit Einzelmandant, App Service-Umgebung v3 (nur Windows-Pläne) und hybride Bereitstellung

Weitere Informationen finden Sie unter integrierte Konnektoren für Integrationskonto.

Voraussetzungen

  • Ein Azure-Konto und ein Azure-Abonnement. Erhalten Sie ein kostenloses Azure-Konto.

  • Die Logik-App-Ressource und der Workflow, in der Sie die Flat File-Vorgänge verwenden möchten.

    Flat File-Vorgänge enthalten keine Trigger. Ihr Workflow kann mit jedem Trigger beginnen oder eine Aktion verwenden, um die XML-Quelldatei einzubringen.

    Die Beispiele in diesem Artikel verwenden den Anforderungstrigger namens "Wenn eine HTTP-Anforderung empfangen wird".

    Weitere Informationen finden Sie unter:

  • Eine Ressource für das Integrationskonto zum Definieren und Speichern von Artefakten für Unternehmensintegrationen und B2B-Workflows.

    • Sowohl Ihre Integrationskonto- als auch Ihre Logik-App-Ressource müssen im selben Azure-Abonnement und in derselben Azure-Region vorliegen.

    • Bevor Sie mit der Arbeit mit Flat File-Vorgängen beginnen, müssen Sie Ihre Verbrauchslogik-App verknüpfen oder Ihre Standardlogik-App mit dem Integrationskonto für das Arbeiten mit Artefakten wie Handelspartnern und Vereinbarungen verknüpfen . Sie können ein Integrationskonto mit mehreren Ressourcen der Verbrauchs- oder Standardlogik-App verknüpfen, um dieselben Artefakte gemeinsam nutzen zu können.

    Tipp

    Wenn Sie nicht mit B2B-Artefakten wie Handelspartnern und Vereinbarungen in Standardworkflows arbeiten, benötigen Sie möglicherweise kein Integrationskonto. Stattdessen können Sie Schemas direkt in Ihre Standardlogik-App-Ressource hochladen. In beiden Fällen können Sie dasselbe Schema für alle untergeordneten Workflows in derselben Logik-App-Ressource verwenden. Um dasselbe Schema für mehrere Logik-App-Ressourcen zu verwenden, müssen Sie ein Integrationskonto verwenden und verknüpfen.

  • Ein flaches Dateischema, das angibt, wie XML-Inhalte codiert oder decodiert werden.

    In Standardworkflows können Sie mit Flat File-Vorgängen ein Schema aus einem verknüpften Integrationskonto auswählen oder das Sie zuvor in Ihre Logik-App hochgeladen haben, aber nicht beides.

    Weitere Informationen finden Sie unter Hinzufügen von Schemas zu Integrationskonten.

  • Installieren oder verwenden Sie ein Tool, das HTTP-Anforderungen senden kann, um Ihre Lösung zu testen, z. B.:

    Vorsicht

    Für Szenarien, in denen Sie vertrauliche Daten haben, z. B. Anmeldeinformationen, Geheime Schlüssel, Zugriffstoken, API-Schlüssel und andere ähnliche Informationen, stellen Sie sicher, dass Sie ein Tool verwenden, das Ihre Daten mit den erforderlichen Sicherheitsfeatures schützt. Das Tool sollte offline oder lokal arbeiten und muss sich nicht bei einem Onlinekonto anmelden oder Daten mit der Cloud synchronisieren. Wenn Sie ein Tool mit diesen Merkmalen verwenden, verringern Sie das Risiko, vertrauliche Daten für die Öffentlichkeit verfügbar zu machen.

Einschränkungen

  • XML-Inhalte, die Sie decodieren möchten, müssen im UTF-8-Format codiert werden.

  • Vergewissern Sie sich in Ihrem Flatfile-Schema, dass in den enthaltenen XML-Gruppen die max count-Eigenschaft nicht zu häufig auf einen Wert größer als 1 festgelegt ist. Vermeiden Sie die Verschachtelung einer XML-Gruppe mit einem max count Eigenschaftswert größer als 1 innerhalb einer anderen XML-Gruppe mit einer max count Eigenschaft größer als 1.

  • Wenn Azure Logic Apps das flache Dateischema analysiert und wenn das Schema die Auswahl des nächsten Fragments zulässt, generiert Azure Logic Apps ein Symbol und eine Vorhersage für dieses Fragment. Wenn das Schema zu viele Konstrukte zulässt, z. B. mehr als 100.000, wird die Schemaerweiterung sehr groß, was zu viele Ressourcen und zu viel Zeit verbraucht.

Schema hochladen

Nachdem Sie Ihr Schema erstellt haben, laden Sie das Schema basierend auf Ihrem Workflow hoch:

Hinzufügen einer Codierungsaktion für flache Dateien

  1. Öffnen Sie Ihre Logik-App-Ressource im Azure-Portal.

  2. Öffnen Sie im Designer Ihren Workflow.

    Wenn Ihr Workflow keinen Trigger und keine anderen Aktionen enthält, die Ihr Workflow benötigt, fügen Sie diese Vorgänge zuerst hinzu.

    In diesem Beispiel wird der Trigger Request namens „Wenn eine HTTP-Anforderung empfangen wird“ verwendet. Informationen zum Hinzufügen eines Triggers finden Sie unter Hinzufügen eines Triggers zum Starten des Workflows.

  3. Führen Sie im Designer die folgenden allgemeinen Schritte aus, um die integrierte Aktion namens "Flat File Encoding" hinzuzufügen.

    Der Aktionsinformationsbereich wird geöffnet, wobei die Registerkarte "Parameter " ausgewählt ist.

  4. Geben Sie im Inhaltsparameter der Aktion den zu codierenden XML-Inhalt an, der entweder vom Trigger oder von einer vorherigen Aktion ausgegeben wird, indem Sie die folgenden Schritte ausführen:

    1. Wählen Sie im Feld "Inhalt " aus, und wählen Sie dann das Blitzsymbol aus, um die dynamische Inhaltsliste zu öffnen.

    2. Wählen Sie in der Liste dynamischer Inhalte den zu codierenden XML-Inhalt aus.

    Das folgende Beispiel zeigt die geöffnete dynamische Inhaltsliste, die Ausgabe des Triggers "Wenn eine HTTP-Anforderung empfangen wird " und den ausgewählten Textkörperinhalt aus der Triggerausgabe.

    Screenshot des Azure-Portals, des Workflow-Designers, der Aktion

    Hinweis

    Wenn Body nicht in der Liste der dynamischen Inhalte angezeigt wird, wählen Sie neben dem Abschnitt Wenn eine HTTP-Anforderung empfangen wurde die Option Mehr anzeigen aus. Sie können den zu codierenden Inhalt auch direkt in das Feld Inhalt eingeben.

  5. Wählen Sie in der Liste Schemaname Ihr Schema aus.

    Screenshot zeigt den Designer und die geöffnete Schemanamenliste mit ausgewähltem Schema für die Codierung.

    Hinweis

    Wenn die Schemaliste leer ist, kann die Ursache sein:

    • Die Logik-App-Ressource ist nicht mit einem Integrationskonto verknüpft.
    • Das verknüpfte Integrationskonto enthält keine Schemadateien.
    • Die Logik-App-Ressource enthält keine Schemadateien. Dieser Grund gilt nur für Standardlogik-Apps.
  6. Wenn Sie der Aktion weitere optionale Parameter hinzufügen möchten, wählen Sie diese Parameter aus der Liste "Erweiterte Parameter " aus.

    Parameter Wert BESCHREIBUNG
    Modus der Generierung leerer Knoten ForcedDisabled oder HonorSchemaNodeProperty oder ForcedEnabled Der Modus, der zur Generierung leerer Knoten bei der Flatfile-Codierung verwendet werden soll.

    Für BizTalk verfügt das Flatfile-Schema über eine Eigenschaft, die die Generierung leerer Knoten steuert. Sie können das Verhalten der Eigenschaft zur Generierung leerer Knoten für Ihr Flatfile-Schema verfolgen. Alternativ können Sie diese Einstellung verwenden, damit Azure Logic Apps leere Knoten generieren oder weglassen. Weitere Informationen finden Sie unter Tags für leere Elemente.
    XML-Normalisierung Ja oder Nein Die Einstellung zum Aktivieren oder Deaktivieren der XML-Normalisierung bei der Flatfile-Codierung. Weitere Informationen finden Sie unter XmlTextReader.Normalization.
  7. Speichern Sie den Workflow. Wählen Sie auf der Symbolleiste des Designers Speichern aus.

Hinzufügen einer Flatfile-Decodierungsaktion

  1. Öffnen Sie Ihre Logik-App-Ressource im Azure-Portal.

  2. Öffnen Sie im Designer Ihren Workflow.

    Wenn Ihr Workflow keinen Trigger und keine anderen Aktionen enthält, die Ihr Workflow benötigt, fügen Sie diese Vorgänge zuerst hinzu.

    In diesem Beispiel wird der Trigger Request namens „Wenn eine HTTP-Anforderung empfangen wird“ verwendet. Informationen zum Hinzufügen eines Triggers finden Sie unter Hinzufügen eines Triggers zum Starten des Workflows.

  3. Führen Sie im Designer die folgenden allgemeinen Schritte aus, um die integrierte Aktion namens "Flat File Decoding" hinzuzufügen.

  4. Geben Sie im Inhaltsparameter der Aktion den XML-Inhalt an, der decodiert werden soll, entweder als Ausgabe des Triggers oder aus einer vorherigen Aktion, indem Sie die folgenden Schritte ausführen:

    1. Wählen Sie im Feld "Inhalt " aus, und wählen Sie dann das Blitzsymbol aus, um die dynamische Inhaltsliste zu öffnen.

    2. Wählen Sie in der Liste dynamischer Inhalte den XML-Inhalt aus, der decodiert werden soll.

    Das folgende Beispiel zeigt die geöffnete dynamische Inhaltsliste, die Ausgabe des Triggers "Wenn eine HTTP-Anforderung empfangen wird " und den ausgewählten Textkörperinhalt aus der Triggerausgabe.

    Screenshot des Azure-Portals, des Workflow-Designers, der Aktion

    Hinweis

    Wenn Body nicht in der Liste der dynamischen Inhalte angezeigt wird, wählen Sie Mehr anzeigen neben der Abschnittsbezeichnung Wenn eine HTTP-Anforderung empfangen wird aus. Sie können den zu decodierenden Inhalt auch direkt in das Feld Inhalt eingeben.

  5. Wählen Sie in der Liste Schemaname Ihr Schema aus.

    Screenshot zeigt den Designer und die geöffnete Schemanamenliste mit ausgewähltem Schema für die Decodierung.

    Hinweis

    Wenn die Schemaliste leer ist, kann die Ursache sein:

    • Die Logik-App-Ressource ist nicht mit einem Integrationskonto verknüpft.
    • Das verknüpfte Integrationskonto enthält keine Schemadateien.
    • Die Logik-App-Ressource enthält keine Schemadateien. Dieser Grund gilt nur für Standardlogik-Apps.
  6. Speichern Sie den Workflow. Wählen Sie auf der Symbolleiste des Designers Speichern aus.

Das Einrichten der Aktion „Flatfile decodieren“ ist damit abgeschlossen. In einer echten App empfiehlt es sich ggf., die decodierten Daten in einer branchenspezifischen App wie Salesforce zu speichern. Sie können die decodierten Daten auch an einen Handelspartner senden. Um die Ausgabe der Decodieraktion an Salesforce oder Ihren Handelspartner zu senden, verwenden Sie die anderen in Azure Logic Apps verfügbaren Connectors:

Aktion zum Generieren eines Schemas für eine Textdatei hinzufügen

Die Dateischemagenerierungsaktion generiert zur Laufzeit ein XSD-Flatfile-Schema aus Beispielinhalten für flache Dateien, die Sie als Eingabe bereitstellen. Das generierte Schema ist mit Anmerkungen für BizTalk-Flachdateien kompatibel, z. B. b:schemaInfo, b:recordInfo und b:fieldInfo.

  1. Öffnen Sie Ihre Logik-App-Ressource im Azure-Portal.

  2. Öffnen Sie im Designer Ihren Workflow.

    Wenn Ihr Workflow keinen Trigger und keine anderen Aktionen enthält, die Ihr Workflow benötigt, fügen Sie diese Vorgänge zuerst hinzu.

    In diesem Beispiel wird der Trigger Request namens „Wenn eine HTTP-Anforderung empfangen wird“ verwendet. Informationen zum Hinzufügen eines Triggers finden Sie unter Hinzufügen eines Triggers zum Starten des Workflows.

  3. Führen Sie im Designer die folgenden allgemeinen Schritte aus, um die integrierte Aktion namens "Flat File Schema Generation" hinzuzufügen.

  4. Geben Sie im Inhaltsparameter der Aktion den Beispielinhalt für flache Dateien an.

    Sie können Inhalte aus der Triggerausgabe oder einer vorherigen Aktion verwenden:

    1. Wählen Sie im Feld Inhalt das Blitzsymbol aus, um die dynamische Inhaltsliste zu öffnen.

    2. Wählen Sie in der Liste dynamischer Inhalte den Beispielinhalt für flache Dateien aus.

  5. Legen Sie den Parameter „Datensatzstruktur“ auf „Getrennt“ oder „Positionsbasiert“ fest.

    Der Designer verwendet dynamische Parameter (getFlatFileSchemaGenerationParameters), um den richtigen Parametersatz basierend auf dem ausgewählten recordStructure Wert anzuzeigen.

    Das folgende Beispiel zeigt die Konfigurationsparameter für die trennzeichengetrennte Datensatzstruktur:

    Screenshot des Azure-Portals, des Workflow-Designers, der Aktion zur Generierung von Flat File-Schemas und des Inhaltsparameters mit getrennter Datensatzstruktur.

    Das folgende Beispiel zeigt die Konfigurationsparameter für die Positional-Datensatzstruktur:

    Der Screenshot zeigt das Azure-Portal, den Workflow-Designer, die Aktion zur Generierung eines Flatfileschemas und den Parameter Inhalt mit Positional-Datensatzstruktur.

  6. Legen Sie für die ausgewählte Datensatzstruktur die erforderlichen und optionalen Parameter fest.

    Allgemeine Parameter (durch Trennzeichen getrennt und positionsbasiert)

    Parameter Typ Erforderlich BESCHREIBUNG
    content Any Yes Beispieldateninhalt für flache Dateien (Zeichenfolge oder Binärdatei).
    recordStructure String Yes Entweder Delimited oder Positional.
    hasHeader Boolean Yes Wenn true, wird die erste Datensatzzeile als Kopfzeile behandelt und diese Werte werden als generierte Feldnamen verwendet.
    recordDelimiter String No Datensatz-(Zeilen-)Trennzeichen. Die Analyse verwendet diesen Wert buchstäblich (keine Hexadecodierung). Verwenden Sie tatsächliche Zeichen, wie \r\n oder \n. Wenn Sie die Standardzeilenaufteilung verwenden möchten, lassen Sie diesen Wert aus. Die generierte XSD kann einen Hexwert (0x0D0A) in Schemaanmerkungen ausgeben.
    recordDelimiterOrder String No Platzierung von Trennzeichen: Infix (Standard), Prefixoder Postfix.
    rootElementName String No Stammelementname für die XSD. Standardwert: Root.
    targetNamespace String No Zielnamespace für das Schema. Standardwert: http://schemas.microsoft.com/FlatFile/{RootElementName}
    recordName String No Name für das sich wiederholende untergeordnete Datensatzelement. Standardwert: {RootElementName}_Record

    Durch Trennzeichen getrennte Parameter

    Parameter Typ Erforderlich BESCHREIBUNG
    fieldDelimiter String Yes Feldtrennzeichen wie Komma, Semikolon oder Tabulator: Geben Sie die tatsächlichen Zeichen an, z. B. ,, ; oder \t. Bei der Analyse werden literale Zeichenfolgenvergleiche verwendet (keine Hexadecodierung).
    fieldDelimiterOrder String Yes Platzierung von Trennzeichen: Infix (Standard), Prefixoder Postfix.
    escapeCharacter String No Escapezeichen für eingebettete Trennzeichen in Feldwerten. Geben Sie das tatsächliche Zeichen an, zum Beispiel \ oder ". Die Analyse verwendet literalen Abgleich (keine Hexadecodierung).

    Positionsspezifische Parameter

    Parameter Typ Erforderlich BESCHREIBUNG
    countPositionsByByte Boolean Yes Misst die Feldlängen in Bytes (true) oder Zeichen (false). Relevant für Multibyte-Codierungen.
    fieldPositions Array Yes Array von Feldpositionsobjekten, jeweils mit length und justification.
    fieldPositions[].length Integer Yes Feste Breite des Felds.
    fieldPositions[].justification String Yes Steuert die Ausrichtung des Innenabstands. Geben Sie den Wert Left oder Right manuell ein (Groß-/Kleinschreibung wird nicht beachtet).

    Hinweis: Der aktuelle Designer stellt keine Liste bereit, in der Sie einen Wert auswählen können.
  7. Bevor Sie den Workflow ausführen, überprüfen Sie das Verhalten des Trennzeichens und des Escapezeichens:

    Verhalten des Datensatztrennzeichens

    Aspect Behavior
    Parsen (Aufteilen von Zeilen) options.RecordDelimiter (Rohwert des Benutzers) wird direkt an String.Split() übergeben. Keine Hexadecodierung.
    XSD-Ausgabe GetRecordDelimiterForSchema() konvertiert wie folgt:

    - Wenn mit 0x-Präfix versehen, durchlassen.
    - Wenn leer, Standardeinstellung auf 0x0D0A.
    - Konvertieren Sie andernfalls Literalzeichen in Hex-Bytes.
    Hexadezimaleingabe Nein zum Parsen. Wenn Sie angeben 0x0D0A, versucht die Analyse, den Literaltext 0x0D0Aaufzuteilen.
    Was zu bieten ist Verwenden Sie die literalen Zeichen: \r\n, \n, oder lassen Sie sie vollständig weg; standardmäßig wird dann bei \r\n/\n/\r getrennt.

    Feldtrennzeichenverhalten

    Aspect Behavior
    Parsen (Felder aufteilen) options.FieldDelimiter wird direkt an SplitDelimitedRecord() als wörtlicher Zeichenfolgenvergleich übergeben. Keine Hexadecodierung.
    XSD-Ausgabe Wenn der Wert mit 0x beginnt, gibt child_delimiter_type="hex" aus; andernfalls "char".
    Hexadezimaleingabe Nein zum Parsing. 0x09 entspricht dem wörtlichen Text 0x09, nicht einem Tabstopp.
    Was zu bieten ist Verwenden Sie tatsächliche Zeichen: ,, , ;, \t, |usw.

    Verhalten von Escape-Zeichen

    Aspect Behavior
    Analysieren (Escapen) options.EscapeCharacter wird buchstäblich verglichen. Bei einer Übereinstimmung wird das nächste Zeichen unverändert verarbeitet. Keine Hexadecodierung.
    XSD-Ausgabe Wenn der Wert mit 0x beginnt, gibt er escape_char_type="hex" aus; andernfalls "char".
    Hexadezimaleingabe Nein zum Parsen. Gleiches Verhalten bei exakter Übereinstimmung.
    Was zu bieten ist Verwenden Sie das tatsächliche Zeichen, z. B \ . oder ".
  8. Speichern Sie den Workflow. Wählen Sie auf der Symbolleiste des Designers Speichern aus.

  9. Um die generierte Schemaausgabe zum Decodieren oder Codieren von Aktionen zu verwenden, speichern Sie diese Ausgabe manuell als .xsd Datei.

  10. Laden Sie die .xsd Datei in Ihr Integrationskonto hoch. Oder laden Sie die Datei für Standardworkflows in den Ordner " Artefakte" der Logik-App hoch. Sie können auch die REST-API verwenden, um das Schemaartefakt hochzuladen.

    Das generierte Schema wird im Textkörper der Aktion als Zeichenfolge zurückgegeben:

    @body('Flat_File_Schema_Generation')
    
  11. Verwenden Sie optional die folgenden Definitionsbeispiele:

    Beispiel mit Trennzeichen

    {
       "Flat_File_Schema_Generation": {
          "type": "FlatFileSchemaGeneration",
          "runAfter": {},
          "inputs": {
             "content": "@triggerBody()",
             "recordStructure": "Delimited",
             "fieldDelimiter": ";",
             "fieldDelimiterOrder": "Infix",
             "recordDelimiter": "\\r\\n",
             "hasHeader": true,
             "rootElementName": "MerchantOrders",
             "targetNamespace": "http://schemas.contoso.com/FlatFile/MerchantOrders",
             "recordName": "MerchantOrder",
             "escapeCharacter": "\\"
          }
       }
    }
    

    Positionsbeispiel

    {
       "Flat_File_Schema_Generation": {
          "type": "FlatFileSchemaGeneration",
          "runAfter": {},
          "inputs": {
             "content": "@triggerBody()",
             "recordStructure": "Positional",
             "fieldPositions": [
                { "length": 6, "justification": "Left" },
                { "length": 5, "justification": "Left" },
                { "length": 3, "justification": "Left" }
             ],
             "countPositionsByByte": false,
             "hasHeader": false,
             "rootElementName": "Ledger",
             "targetNamespace": "http://schemas.contoso.com/FlatFile/Ledger"
          }
       }
    }
    

    Übergeben Sie das generierte Schema an die nächste Aktion:

    {
       "Next_Action": {
          "inputs": {
             "schema": "@body('Flat_File_Schema_Generation')"
          },
          "runAfter": {
             "Flat_File_Schema_Generation": [ "Succeeded" ]
          }
       }
    }
    
  12. Überprüfen Sie die Ausgabe, die Ableitungsregeln und die bekannten Probleme:

    Ausgabe:

    Eigentum Typ BESCHREIBUNG
    body String Generiertes BizTalk-kompatibles XSD-Schema als XML-Zeichenfolge.

    Generierter XSD-Inhalt auf hoher Ebene:

    • b:schemaInfo Anmerkung mit standard="Flat File", root_reference, und codepage="65001" (UTF-8)
    • b:recordInfo Anmerkungen pro Datensatz mit structure, child_delimiter, child_delimiter_type, child_order und optional escape_char und escape_char_type
    • b:fieldInfoAnmerkungen pro Feld mit justification und, für positionale Schemata, pos_offset und pos_length
    • Ableitung des Datentyps aus Beispieldaten: xs:string, , xs:integer, xs:decimal, xs:boolean, xs:datexs:dateTime

    Ableitung des Datentyps vom ersten nicht leeren Datensatz:

    Beispielwert Abgeleiteter XSD-Typ
    true oder false xs:boolean
    12345 xs:integer
    19.99 xs:decimal
    2025-01-15 xs:date
    2025-01-15T10:30:00 xs:dateTime
    Ein beliebiger anderer Wert. xs:string

    Reihenfolge der untergeordneten Elemente (Trennzeichenplatzierung):

    Bestellung Bedeutung Beispiel (;)
    Infix Trennzeichen zwischen Feldern A;B;C
    Prefix Trennzeichen vor jedem Feld ;A;B;C
    Postfix Trennzeichen nach jedem Feld A;B;C;

    Verarbeitung von Kopfzeilen:

    • Wenn hasHeader auf true gesetzt ist, wird die erste Zeile als Feldnamen und nicht als Daten interpretiert.
    • Headerwerte werden auf gültige XML-Elementnamen sanitiert. Sonderzeichen werden _, und führende Ziffern erhalten ein _ Präfix.
    • Wenn nur eine Kopfzeile und keine Datensätze vorhanden sind, werden Felder standardmäßig auf xs:string gesetzt.
    • Wenn ein Kopfzeilenfeld leer ist, fällt der generierte Feldname auf Field{N}.
    • Wenn hasHeader auf false gesetzt ist, werden Felder automatisch als Field1, Field2, Field3 usw. benannt.

Einschränkungen und bekannte Probleme

Einschränkung BESCHREIBUNG
Typinferenz verwendet einen einzigen Datensatz. Der erste nicht leere Datensatz bestimmt Spaltentypen.
Nur ein einzelner Datensatztyp Die Aktion generiert eine wiederholte Datensatzstruktur und unterstützt keine heterogenen Datensatzlayouts.
Keine geschachtelten oder hierarchischen Datensätze Das generierte Schema ist flach, d. h. Sie haben ein Stammelement mit einem wiederholten untergeordneten Datensatz und Feldern.
Positionsgrenzen werden nicht automatisch erkannt. Sie müssen die exakten Feldlängen in fieldPositions angeben.
Nur die UTF-8-Codepage Generiert Schemasätze codepage="65001" und bietet keine Auswahl der Codierung an.
Das Verhalten von Escape-Zeichen wird wörtlich interpretiert. Die Escape-Behandlung entspricht dem Literalwert und überspringt nur das nächste Zeichen.
recordName Standard Wenn nichts angegeben wird, wird standardmäßig {RootElementName}_Record verwendet.
Designer-Begründungseingabe fieldPositions[].justification unterstützt nur Left und Right.
Issue Resolution
Falsche Feldanzahl Stellen Sie sicher, dass fieldDelimiterOrder Ihrem Datenformat (Infix, Prefix, Postfix) entspricht.
Hexadexwerte sind nur ausgabegeschützt. Obwohl generierte XSDs Trennzeichen als Hexwerte anzeigen können (z. B. 0x0D0A) und mit 0x präfixierte Werte in Anmerkungen durchreichen, dekodiert das Parsen keine hexadezimalen Eingaben. Geben Sie für das Parsing immer die tatsächlichen Trennzeichen (\r\n, \n, \t, ,, ;) an.
Header-Feldnamen wirken unerwartet Headerwerte werden auf gültige XML-Namen sanitiert. 1st Qty wird beispielsweise zu _1st_Qty.
Verhalten des Datensatztrennzeichens Wenn recordDelimiter nicht angegeben wird, teilt sich die Analyse auf tatsächlichen Zeilenumbruchzeichen (\r\n, \n, \r). In generierten XSD-Annotationen ist das Datensatztrennzeichen standardmäßig auf 0x0D0A gesetzt.

Probleme beheben

Fehler Ursache Resolution
The flat file sample data content is required. content ist NULL oder leer. Stellen Sie sicher, dass der Auslöser oder die vorangehende Aktion nicht leere Flache Dateiinhalte bereitstellt.
The schema generation options are required. Interner Fehler: Options-Objekt ist NULL. Stellen Sie sicher, dass die Workflowdefinition gültige Eingaben enthält.
Failed to generate flat file schema: '{details}'. Unerwarteter Laufzeitfehler, z. B. codieren oder falsch formatierte Daten. Überprüfen Sie die Details oder die innere Fehlermeldung auf die Ursache.
The field delimiter is required for delimited record structure. recordStructure ist Delimited, jedoch ist fieldDelimiter nicht vorhanden oder leer. Geben Sie fieldDelimiter an, z. B. ein Komma, Semikolon oder einen Tabulator. Geben Sie keinen Hexadezimaltext wie 0x09 an; verwenden Sie tatsächliche Zeichen wie \t.
The field positions array is required for positional record structure. recordStructure ist Positional, jedoch ist fieldPositions nicht vorhanden oder leer. Stellen Sie für jedes Feld fieldPositions, length und justification bereit.
The flat file sample data contains no data records. Es sind keine nichtleeren Datenzeilen vorhanden (oder nur die Kopfzeile, wenn hasHeader=true). Stellen Sie mindestens einen nicht leeren Datensatz im Beispielinhalt bereit.
Positional field '{N}' exceeds the record length. Record length: '{len}', position: '{pos}', field length: '{fieldLen}'. Die Summe der Feldlängen überschreitet die Datensatzlänge. Passen Sie die fieldPositions-Längen an oder prüfen Sie, ob countPositionsByByte geändert werden sollte.

Testen des Workflows

Führen Sie die folgenden Schritte aus, um Ihren Workflow auszulösen:

  1. Suchen Sie im Request-Trigger die HTTP POST-URL und kopieren Sie die URL.

  2. Öffnen Sie Ihr HTTP-Anforderungstool, und verwenden Sie dessen Anweisungen, um eine HTTP-Anforderung an die kopierte URL zu senden, einschließlich der Methode, die der Trigger Anforderung erwartet.

    Das folgende Beispiel verwendet die POST-Methode mit der URL.

  3. Fügen Sie den XML-Inhalt, den Sie kodieren oder dekodieren möchten, in den Anfragetext ein.

  4. Nachdem der Workflow abgeschlossen ist, wechseln Sie zum Ausführungsverlauf des Workflows, und überprüfen Sie die Eingaben und Ausgaben der Flat File-Aktion .