אתם צופים במסמכי התיעוד של Apigee ושל Apigee Hybrid.
לעיון במסמכי התיעוד של
Apigee Edge.
SourceMessageNotAvailable
קוד שגיאה
steps.extractvariables.SourceMessageNotAvailable
גוף התשובה לשגיאה
{
"fault": {
"faultstring": "[variable_name] message is not available for ExtractVariable: [policy_name]",
"detail": {
"errorcode": "steps.extractvariables.SourceMessageNotAvailable"
}
}
}
מטרה
השגיאה הזו מתרחשת אם המשתנה message שצוין ברכיב<Source> של מדיניות Extract Variables (חילוץ משתנים) הוא אחד מהבאים:
- מחוץ להיקף (לא זמין בתהליך הספציפי שבו המדיניות מופעלת) או
- לא ניתן לפתור (לא מוגדר)
לדוגמה, השגיאה הזו מתרחשת אם המדיניות Extract Variables (חילוץ משתנים) מופעלת בתהליך הבקשה, אבל הרכיב <Source> מוגדר למשתנה response או error, שלא קיים בתהליך הבקשה.
אבחון
מאתרים את מדיניות Extract Variables (חילוץ משתנים) שבה אירעה השגיאה ואת שם המשתנה שלא זמין. אפשר למצוא את שני הפריטים האלה ברכיב
faultstringשל תגובת השגיאה. לדוגמה, במחרוזת השגיאה הבאה, שם המדיניות הואExtractVariables-1והמשתנה הואresponse:"faultstring": "response message is not available for ExtractVariable: ExtractVariables-1"ב-XML של מדיניות Extract Variables שנכשלה, מוודאים שהשם של המשתנה שהוגדר ברכיב זהה לשם המשתנה שזוהה במחרוזת השגיאה (שלב 1 למעלה). לדוגמה, במדיניות Extract Variables הבאה מוגדר משתנה בשם
responseברכיב, שתואם למה שמופיע במחרוזת השגיאה:<ExtractVariables name="ExtractVariables-1"> <Source>response</Source> <URIPath> <Pattern ignoreCase="true">/a/{pathSeg}</Pattern> </URIPath> <VariablePrefix>urirequest</VariablePrefix> </ExtractVariables>בודקים אם המשתנה שמשמש ברכיב
<Source>מוגדר וזמין בתהליך העבודה שבו מופעלת מדיניות Extract Variables.אם המשתנה הוא:
- מחוץ להיקף (לא זמין בתהליך הספציפי שבו המדיניות מופעלת) או
- לא ניתן לפתור (לא מוגדר)
אז זו הסיבה לשגיאה.
לדוגמה, נניח שמדיניות Extract Variables (חילוץ משתנים) שמוצגת למעלה מופעלת בתהליך של בקשה. נזכיר שהמשתנה
responseמשמש ברכיב<Source>של מדיניות Extract Variables. המשתנהresponseזמין רק בתהליך התגובה.מכיוון שהמשתנה
responseלא קיים בתהליך הבקשה, מוצג קוד השגיאהsteps.extractvariables.SourceMessageNotAvailable.
רזולוציה
מוודאים שהמשתנה שהוגדר ברכיב <Source> של המדיניות Extract Variables שנכשלה מוגדר וקיים בתהליך שבו המדיניות מופעלת.
כדי לתקן את הדוגמה למדיניות Extract Variables שמוצגת למעלה, אפשר לשנות את הרכיב <Source> כך שישתמש במשתנה request כפי שהוא קיים בתהליך הבקשה:
<ExtractVariables name="ExtractVariables-1">
<Source>request</Source>
<URIPath>
<Pattern ignoreCase="true">/a/{pathSeg}</Pattern>
</URIPath>
<VariablePrefix>urirequest</VariablePrefix>
</ExtractVariables>
SetVariableFailed
קוד שגיאה
steps.extractvariables.SetVariableFailed
גוף התשובה לשגיאה
{
"fault": {
"faultstring": "Failed to set variable [variable_name] value [variable_value] from ExtractVariables: [policy_name]",
"detail": {
"errorcode": "steps.extractvariables.SetVariableFailed"
}
}
}
מטרה
השגיאה הזו מתרחשת אם מדיניות Extract Variables לא הצליחה להגדיר את הערך למשתנה. זה קורה בדרך כלל אם מנסים להקצות ערכים לכמה משתנים שהשמות שלהם מתחילים באותן מילים בפורמט מקונן עם נקודות.
לדוגמה, נניח שאתם יוצרים משתנה var.color או מקצים לו ערך. במקרה הזה, color מוקצה כצומת אובייקט. אם תנסו להקצות ערך למשתנה אחר var.color.next, הפעולה תיכשל כי color כבר הוקצה, ואסור להקצות לו משתנה אחר.
אבחון
מזהים את מדיניות Extract Variables (חילוץ משתנים) שבה אירעה השגיאה ואת שם המשתנה שלא ניתן להגדיר עבורו ערך. אפשר למצוא את שני הפריטים האלה ברכיב
faultstringשל תגובת השגיאה. לדוגמה, במחרוזת השגיאה הבאה, שם המדיניות הואExtractColorsוהמשתנה הואvar.color.next:"faultstring": "Failed to set variable var.color.next value red from ExtractVariables: ExtractColors"ב-XML של מדיניות Extract Variables שנכשלה, מוודאים שהשם של המשתנה זהה לשם המשתנה שצוין במחרוזת השגיאה (שלב 1 למעלה). לדוגמה, במדיניות הבאה נעשה ניסיון להקצות ערך מפרמטר של שאילתת בקשה למשתנה בשם
var.color.next(הערך שמופיע במחרוזת השגיאה):<?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>בודקים את כל שמות המשתנים שנעשה בהם שימוש במדיניות Extract Variables שנכשלה. אם הקציתם ערך למשתנה אחר שהשם שלו מתחיל באותו שם כמו שם המשתנה שזוהה במחרוזת השגיאה (שלב 1 למעלה), אז זו הסיבה לשגיאה.
בדוגמה של מדיניות Extract Variables שמוצגת למעלה, אפשר לראות ש:
- הערך של פרמטר השאילתה שנקרא
colorמוקצה קודם למשתנהvar.color(הערה:varהוא הקידומת של כל המשתנים כפי שהוגדר ברכיב<VariablePrefix>) - בהקצאה הבאה, הערך של פרמטר השאילתה
nextcolorמוקצה למשתנה אחרvar.color.next. - מכיוון שהמשתנה
var.colorכבר הוקצה, מדיניות Extract Variables לא יכולה להקצות משתנה מקונן נוסףvar.color.next. לכן מופיע קוד השגיאה:steps.extractvariables.SetVariableFailed
- הערך של פרמטר השאילתה שנקרא
רזולוציה
חשוב לוודא שאין לכם כמה שמות של משתנים שמתחילים באותן מילים, שמוטמעים בפורמט מופרד בנקודות.
כדי לתקן את מדיניות Extract Variables שמוצגת למעלה, אפשר לשנות את שם המשתנה var.color.next לשם המשתנה 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>
מידע נוסף
פרטים נוספים זמינים בפוסט הזה לקהילה.
InvalidJSONPath
קוד שגיאה
steps.extractvariables.InvalidJSONPath
גוף התשובה לשגיאה
{
"fault": {
"faultstring": "Invalid JSON path [path_name] in policy [policy_name].",
"detail": {
"errorcode": "steps.extractvariables.InvalidJSONPath"
}
}
}
מטרה
השגיאה הזו מתרחשת אם נעשה שימוש בנתיב JSON לא תקין ברכיב <JSONPath> של מדיניות Extract Variables. לדוגמה, אם מטען ייעודי (payload) של JSON לא מכיל את האובייקט Name, אבל מציינים את Name כנתיב במדיניות Extract Variables, השגיאה הזו תופיע.
אבחון
מזהים את מדיניות Extract Variables (חילוץ משתנים) שבה אירעה השגיאה ואת נתיב ה-JSON הלא תקין. אפשר למצוא את שני הפריטים האלה ברכיב
faultstringשל תגובת השגיאה. לדוגמה, במחרוזת השגיאה הבאה, שם המדיניות הואExtractJSONVariablesונתיב ה-JSON הלא תקין הוא$.Name:"faultstring": "Invalid JSON path $.Name in policy ExtractJSONVariables."ב-XML של מדיניות Extract Variables שנכשלה, מוודאים שנתיב ה-JSON שהוגדר ברכיב
<JSONPath>תואם לנתיב שזוהה במחרוזת השגיאה (שלב 1 למעלה). לדוגמה, במדיניות Extract Variables הבאה מוגדר נתיב ה-JSON$.Name, שתואם למה שמופיע במחרוזת השגיאה:<?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>בודקים את רכיב
<Source>ומנסים להבין מאיזה מטען ייעודי (payload) של JSON אתם מנסים לחלץ את המשתנה. לדוגמה, אם הרכיב<Source>מוגדר ל-request, המדיניות מחלצת את מטען ה-JSON הייעודי (payload) מאובייקט הבקשה. אם היא מוגדרת ל-response, היא תהיה אובייקט התגובה.בדוגמה של מדיניות Extract Variables שמוצגת למעלה, הרכיב
<Source>מוגדר ל-response, ולכן המשתנים מחולצים ממטען ה-JSON של התגובה.<Source>response</Source>בודקים את המטען הייעודי (payload) המתאים של JSON (שנקבע בשלב 3) ומוודאים שהוא מכיל את האובייקט שצוין ברכיב
<JSONPath>. אם מטען ה-JSON הייעודי לא מכיל את האובייקט הזה, זו הסיבה לשגיאה.לדוגמה, נניח שאתם מנסים לחלץ משתנים ממטען ייעודי (payload) של תגובת JSON:
{ "firstName":"John", "lastName":"Doe", "city":"San Jose", "state":"CA" }מכיוון שמטען הייעודי (payload) של תגובת ה-JSON לא כולל את האובייקט
Name, המדיניות Extract Variables (חילוץ משתנים) נכשלת עם השגיאה שקוד השגיאה שלה הואsteps.extractvariables.InvalidJSONPath.
רזולוציה
מוודאים שרק אובייקטים שמהווים חלק ממטען ה-JSON שממנו נשלפים המשתנים מצוינים ברכיב <JSONPath> של מדיניות Extract Variables.
כדי לתקן את כלל המדיניות לדוגמה Extract Variables שמוצג למעלה, אפשר לשנות את הרכיב <JSONPath> כדי לציין אחד מהאובייקטים שזמינים במטען הייעודי (payload) של תגובת ה-JSON לדוגמה (לדוגמה, האובייקטים firstName ו-lastName הם תקינים):
<?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
קוד שגיאה
steps.extractvariables.ExecutionFailed
גוף התשובה לשגיאה
{
"fault": {
"faultstring": "Failed to execute the ExtractVariables: [policy_name]",
"detail": {
"errorcode": "steps.extractvariables.ExecutionFailed"
}
}
}
סיבות אפשריות
הסיבות האפשריות לשגיאה הזו:
| הסיבה | תיאור |
| מטען ייעודי (payload) של קלט חסר | המטען הייעודי (payload) של הקלט (JSON, XML) ריק. |
| קלט לא תקין או לא מעוצב | הקלט (JSON, XML וכו') שהועבר למדיניות לא תקין או שהפורמט שלו שגוי. |
הסיבה: חסר מטען ייעודי (payload) של קלט
השגיאה הזו מתרחשת אם מדיניות Extract Variables אמורה לחלץ את המשתנים ממטען ייעודי (payload) של JSON או XML, אבל התוכן (המטען הייעודי) של המשתנה שצוין ברכיב <Source> ריק.
לדוגמה, אם האלמנט <Source> במדיניות Extract Variables מוגדר כ-request או כ-response, והוא אמור להכיל מטען ייעודי (payload) מסוג JSON או XML, אבל המטען הייעודי ריק, השגיאה מתרחשת.
אבחון
מזהים את מדיניות Extract Variables (חילוץ משתנים) שבה אירעה השגיאה. אפשר למצוא את המידע הזה ברכיב faultstring של תגובת השגיאה. לדוגמה, במחרוזת השגיאה הבאה, שם המדיניות הוא
ExtractJSONVariables:"faultstring": "Failed to execute the ExtractVariables: ExtractXMLVariables"בודקים את הרכיב
<Source>ב-XML של Extract Variables שנכשל, ומזהים את סוג הקלט שממנו המשתנים מחולצים. לדוגמה, במדיניות Extract Variables (חילוץ משתנים) הבאה, האלמנט<Source>מוגדר כ-response, והמשתנים מחולצים ממטען ה-XML:<?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>בודקת אם הקלט שמנותח על ידי מדיניות Extract Variables (חילוץ משתנים) הוא ריק. אם הקלט ריק, זו הסיבה לשגיאה.
בדוגמה של מדיניות Extract Variables שמוצגת למעלה, מטען הייעודי (payload) של התגובה (כלומר, גוף התגובה) שנשלח על ידי שרת הקצה העורפי היה ריק.
מכיוון שמטען ה-XML ריק, מוצג קוד השגיאה:
steps.extractvariables.ExecutionFailedהשגיאה הזו יכולה להופיע גם אם הרכיב
<Source>מוגדר ל-request, אבל לא מועבר מטען ייעודי (payload) בבקשת ה-proxy ל-API. לדוגמה:curl -v "http://$EXTERNAL_IP/v1/testevexecutionfailed" -H "Content-Type: application/xml"כאשר
$EXTERNAL_IPהיא כתובת ה-IP של מאזן העומסים החיצוני. כתובת ה-IP הזו חשופה לאינטרנט. מידע נוסף זמין במאמר בנושא התאמה אישית של ניתוב הגישה.המדיניות Extract Variables (חילוץ משתנים) מבצעת חילוץ של XML רק אם הכותרת
Content-Typeשל ההודעה היאapplication/xml, text/xmlאוapplication/*+xml. כדי שמדיניות Extract Variables (חילוץ משתנים) תנתח מטען ייעודי (payload) של בקשת XML, צריך להעביר את כותרת Content-Type (סוג תוכן) כ-application/xml,text/xmlאוapplication/*+xml.
רזולוציה
מוודאים שהקלט שמועבר למדיניות Extract Variables (חילוץ משתנים) הוא תקין ולא ריק.
כדי לפתור את הבעיה במדיניות Extract Variables שמוצגת למעלה, צריך להעביר מטען ייעודי (payload) תקין בפורמט XML. לדוגמה:
יוצרים קובץ בשם
city.xmlעם התוכן הבא:<city>Bengaluru</city> <area>Sanjaynagar</area>מבצעים את הקריאה ל-API באמצעות פקודת cURL באופן הבא:
curl -v "http://$EXTERNAL_IP/v1/testevexecutionfailed" -H "Content-Type: application/xml" -X POST -d @city.xmlכאשר
$EXTERNAL_IPהיא כתובת ה-IP של מאזן העומסים החיצוני. כתובת ה-IP הזו חשופה לאינטרנט. מידע נוסף זמין במאמר בנושא התאמה אישית של ניתוב הגישה.
הסיבה: קלט לא תקין או לא מעוצב
אם המדיניות Extract Variables (חילוץ משתנים) מנתחת קלט לא תקין או קלט עם פורמט שגוי, השגיאה הזו תוצג.
לדוגמה, אם קובץ ה-JSON הבא לא תקין ומוגדר כקלט למדיניות Extract Variables (חילוץ משתנים), תוצג השגיאה הזו.
[
"args": ["name" : "amar" ]
]
אבחון
מזהים את מדיניות Extract Variables (חילוץ משתנים) שבה אירעה השגיאה. אפשר למצוא את המידע הזה ברכיב
faultstringשל תגובת השגיאה. לדוגמה, בשורהfaultstringהבאה, שם המדיניות הואExtractJSONVariables:"faultstring": "Failed to execute the ExtractVariables: ExtractJSONVariables"בודקים את הרכיב
<Source>ב-XML של Extract Variables שנכשל, ומזהים את סוג הקלט שממנו המשתנים מחולצים. לדוגמה, במדיניות Extract Variables (חילוץ משתנים) הבאה, הרכיב<Source>מוגדר לערךrequest, והמשתנים מחולצים ממטען ה-JSON:<?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>בודקים אם הקלט שמנותח על ידי מדיניות Extract Variables (חילוץ משתנים) הוא קלט תקין. אם הקלט לא תקין או שהפורמט שלו שגוי, זו הסיבה לשגיאה.
בדוגמה של מדיניות Extract Variables שמוצגת למעלה, קובץ ה-JSON הלא תקין הבא הועבר למדיניות Extract Variables
[ "args": ["name" : "amar" ] ]זוהי דוגמה לקריאה ל-API שבה מוצג איך הבקשה הועברה:
curl -v "http://<$EXTERNAL_IP/v1/testevexecutionfailed" -H "Content-Type: application/json" -X POST -d '[ "args" : ["name" : "amar" ]]'כאשר
$EXTERNAL_IPהיא כתובת ה-IP של מאזן העומסים החיצוני. כתובת ה-IP הזו חשופה לאינטרנט. מידע נוסף זמין במאמר בנושא התאמה אישית של ניתוב הגישה.המטען הייעודי (payload) בפורמט JSON שמועבר ל-API לא תקין כי הוא מכיל מערך עם סוגריים מרובעים (
[ ]) , ולכן מתקבל קוד השגיאה:steps.extractvariables.ExecutionFailedהשגיאה הזו יכולה להופיע גם אם רכיב
<Source>הוגדר לערךresponse, אבל מטען הייעודי (payload) של תגובת ה-JSON לא תקין או שהוא בפורמט שגוי.
רזולוציה
מוודאים שהקלט שמועבר למדיניות Extract Variables (חילוץ משתנים) תקין ולא פגום.
כדי לפתור את הבעיה במדיניות Extract Variables (חילוץ משתנים) שמוסברת למעלה, צריך להעביר בקשה עם מטען ייעודי (payload) תקין בפורמט JSON, באופן הבא:
{
"args":{
"name":"amar"
}
}
UnableToCast
קוד שגיאה
steps.extractvariables.UnableToCast
גוף התשובה לשגיאה
{
"fault": {
"faultstring": "Unable to cast value [value] as [type].",
"detail": {
"errorcode": "steps.extractvariables.UnableToCast"
}
}
}
מטרה
השגיאה הזו מתרחשת אם המדיניות Extract Variables לא הצליחה להמיר את הערך שחולץ למשתנה. בדרך כלל זה קורה כשמנסים להגדיר את הערך של סוג נתונים אחד למשתנה של סוג נתונים אחר.
לדוגמה, אם מדיניות Extract Variable (חילוץ משתנה) מנסה להגדיר ערך שחולץ ממשתנה String (מחרוזת) למשתנה Integer (מספר שלם), תופיע השגיאה הזו.
אבחון
מזהים את סוג הנתונים של המשתנה שאליו המדיניות Extract Variables (חילוץ משתנים) מנסה להמיר ונכשלת. אפשר למצוא את המידע הזה ברכיב
faultstringשל תגובת השגיאה. לדוגמה, ב-faultstringהבא, סוג האובייקט הואBOOLEAN:"faultstring":"Unable to cast value 36.231 as BOOLEAN."מזהים את מדיניות Extract Variables (חילוץ משתנים) שבה מנסים להגדיר את הערך למשתנה מהסוג שנקבע בשלב 1.
לדוגמה, מדיניות Extract Variables (חילוץ משתנים) הבאה מחלצת את הערך מ-JSONPath
$.latitudeלמשתנה מסוגboolean, שתואם למה שמופיע במחרוזת השגיאה:<?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>בודקים את סוג הנתונים של הערך שמחולץ. הנתונים יכולים להיות בצורה של כותרות, נתיבי URI, מטען ייעודי (payload) של JSON/XML, פרמטרים של טופס ופרמטרים של שאילתה.
בודקים אם סוג הנתונים שנקבע בשלב 3 וסוג הנתונים של המשתנה שאליו מוקצים הנתונים (שנקבע בשלב 2) זהים.
אם סוג הנתונים של משתני המקור והיעד לא זהה, זו הסיבה לשגיאה.
בדוגמה של מדיניות Extract Variables שמוצגת למעלה, נניח שמטען ה-JSON של הבקשה הוא כדלקמן:
{ "latitude":36.2312 }סוג הנתונים של הערך שמחולץ מ-
<JSONPath>,'$.latitude', הוא מספר שלם, שמוקצה למשתנה מסוג נתונים בוליאני.מכיוון שסוג הנתונים של הערך שחולץ וסוג הנתונים של המשתנה שאליו מוקצה הערך לא זהים, מוצג קוד השגיאה:
steps.extractvariables.UnableToCast.
רזולוציה
מוודאים שסוג הנתונים של הערך שחולץ ושל המשתנה שאליו התוכן מוקצה זהה.
כדי לתקן את המדיניות לדוגמה Extract Variables, צריך לשנות את סוג המשתנה ל-Integer:
<?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
קוד שגיאה
steps.extractvariables.JsonPathParsingFailure
גוף התשובה לשגיאה
{
"fault": {
"faultstring": "ExtractVariables [policy_name]: Json path parsing failed for for flow variables [variable_name]",
"detail": {
"errorcode": "steps.extractvariables.JsonPathParsingFailure"
}
}
}
מטרה
השגיאה הזו מתרחשת כשמדיניות Extract Variables (חילוץ משתנים) לא מצליחה לנתח נתיב JSON ולחלץ נתונים מהמשתנה של זרימת הנתונים שצוין ברכיב <Source>. בדרך כלל זה קורה אם משתנה הזרימה
שצוין ברכיב <Source> לא קיים בזרימה הנוכחית.
לדוגמה, השגיאה הזו מתרחשת אם מדיניות Extract Variables מופעלת בתהליך response ומצפה לנתח נתיב JSON, אבל הרכיב <Source> מציין את משתנה התהליך request.content, שלא קיים בתהליך response.
אבחון
מזהים את מדיניות Extract Variables (חילוץ משתנים) שבה התרחשה השגיאה ואת השם של משתנה הזרימה שלא ניתן היה לחלץ ממנו נתונים. אפשר למצוא את שני הפריטים האלה ברכיב faultstring של תגובת השגיאה. לדוגמה, במחרוזת השגיאה הבאה, שם המדיניות הוא
ExtractVariables-1והמשתנה הואrequest.content:"faultstring": "ExtractVariables ExtractJSONVariabes: Json path parsing failed for for flow variables request.content"ב-XML של מדיניות Extract Variables שנכשלה, מוודאים שהשם של המשתנה שמוגדר ברכיב
<Source>זהה לשם המשתנה שזוהה במחרוזת השגיאה (שלב 1 למעלה). לדוגמה, במדיניות Extract Variables (חילוץ משתנים) הבאה מוגדר משתנה בשםrequest.content, שתואם למה שמופיע ב-faultstring:<?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>בודקים אם משתנה הזרימה שמשמש ברכיב
<Source>מוגדר וזמין בזרימה שבה מופעלת מדיניות Extract Variables.אם המשתנה הוא:
- מחוץ להיקף (לא זמין בתהליך הספציפי שבו המדיניות מופעלת) או
- לא ניתן לפתור (לא מוגדר)
אז זו הסיבה לשגיאה.
לדוגמה, נניח שמדיניות ExtractVariables שמוצגת למעלה אמורה לפעול בתהליך התגובה. כזכור, משתנה הזרימה
request.contentמשמש ברכיב<Source>של מדיניות Extract Variables. משתנה ה-Flowrequest.contentזמין רק ב-Flow של הבקשה.מכיוון שהמשתנה
responseלא קיים בתהליך הבקשה, מוצג קוד השגיאהsteps.extractvariables.JsonPathParsingFailure.
רזולוציה
מוודאים שמשתנה הזרימה שמשמש ברכיב <Source> של מדיניות Extract Variables זמין בזרימה שבה מדיניות Extract Variables מופעלת.
לדוגמה, נניח שמשתנה בשם response.content קיים בתגובה של זרימת העבודה, והוא מכיל את ה-JSON שרוצים לחלץ. כדי לתקן את מדיניות Extract
Variables שמוצגת למעלה, אפשר לשנות את הרכיב <Source> באופן הבא:
<?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>