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