הדף הזה רלוונטי ל-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>בודקים את מטען ה-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 של תגובת השגיאה. לדוגמה, במחרוזת 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, אבל מטען הנתונים של תגובת ה-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>בודקים אם משתנה ה-Flow שמשמש ברכיב
<Source>מוגדר וזמין ב-Flow שבו מופעלת מדיניות 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>