Laufzeitfehler bei der Extraktion von Variablen beheben

Sie lesen gerade die Dokumentation zu Apigee und Apigee Hybrid.
Apigee Edge-Dokumentation aufrufen.

SourceMessageNotAvailable

Fehlercode

steps.extractvariables.SourceMessageNotAvailable

Fehlerantworttext

{
  "fault": {
      "faultstring": "[variable_name] message is not available for ExtractVariable: [policy_name]",
      "detail": {
          "errorcode": "steps.extractvariables.SourceMessageNotAvailable"
      }
  }
}

Ursache

Dieser Fehler tritt auf, wenn die Variable message, die im <Source>-Element der Richtlinie zum Extrahieren von Variablen angegeben ist, entweder

  • außerhalb des Gültigkeitsbereichs liegt (nicht in dem spezifischen Ablauf verfügbar ist, in dem die Richtlinie ausgeführt wird) oder
  • nicht aufgelöst werden kann (nicht definiert ist).

Der Fehler tritt beispielsweise auf, wenn die Richtlinie zum Extrahieren von Variablen im Anfrageablauf ausgeführt wird, für das <Source>-Element aber die Variable response oder error festgelegt ist, die im Anfrageablauf nicht vorhanden ist.

Diagnose

  1. Ermitteln Sie die Richtlinie zum Extrahieren von Variablen, in der der Fehler aufgetreten ist, sowie den Namen der nicht verfügbaren Variablen. Sie finden beide Elemente im Element faultstring der Fehlerantwort. Im folgenden Fehlerstring lautet der Richtlinienname beispielsweise ExtractVariables-1 und die Variable response:

    "faultstring": "response message is not available for ExtractVariable: ExtractVariables-1"

  2. Prüfen Sie in der XML-Datei mit der fehlgeschlagenen Richtlinie zum Extrahieren von Variablen, ob der Name der Variablen, die im Element festgelegt ist, mit dem im Fehlerstring angegebenen Variablennamen übereinstimmt (siehe Schritt 1 oben). Die folgende Richtlinie zum Extrahieren von Variablen legt beispielsweise eine Variable mit dem Namen response in dem Element fest, die dem Inhalt des Fehlerstrings entspricht:

    <ExtractVariables name="ExtractVariables-1">
        <Source>response</Source>
        <URIPath>
            <Pattern ignoreCase="true">/a/{pathSeg}</Pattern>
        </URIPath>
        <VariablePrefix>urirequest</VariablePrefix>
    </ExtractVariables>
    
  3. Ermitteln Sie, ob die im <Source>-Element verwendete Variable definiert und in dem Ablauf verfügbar ist, in dem die Richtlinie zum Extrahieren von Variablen ausgeführt wird.

  4. Wenn die Variable entweder:

    • außerhalb des Gültigkeitsbereichs liegt (nicht in dem spezifischen Ablauf verfügbar ist, in dem die Richtlinie ausgeführt wird) oder
    • nicht aufgelöst werden kann (nicht definiert ist)

    dann ist das die Ursache für den Fehler.

    Angenommen, die obige Richtlinie zum Extrahieren von Variablen wird im request-Ablauf ausgeführt. Beachten Sie, dass die Variable response im <Source>-Element der Richtlinie zum Extrahieren von Variablen verwendet wird. Die Variable response ist nur im Antwortablauf verfügbar.

    Da die Variable response nicht im Anfrageablauf vorhanden ist, erhalten Sie folgenden Fehlercode: steps.extractvariables.SourceMessageNotAvailable.

Lösung

Achten Sie darauf, dass die Variable, die im <Source>-Element der fehlgeschlagenen Richtlinie zur Extraktion von Variablen festgelegt wurde, definiert und in dem Ablauf vorhanden ist, in dem die Richtlinie ausgeführt wird.

Um die obige Beispielrichtlinie zum Extrahieren von Variablen zu korrigieren, können Sie das Element <Source> ändern, um die Variable request wie im Anfrageablauf vorhanden zu verwenden:

<ExtractVariables name="ExtractVariables-1">
    <Source>request</Source>
    <URIPath>
        <Pattern ignoreCase="true">/a/{pathSeg}</Pattern>
    </URIPath>
    <VariablePrefix>urirequest</VariablePrefix>
</ExtractVariables>

SetVariableFailed

Fehlercode

steps.extractvariables.SetVariableFailed

Fehlerantworttext

{
    "fault": {
        "faultstring": "Failed to set variable [variable_name] value [variable_value] from ExtractVariables: [policy_name]",
        "detail": {
            "errorcode": "steps.extractvariables.SetVariableFailed"
        }
    }
}

Ursache

Dieser Fehler tritt auf, wenn die Richtlinie zum Extrahieren von Variablen keinen Wert für eine Variable festlegen konnte. Dies ist in der Regel der Fall, wenn Sie Werte für mehrere Variablen zuweisen möchten, deren Namen mit den gleichen Begriffen in einem verschachtelten, durch Punkte getrennten Format beginnen.

Angenommen, Sie erstellen einen Wert für eine Variable var.color oder weisen dieser einen Wert zu. In diesem Fall wird color als Objektknoten zugeordnet. Wenn Sie dann versuchen, einer anderen Variablen var.color.next einen Wert zuzuweisen, schlägt der Vorgang fehl, da color bereits zugeordnet ist und ihr keine weitere Variable zugeordnet werden kann.

Diagnose

  1. Ermitteln Sie die Richtlinie zum Extrahieren von Variablen, in der der Fehler aufgetreten ist, sowie den Namen der Variablen, für die der Wert nicht festgelegt werden konnte. Sie finden beide Elemente im Element faultstring der Fehlerantwort. Im folgenden Fehlerstring lautet der Richtlinienname beispielsweise ExtractColors und die Variable var.color.next:

    "faultstring": "Failed to set variable var.color.next value red from ExtractVariables: ExtractColors"

  2. Prüfen Sie in der XML-Datei mit der fehlgeschlagenen Richtlinie zum Extrahieren von Variablen, ob der Name der Variablen mit dem im Fehlerstring angegebenen Variablennamen übereinstimmt (siehe Schritt 1 oben). Mit der folgenden Richtlinie wird beispielsweise versucht, einer Variable namens var.color.next den Wert eines Fehlerstrings aus einem Anfrageabfrageparameter zuzuweisen:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ExtractVariables name="ExtractColors">
        <DisplayName>ExtractColors</DisplayName>
        <Source>request</Source>
        <QueryParam name="color">
            <Pattern ignoreCase="true">{color}</Pattern>
        </QueryParam>
        <QueryParam name="nextcolor">
            <Pattern ignoreCase="true">{color.next}</Pattern>
        </QueryParam>
        <VariablePrefix>var</VariablePrefix>
    </ExtractVariables>
    
  3. Prüfen Sie alle Variablennamen, die in der fehlgeschlagenen Richtlinie zum Extrahieren von Variablen verwendet werden. Wenn Sie einer anderen Variablen einen Wert zugewiesen haben, deren Variablenname mit dem Namen der Variablen im Fehlerstring (siehe Schritt 1 oben) beginnt, ist dies die Ursache des Fehlers.

    Beachten Sie in der oben aufgeführten Beispielrichtlinie zum Extrahieren von Variablen Folgendes:

    • Der Wert des Abfrageparameters color wird zuerst der Variable var.color zugewiesen. Hinweis: var ist das Präfix für alle Variablen, die für <VariablePrefix> festgelegt sind.
    • In der nächsten Zuweisung wird der Wert des Abfrageparameters nextcolor einer anderen Variable, var.color.next, zugewiesen.
    • Da var.color bereits zugeordnet ist, kann die Richtlinie zum Extrahieren von Variablen keine andere verschachtelte Variable var.color.next zuordnen. Sie erhalten deshalb den Fehlercode steps.extractvariables.SetVariableFailed.

Lösung

Achten Sie darauf, dass nicht mehrere Variablennamen vorhanden sind, die mit den gleichen Begriffen beginnen, die im durch Punkte getrennten Format verschachtelt sind.

Um die obige Richtlinie zum Extrahieren von Variablen zu korrigieren, ändern Sie den Variablennamen var.color.next in var.nextcolor.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables name="ExtractColors">
    <DisplayName>ExtractColors</DisplayName>
    <Source>request</Source>
    <QueryParam name="color">
        <Pattern ignoreCase="true">{color}</Pattern>
    </QueryParam>
    <QueryParam name="nextcolor">
        <Pattern ignoreCase="true">{nextcolor}</Pattern>
    </QueryParam>
    <VariablePrefix>var</VariablePrefix>
</ExtractVariables>

Weitere Informationen

Weitere Informationen finden Sie in diesem Community-Beitrag.

InvalidJSONPath

Fehlercode

steps.extractvariables.InvalidJSONPath

Fehlerantworttext

{
    "fault": {
        "faultstring": "Invalid JSON path [path_name] in policy [policy_name].",
        "detail": {
            "errorcode": "steps.extractvariables.InvalidJSONPath"
        }
    }
}

Ursache

Dieser Fehler tritt auf, wenn im <JSONPath>-Element der Richtlinie zum Extrahieren von Variablen ein ungültiger JSON-Pfad verwendet wird. Wenn beispielsweise eine JSON-Nutzlast nicht das Objekt Name enthält, aber Name als Pfad in der Richtlinie zum Extrahieren von Variablen angegeben wurde, tritt dieser Fehler auf.

Diagnose

  1. Ermitteln Sie die Richtlinie zum Extrahieren von Variablen, in der der Fehler aufgetreten ist, sowie den ungültigen JSON-Pfad. Sie finden beide Elemente im Element faultstring der Fehlerantwort. Im folgenden Fehlerstring lautet der Richtlinienname beispielsweise ExtractJSONVariables und der ungültige JSON-Pfad $.Name:

    "faultstring": "Invalid JSON path $.Name in policy ExtractJSONVariables."

  2. Prüfen Sie in der XML-Datei der fehlgeschlagenen Richtlinie zum Extrahieren von Variablen, ob der im <JSONPath>-Element festgelegte JSON-Pfad mit dem im Fehlerstring angegebenen Pfad übereinstimmt (sie Schritt 1 oben). Die folgende Richtlinie zum Extrahieren von Variablen legt beispielsweise den JSON-Pfad $.Name fest, der mit dem Pfad im Fehlerstring übereinstimmt:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ExtractVariables name="ExtractJSONVariables">
        <Source>response</Source>
        <JSONPayload>
            <Variable name="name" type="string">
                <JSONPath>$.Name</JSONPath>
            </Variable>
        </JSONPayload>
       <VariablePrefix>employee</VariablePrefix>
    </ExtractVariables>
    
  3. Prüfen Sie das <Source>-Element und ermitteln Sie, von welcher JSON-Nutzlast die Variable extrahiert werden soll. Wenn für das <Source>-Element beispielsweise der Wert request festgelegt ist, extrahiert die Richtlinie aus der JSON-Nutzlast des Anfrageobjekts. Wenn response festgelegt ist, handelt es sich um ein Antwortobjekt.

    In der obigen Beispielrichtlinie für das Extrahieren von Variablen wurde für das <Source>-Element der Wert response festgelegt, sodass die Variablen aus der JSON-Nutzlast der Antwort extrahiert werden.

    <Source>response</Source>

  4. Prüfen Sie die entsprechende JSON-Nutzlast (siehe Schritt 3) und ob dafür das im <JSONPath>-Element angegebene Objekt festgelegt ist. Wenn die JSON-Nutzlast dieses Objekt nicht enthält, ist dies die Ursache für den Fehler.

    Angenommen, Sie versuchen, Variablen aus der folgenden JSON-Antwortnutzlast zu extrahieren:

    {
      "firstName":"John",
      "lastName":"Doe",
      "city":"San Jose",
      "state":"CA"
    }
    

    Da die JSON-Nutzlast der Antwort das Objekt Name nicht enthält, schlägt die Richtlinie zum Extrahieren von Variablen mit folgendem Fehler fehl: steps.extractvariables.InvalidJSONPath.

Lösung

Achten Sie darauf, dass nur Objekte, die Bestandteil der JSON-Nutzlast sind, aus der die Variablen extrahiert werden, im <JSONPath>-Element der Richtlinie zum Extrahieren von Variablen angegeben werden.

Um die obige Beispielrichtlinie zum Extrahieren von Variablen zu korrigieren, ändern Sie das <JSONPath>-Element, um eines der Objekte anzugeben, die in der JSON-Beispielnutzlast der Antwort verfügbar sind. So sind beispielsweise die Objekte firstName und lastName gültig.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables name="ExtractJSONVariables">
    <Source>response</Source>
    <JSONPayload>
        <Variable name="name" type="string">
           <JSONPath>$.firstName</JSONPath>
        </Variable>
    </JSONPayload>
    <VariablePrefix>employee</VariablePrefix>
</ExtractVariables>

ExecutionFailed

Fehlercode

steps.extractvariables.ExecutionFailed

Fehlerantworttext

{
    "fault": {
        "faultstring": "Failed to execute the ExtractVariables: [policy_name]",
        "detail": {
            "errorcode": "steps.extractvariables.ExecutionFailed"
        }
    }
}

Mögliche Ursachen

Mögliche Ursachen für diesen Fehler:

Ursache Beschreibung
Fehlende Eingabe-Nutzlast die Eingabe-Nutzlast (JSON, XML) leer ist.
Ungültige oder fehlerhafte Eingabe die an die Richtlinie übergebene Eingabe (JSON, XML usw.) ungültig oder fehlerhaft ist.

Ursache: Fehlende Eingabe-Nutzlast

Dieser Fehler tritt auf, wenn die Richtlinie zum Extrahieren von Variablen die Variablen aus einer JSON- oder XML-Nutzlast extrahieren soll, der Inhalt (die Nutzlast) der Variable im <Source>-Element aber leer ist.

Beispiel: Der Fehler tritt auf, wenn für das <Source>-Element in der Richtlinie zum Extrahieren von Variablen eine request- oder response-Variable festgelegt ist und es eine JSON- oder XML-Nutzlast enthalten soll, die Nutzlast aber leer ist.

Diagnose

  1. Ermitteln Sie die Richtlinie zum Extrahieren von Variablen, in der der Fehler aufgetreten ist. Diese Information finden Sie im Fehlerstringelement der Fehlerantwort. Im folgenden Fehlerstring lautet der Richtlinienname beispielsweise ExtractJSONVariables:

    "faultstring": "Failed to execute the ExtractVariables: ExtractXMLVariables"

  2. Prüfen Sie das <Source>-Element in der XML-Datei der fehlgeschlagenen Richtlinie zum Extrahieren von Variablen und ermitteln Sie den Typ der Eingabe, aus der die Variablen extrahiert werden. In der folgenden Richtlinie zum Extrahieren von Variablen ist beispielsweise für das <Source>-Element der Wert response festgelegt und die Variablen werden aus der XML-Nutzlast extrahiert:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <ExtractVariables name="ExtractXMLVariables" async="false" continueOnError="false" enabled="true">
        <XMLPayload>
            <Namespaces/>
            <Variable name="City" type="string">
                <XPath>/city</XPath>
            </Variable>
        </XMLPayload>
        <Source clearPayload="false">response</Source>
    </ExtractVariables>
    
    
  3. Prüfen Sie, ob die Eingabe, die von der Richtlinie zum Extrahierten von Variablen geparst wird, leer ist. Wenn die Eingabe leer ist, ist dies die Fehlerursache.

    In der obigen Beispielrichtlinie zum Extrahieren von Variablen war die vom Back-End-Server gesendete Antwortnutzlast, also der Antworttext, leer.

    Da die Nutzlast der XML-Antwort leer ist, erhalten Sie folgenden Fehlercode:

    steps.extractvariables.ExecutionFailed

    Dieser Fehler kann auch auftreten, wenn für das <Source>-Element der Wert request festgelegt ist, in der API-Proxy-Anfrage aber keine Nutzlast übergeben wird. Beispiele:

    curl -v "http://$EXTERNAL_IP/v1/testevexecutionfailed" -H "Content-Type: application/xml"
    

    Dabei ist $EXTERNAL_IP die IP-Adresse des externen Load-Balancers. Diese IP-Adresse ist im Internet sichtbar. Weitere Informationen finden Sie unter Zugriffs-Routing anpassen.

    Die Richtlinie zum Extrahieren von Variablen führt die XML-Extraktion nur dann aus, wenn der Content-Type-Header der Nachricht application/xml, text/xml oder application/*+xml lautet. Sie müssen den Content-Type-Header als application/xml, text/xml oder application/*+xml übergeben, wenn die Richtlinie zum Extrahieren von Variablen eine XML-Anfragenutzlast parsen soll.

Lösung

Achten Sie darauf, dass die Eingabe, die an die Richtlinie zum Extrahieren von Variablen übergeben wird, gültig und nicht leer ist.

Um das Problem mit der obigen Beispielrichtlinie zum Extrahieren von Variablen zu beheben, übergeben Sie eine gültige XML-Nutzlast. Beispiele:

  1. Erstellen Sie eine Datei mit dem Namen city.xml und folgendem Inhalt:

    <city>Bengaluru</city>
    <area>Sanjaynagar</area>
    
  2. Führen Sie folgenden API-Aufruf mit einem curl-Befehl aus:

    curl -v "http://$EXTERNAL_IP/v1/testevexecutionfailed" -H "Content-Type: application/xml" -X POST -d @city.xml
    
    

    Dabei ist $EXTERNAL_IP die IP-Adresse des externen Load-Balancers. Diese IP-Adresse ist im Internet sichtbar. Weitere Informationen finden Sie unter Zugriffs-Routing anpassen.

Ursache: Ungültige oder fehlerhafte Eingabe

Dieser Fehler wird ausgegeben, wenn die Richtlinie zum Extrahieren von Variablen ungültige oder fehlerhafte Eingaben parst.

Sie erhalten Sie diese Fehlermeldung, wenn beispielsweise die folgende ungültige JSON-Datei als Eingabe für die Richtlinie zum Extrahieren von Variablen bereitgestellt wird:

[
    "args": ["name" : "amar" ]
]

Diagnose

  1. Ermitteln Sie die Richtlinie zum Extrahieren von Variablen, in der der Fehler aufgetreten ist. Sie finden die entsprechende Information im faultstring-Element der Fehlerantwort. Im folgenden faultstring lautet der Richtlinienname beispielsweise ExtractJSONVariables:

    "faultstring": "Failed to execute the ExtractVariables: ExtractJSONVariables"

  2. Prüfen Sie das <Source>-Element in der XML-Datei der fehlgeschlagenen Richtlinie zum Extrahieren von Variablen und ermitteln Sie den Typ der Eingabe, aus der die Variablen extrahiert werden. Für die folgende Richtlinie zum Extrahieren von Variablen wird zum Beispiel für das <Source>-Element der Wert request und die Variablen aus der JSON-Nutzlast extrahiert:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <ExtractVariables name="ExtractJSONVariables" async="false" continueOnError="false" enabled="true">
        <JSONPayload>
            <Variable name="Name" type="string">
                <JSONPath>$.args.name</JSONPath>
            </Variable>
        </JSONPayload>
        <Source clearPayload="false">request</Source>
    </ExtractVariables>
    
    
  3. Prüfen Sie, ob die Eingabe, die von der Richtlinie zum Extrahieren von Variablen geparst wird, gültig ist. Wenn die Eingabe ungültig oder fehlerhaft ist, ist dies die Ursache des Fehlers.

    Im obigen Beispiel wurde die folgende ungültige JSON-Datei an die Richtlinie zum Extrahieren von Variablen übergeben:

    [
        "args": ["name" : "amar" ]
    ]
    

    Hier ist der Beispiel-API-Aufruf, der zeigt, wie die Anfrage übergeben wurde:

    curl -v "http://<$EXTERNAL_IP/v1/testevexecutionfailed" -H "Content-Type: application/json" -X POST -d '[ "args" : ["name" : "amar" ]]'
    

    Dabei ist $EXTERNAL_IP die IP-Adresse des externen Load-Balancers. Diese IP-Adresse ist im Internet sichtbar. Weitere Informationen finden Sie unter Zugriffs-Routing anpassen.

    Die an die API übergebene JSON-Nutzlast ist ungültig, da sie ein Array mit eckigen Klammern ([ ]) enthält. Sie erhalten deshalb folgenden Fehlercode:

    steps.extractvariables.ExecutionFailed
    

    Dieser Fehler kann auch auftreten, wenn für das <Source>-Element der Wert response festgelegt wurde, die JSON-Antwortnutzlast aber ungültig oder fehlerhaft ist.

Lösung

Achten Sie darauf, dass die an die Richtlinie zum Extrahieren von Variablen übergebene Eingabe gültig und nicht fehlerhaft ist.

Um das Problem mit der obigen Beispielrichtlinie zum Extrahieren von Variablen zu beheben, übergeben Sie eine gültige JSON-Nutzlast-Anfrage:

{
   "args":{
      "name":"amar"
   }
}

UnableToCast

Fehlercode

steps.extractvariables.UnableToCast

Fehlerantworttext

{
    "fault": {
        "faultstring": "Unable to cast value [value] as [type].",
        "detail": {
            "errorcode": "steps.extractvariables.UnableToCast"
        }
    }
}

Ursache

Dieser Fehler tritt auf, wenn die Richtlinie zum Extrahieren von Variablen den extrahierten Wert nicht in eine Variable umwandeln konnte. Dies ist in der Regel der Fall, wenn Sie versuchen, den Wert eines Datentyps auf die Variable eines anderen Datentyps festzulegen.

Sie erhalten diesen Fehler, wenn die Richtlinie zum Extrahieren von Variablen zum Beispiel versucht, einen Wert festzulegen, der aus einer Stringvariable in eine Ganzzahlvariable extrahiert wurde.

Diagnose

  1. Ermitteln Sie den Datentyp der Variablen, die von der Richtlinie zum Extrahieren von Variablen nicht umgewandelt werden kann. Sie finden die entsprechende Information im faultstring-Element der Fehlerantwort. Im folgenden faultstring ist der Objekttyp beispielsweise BOOLEAN:

    "faultstring":"Unable to cast value 36.231 as BOOLEAN."

  2. Ermitteln Sie die Richtlinie zum Extrahieren von Variablen, mit der versucht wird, den Wert für eine Variable des Typs aus Schritt 1 festzulegen.

    Die folgende Richtlinie zum Extrahieren von Variablen extrahiert beispielsweise den Wert aus einem $.latitude-JSONPath in eine Variable des Typs boolean, die dem Inhalt des Fehlerstrings entspricht:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <ExtractVariables name="EV-XML-Name" async="false" continueOnError="false" enabled="true">
        <JSONPayload>
          <Variable name="latitude" type="boolean">
              <JSONPath>$.latitude</JSONPath>
          </Variable>
        </JSONPayload>
        <Source clearPayload="false">response</Source>
    </ExtractVariables>
    
    
  3. Prüfen Sie den Datentyp des Werts, der extrahiert wird. Die Daten können als Header, URI-Pfade, JSON/XML-Nutzlasten, Formularparameter und Abfrageparameter vorliegen.

  4. Prüfen Sie, ob der in Schritt 3 ermittelte Datentyp und der Datentyp der Variable, der Daten wie in Schritt 2 zugewiesen sind, identisch sind.

  5. Wenn die Datentypen der Quell- und Zielvariablen nicht identisch sind, ist dies die Ursache des Fehlers.

    In der obigen Beispielrichtlinie für das Extrahieren von Variablen lautet die JSON-Anfragenutzlast so:

    {
     "latitude":36.2312
    }
    

    Der Datentyp des Werts, der aus <JSONPath>, '$.latitude' extrahiert wird, ist eine Ganzzahl, die einer Variablen des booleschen Datentyps zugewiesen wird.

    Da der Datentyp des extrahierten Werts und der Datentyp der Variable, der der Wert zugewiesen wird, nicht identisch sind, erhalten Sie den Fehlercode steps.extractvariables.UnableToCast.

Lösung

Achten Sie darauf, dass der Datentyp des extrahierten Werts und der Variable, der der Inhalt zugewiesen wird, vom gleichen Typ sind.

Um die Beispielrichtlinie für das Extrahieren von Variablen zu korrigieren, müssen Sie den Typ der Variable in "Ganzzahl" ändern:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables name="EV-XML-Name" async="false" continueOnError="false" enabled="true">
    <JSONPayload>
        <Variable name="latitude" type="integer">
            <JSONPath>$.latitude</JSONPath>
        </Variable>
    </JSONPayload>
    <Source clearPayload="false">response</Source>
</ExtractVariables>

JsonPathParsingFailure

Fehlercode

steps.extractvariables.JsonPathParsingFailure

Fehlerantworttext

{
    "fault": {
        "faultstring": "ExtractVariables [policy_name]: Json path parsing failed for for flow variables [variable_name]",
        "detail": {
            "errorcode": "steps.extractvariables.JsonPathParsingFailure"
        }
    }
}

Ursache

Dieser Fehler tritt auf, wenn die Richtlinie zum Extrahieren von Variablen keinen JSON-Pfad parsen und keine Daten aus der im <Source>-Element angegebenen Ablaufvariablen extrahieren kann. Dies ist in der Regel der Fall, wenn die im <Source>-Element angegebene Ablaufvariable im aktuellen Ablauf nicht vorhanden ist.

Der Fehler tritt beispielsweise auf, wenn die Richtlinie zum Extrahieren von Variablen im Antwortablauf ausgeführt wird und einen JSON-Pfad parsen soll, für das <Source>-Element aber die Ablaufvariable request.content festgelegt ist, die nicht im Antwortablauf vorhanden sind.

Diagnose

  1. Ermitteln Sie die Richtlinie zum Extrahieren von Variablen, in der der Fehler aufgetreten ist, sowie den Namen der Ablaufvariablen, in die keine Daten extrahiert werden konnten. Sie finden beide Elemente im Fehlerstring-Element der Fehlerantwort. Im folgenden Fehlerstring lautet der Richtlinienname beispielsweise ExtractVariables-1 und die Variable request.content:

    "faultstring": "ExtractVariables ExtractJSONVariabes: Json path parsing failed for for flow variables request.content"

  2. Prüfen Sie in der XML-Datei mit der fehlgeschlagenen Richtlinie zum Extrahieren von Variablen, ob der Name der Variablen im <Source>-Element mit dem im Fehlerstring angegebenen Variablennamen übereinstimmt (siehe Schritt 1 oben). Die folgende Richtlinie zum Extrahieren von Variablen gibt beispielsweise eine Variable namens request.content an, die dem Inhalt des Fehlerstrings entspricht:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <ExtractVariables name="ExtractJSONVariables" async="false" continueOnError="false" enabled="true">
        <JSONPayload>
            <Variable name="Name" type="string">
                <JSONPath>$.args.name</JSONPath>
            </Variable>
        </JSONPayload>
        <Source clearPayload="false">request.content</Source>
    </ExtractVariables>
    
    
  3. Prüfen Sie, ob die im <Source>-Element verwendete Variable definiert und in dem Ablauf verfügbar ist, in dem die Richtlinie zum Extrahieren von Variablen ausgeführt wird.

  4. Wenn die Variable entweder:

    • außerhalb des Gültigkeitsbereichs liegt (nicht in dem spezifischen Ablauf verfügbar ist, in dem die Richtlinie ausgeführt wird) oder
    • nicht aufgelöst werden kann (nicht definiert ist)

    dann ist das die Ursache für den Fehler.

    Angenommen die obige Richtlinie zum Extrahieren von Variablen soll im Antwortablauf ausgeführt werden. Beachten Sie, dass die Ablaufvariable request.content im <Source>-Element der Richtlinie zum Extrahieren von Variablen verwendet wird. Die Ablaufvariable request.content ist nur im Anfrageablauf verfügbar.

    Da die Variable response nicht im Anfrageablauf vorhanden ist, erhalten Sie den Fehlercode steps.extractvariables.JsonPathParsingFailure.

Lösung

Achten Sie darauf, dass die im <Source>-Element der Richtlinie zum Extrahieren von Variablen verwendete Ablaufvariable in dem Ablauf verfügbar ist, in dem die Richtlinie zum Extrahieren von Variablen ausgeführt wird.

Angenommen, eine Variable mit dem Namen response.content ist im Antwortablauf vorhanden und enthält tatsächlich den JSON-Code, den Sie extrahieren möchten. Um die obige Richtlinie zum Extrahieren von Variablen zu korrigieren, können Sie das <Source>-Element so ändern:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables name="ExtractJSONVariables" async="false" continueOnError="false" enabled="true">
    <JSONPayload>
        <Variable name="Name" type="string">
            <JSONPath>$.args.name</JSONPath>
        </Variable>
    </JSONPayload>
    <Source clearPayload="false">response.content</Source>
</ExtractVariables>