פתרון בעיות של שגיאות בזמן ריצה של Extract Variables

אתם צופים במסמכי התיעוד של 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, שלא קיים בתהליך הבקשה.

אבחון

  1. מאתרים את מדיניות Extract Variables (חילוץ משתנים) שבה אירעה השגיאה ואת שם המשתנה שלא זמין. אפשר למצוא את שני הפריטים האלה ברכיב faultstring של תגובת השגיאה. לדוגמה, במחרוזת השגיאה הבאה, שם המדיניות הוא ExtractVariables-1 והמשתנה הוא response:

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

  2. ב-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>
    
  3. בודקים אם המשתנה שמשמש ברכיב <Source> מוגדר וזמין בתהליך העבודה שבו מופעלת מדיניות Extract Variables.

  4. אם המשתנה הוא:

    • מחוץ להיקף (לא זמין בתהליך הספציפי שבו המדיניות מופעלת) או
    • לא ניתן לפתור (לא מוגדר)

    אז זו הסיבה לשגיאה.

    לדוגמה, נניח שמדיניות 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 כבר הוקצה, ואסור להקצות לו משתנה אחר.

אבחון

  1. מזהים את מדיניות Extract Variables (חילוץ משתנים) שבה אירעה השגיאה ואת שם המשתנה שלא ניתן להגדיר עבורו ערך. אפשר למצוא את שני הפריטים האלה ברכיב faultstring של תגובת השגיאה. לדוגמה, במחרוזת השגיאה הבאה, שם המדיניות הוא ExtractColors והמשתנה הוא var.color.next:

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

  2. ב-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>
    
  3. בודקים את כל שמות המשתנים שנעשה בהם שימוש במדיניות 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, השגיאה הזו תופיע.

אבחון

  1. מזהים את מדיניות Extract Variables (חילוץ משתנים) שבה אירעה השגיאה ואת נתיב ה-JSON הלא תקין. אפשר למצוא את שני הפריטים האלה ברכיב faultstring של תגובת השגיאה. לדוגמה, במחרוזת השגיאה הבאה, שם המדיניות הוא ExtractJSONVariables ונתיב ה-JSON הלא תקין הוא $.Name:

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

  2. ב-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>
    
  3. בודקים את רכיב <Source> ומנסים להבין מאיזה מטען ייעודי (payload) של JSON אתם מנסים לחלץ את המשתנה. לדוגמה, אם הרכיב <Source> מוגדר ל-request, המדיניות מחלצת את מטען ה-JSON הייעודי (payload) מאובייקט הבקשה. אם היא מוגדרת ל-response, היא תהיה אובייקט התגובה.

    בדוגמה של מדיניות Extract Variables שמוצגת למעלה, הרכיב <Source> מוגדר ל-response, ולכן המשתנים מחולצים ממטען ה-JSON של התגובה.

    <Source>response</Source>

  4. בודקים את המטען הייעודי (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, אבל המטען הייעודי ריק, השגיאה מתרחשת.

אבחון

  1. מזהים את מדיניות Extract Variables (חילוץ משתנים) שבה אירעה השגיאה. אפשר למצוא את המידע הזה ברכיב faultstring של תגובת השגיאה. לדוגמה, במחרוזת השגיאה הבאה, שם המדיניות הוא ExtractJSONVariables:

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

  2. בודקים את הרכיב <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>
    
    
  3. בודקת אם הקלט שמנותח על ידי מדיניות 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. לדוגמה:

  1. יוצרים קובץ בשם city.xml עם התוכן הבא:

    <city>Bengaluru</city>
    <area>Sanjaynagar</area>
    
  2. מבצעים את הקריאה ל-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" ]
]

אבחון

  1. מזהים את מדיניות Extract Variables (חילוץ משתנים) שבה אירעה השגיאה. אפשר למצוא את המידע הזה ברכיב faultstring של תגובת השגיאה. לדוגמה, בשורה faultstring הבאה, שם המדיניות הוא ExtractJSONVariables:

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

  2. בודקים את הרכיב <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>
    
    
  3. בודקים אם הקלט שמנותח על ידי מדיניות 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 (מספר שלם), תופיע השגיאה הזו.

אבחון

  1. מזהים את סוג הנתונים של המשתנה שאליו המדיניות Extract Variables (חילוץ משתנים) מנסה להמיר ונכשלת. אפשר למצוא את המידע הזה ברכיב faultstring של תגובת השגיאה. לדוגמה, ב-faultstring הבא, סוג האובייקט הוא BOOLEAN:

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

  2. מזהים את מדיניות 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>
    
    
  3. בודקים את סוג הנתונים של הערך שמחולץ. הנתונים יכולים להיות בצורה של כותרות, נתיבי URI, מטען ייעודי (payload) של JSON/XML, פרמטרים של טופס ופרמטרים של שאילתה.

  4. בודקים אם סוג הנתונים שנקבע בשלב 3 וסוג הנתונים של המשתנה שאליו מוקצים הנתונים (שנקבע בשלב 2) זהים.

  5. אם סוג הנתונים של משתני המקור והיעד לא זהה, זו הסיבה לשגיאה.

    בדוגמה של מדיניות 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.

אבחון

  1. מזהים את מדיניות Extract Variables (חילוץ משתנים) שבה התרחשה השגיאה ואת השם של משתנה הזרימה שלא ניתן היה לחלץ ממנו נתונים. אפשר למצוא את שני הפריטים האלה ברכיב faultstring של תגובת השגיאה. לדוגמה, במחרוזת השגיאה הבאה, שם המדיניות הוא ExtractVariables-1 והמשתנה הוא request.content:

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

  2. ב-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>
    
    
  3. בודקים אם משתנה הזרימה שמשמש ברכיב <Source> מוגדר וזמין בזרימה שבה מופעלת מדיניות Extract Variables.

  4. אם המשתנה הוא:

    • מחוץ להיקף (לא זמין בתהליך הספציפי שבו המדיניות מופעלת) או
    • לא ניתן לפתור (לא מוגדר)

    אז זו הסיבה לשגיאה.

    לדוגמה, נניח שמדיניות ExtractVariables שמוצגת למעלה אמורה לפעול בתהליך התגובה. כזכור, משתנה הזרימה request.content משמש ברכיב <Source> של מדיניות Extract Variables. משתנה ה-Flow‏ request.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>