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
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 beispielsweiseExtractVariables-1
und die Variableresponse
:"faultstring": "response message is not available for ExtractVariable: ExtractVariables-1"
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>
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.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 Variableresponse
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
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 beispielsweiseExtractColors
und die Variablevar.color.next
:"faultstring": "Failed to set variable var.color.next value red from ExtractVariables: ExtractColors"
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>
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 Variablevar.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 Variablevar.color.next
zuordnen. Sie erhalten deshalb den Fehlercodesteps.extractvariables.SetVariableFailed
.
- Der Wert des Abfrageparameters
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
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 beispielsweiseExtractJSONVariables
und der ungültige JSON-Pfad$.Name
:"faultstring": "Invalid JSON path $.Name in policy ExtractJSONVariables."
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>
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 Wertrequest
festgelegt ist, extrahiert die Richtlinie aus der JSON-Nutzlast des Anfrageobjekts. Wennresponse
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 Wertresponse
festgelegt, sodass die Variablen aus der JSON-Nutzlast der Antwort extrahiert werden.<Source>response</Source>
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
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"
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 Wertresponse
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>
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 Wertrequest
festgelegt ist, in der API-Proxy-Anfrage aber keine Nutzlast übergeben wird. Beispiel: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 Routing konfigurieren.Die Richtlinie zum Extrahieren von Variablen führt die XML-Extraktion nur dann aus, wenn der
Content-Type
-Header der Nachrichtapplication/xml
,text/xml
oderapplication/*+xml
lautet. Sie müssen den Content-Type-Header alsapplication/xml
,text/xml
oderapplication/*+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. Beispiel:
Erstellen Sie eine Datei mit dem Namen
city.xml
und folgendem Inhalt:<city>Bengaluru</city> <area>Sanjaynagar</area>
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 Routing konfigurieren.
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
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 folgendenfaultstring
lautet der Richtlinienname beispielsweiseExtractJSONVariables
:"faultstring": "Failed to execute the ExtractVariables: ExtractJSONVariables"
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 Wertrequest
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>
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 Routing konfigurieren.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 Wertresponse
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
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 folgendenfaultstring
ist der Objekttyp beispielsweiseBOOLEAN
:"faultstring":"Unable to cast value 36.231 as BOOLEAN."
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 Typsboolean
, 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>
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.
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.
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
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 Variablerequest.content
:"faultstring": "ExtractVariables ExtractJSONVariabes: Json path parsing failed for for flow variables request.content"
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 namensrequest.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>
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.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 Ablaufvariablerequest.content
ist nur im Anfrageablauf verfügbar.Da die Variable
response
nicht im Anfrageablauf vorhanden ist, erhalten Sie den Fehlercodesteps.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>