تحديد المشاكل وحلّها في ما يتعلّق بأخطاء وقت تشغيل "المتغيّرات"

أنت الآن بصدد الاطّلاع على مستندات 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، وهو غير متوفّر في مسار الطلب.

التشخيص

  1. حدِّد سياسة "استخراج المتغيّرات" التي حدث فيها الخطأ واسم المتغيّر غير المتاح. يمكنك العثور على كلتا السمتين في العنصر faultstring من ردّ الخطأ. على سبيل المثال، في السلسلة faultstring التالية، يكون اسم السياسة ExtractVariables-1 والمتغير response:

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

  2. في ملف XML الخاص بسياسة "استخراج المتغيّرات" الذي تعذّر تنفيذه، تأكَّد من أنّ اسم مجموعة المتغيّرات المحدّدة في العنصر يطابق اسم المتغيّر المحدّد في سلسلة الخطأ (الخطوة 1 أعلاه). على سبيل المثال، تحدّد سياسة "استخراج المتغيرات" التالية متغيرًا باسم response في العنصر، وهو ما يتطابق مع ما هو موجود في سلسلة الخطأ:

    <ExtractVariables name="ExtractVariables-1">
        <Source>response</Source>
        <URIPath>
            <Pattern ignoreCase="true">/a/{pathSeg}</Pattern>
        </URIPath>
        <VariablePrefix>urirequest</VariablePrefix>
    </ExtractVariables>
    
  3. تحديد ما إذا كان المتغيّر المستخدَم في العنصر <Source> معرَّفًا ومتاحًا في التدفق الذي يتم فيه تنفيذ سياسة "استخراج المتغيّرات"

  4. إذا كان المتغير إما:

    • خارج النطاق (غير متوفّر في المسار المحدّد الذي يتم فيه تنفيذ السياسة)
    • لا يمكن حلّها (لم يتم تحديدها)

    عندها يكون هذا هو سبب الخطأ.

    على سبيل المثال، لنفترض أنّ سياسة "استخراج المتغيّرات" الموضّحة أعلاه يتم تنفيذها في مسار الطلب. تذكَّر أنّ المتغيّر response يُستخدَم في العنصر <Source> من سياسة "استخراج المتغيّرات". لا يتوفّر المتغيّر 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 بالفعل، ولا يُسمح بتخصيص متغيّر آخر له.

التشخيص

  1. حدِّد سياسة "استخراج المتغيّرات" التي حدث فيها الخطأ واسم المتغيّر الذي تعذّر ضبط قيمته. يمكنك العثور على كلتا السمتين في العنصر faultstring من ردّ الخطأ. على سبيل المثال، في سلسلة الأعطال التالية، يكون اسم السياسة هو ExtractColors والمتغير هو var.color.next:

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

  2. في ملف 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>
    
  3. افحص جميع أسماء المتغيرات المستخدَمة في سياسة "استخراج المتغيرات" التي تعذّر تنفيذها. إذا كنت قد خصّصت قيمة لمتغيّر آخر يبدأ اسمه بالاسم نفسه الذي تم تحديده في سلسلة الخطأ (الخطوة 1 أعلاه)، فهذا هو سبب الخطأ.

    في مثال سياسة "استخراج المتغيرات" الموضّح أعلاه، لاحظ ما يلي:

    • يتمّ أولاً تعيين قيمة مَعلمة طلب البحث التي تحمل الاسم color إلى المتغيّر var.color (ملاحظة: var هي البادئة لجميع المتغيّرات كما تمّ ضبطها في العنصر <VariablePrefix>).
    • في عملية التعيين التالية، يتم تعيين قيمة مَعلمة طلب البحث nextcolor إلى متغيّر آخر var.color.next.
    • بما أنّه تم تخصيص var.color، لا يمكن لسياسة "استخراج المتغيّرات" تخصيص متغيّر متداخل آخر var.color.next. لذلك، يظهر لك رمز الخطأ: steps.extractvariables.SetVariableFailed

الدقة

  1. تأكَّد من عدم توفّر أسماء متغيّرات متعددة تبدأ بالكلمات نفسها المتداخلة بتنسيق مفصول بنقاط.

    لتصحيح سياسة &quot;استخراج المتغيرات&quot; الموضّحة أعلاه، يمكنك تعديل اسم المتغير 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> ضمن سياسة "استخراج المتغيرات". على سبيل المثال، إذا لم تتضمّن حمولة JSON العنصر Name، ولكنك حدّدت Name كمسار في سياسة "استخراج المتغيّرات"، سيحدث هذا الخطأ.

التشخيص

  1. حدِّد سياسة "استخراج المتغيرات" التي حدث فيها الخطأ ومسار JSON غير الصالح. يمكنك العثور على كلتا السمتين في العنصر faultstring ضمن استجابة الخطأ. على سبيل المثال، في سلسلة الخطأ التالية، اسم السياسة هو ExtractJSONVariables ومسار JSON غير الصالح هو $.Name:

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

  2. في ملف XML الخاص بسياسة &quot;استخراج المتغيّرات&quot; الذي تعذّر تنفيذه، تأكَّد من أنّ مسار JSON الذي تم ضبطه في العنصر <JSONPath> يتطابق مع المسار المحدّد في سلسلة الخطأ (الخطوة 1 أعلاه). على سبيل المثال، تحدّد سياسة "استخراج المتغيرات" التالية مسار 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> وحدِّد حِمل JSON الذي تحاول استخراج المتغير منه. على سبيل المثال، إذا تم ضبط العنصر <Source> على request، ستستخرج السياسة حمولة JSON من عنصر الطلب. إذا تم ضبطها على response، ستكون كائن استجابة.

    في مثال سياسة &quot;استخراج المتغيرات&quot; الموضّح أعلاه، تم ضبط العنصر <Source> على response، وبالتالي يتم استخراج المتغيرات من حمولة JSON الخاصة بالاستجابة.

    <Source>response</Source>

  4. افحص حمولة JSON المناسبة (التي تم تحديدها في الخطوة 3) وتأكَّد مما إذا كانت تحتوي على العنصر المحدّد في العنصر <JSONPath>. إذا لم تتضمّن حمولة JSON هذا العنصر، سيكون هذا هو سبب الخطأ.

    على سبيل المثال، لنفترض أنّك تحاول استخراج متغيرات من حمولة استجابة JSON التالية:

    {
      "firstName":"John",
      "lastName":"Doe",
      "city":"San Jose",
      "state":"CA"
    }
    

    بما أنّ حمولة استجابة JSON لا تحتوي على العنصر Name، ستتعذّر سياسة "استخراج المتغيّرات" مع ظهور رمز الخطأ: steps.extractvariables.InvalidJSONPath.

الدقة

  1. تأكَّد من تحديد الكائنات التي تشكّل جزءًا من حمولة JSON التي يتم استخراج المتغيّرات منها فقط في العنصر <JSONPath> من سياسة "استخراج المتغيّرات".

    لتصحيح مثال سياسة "استخراج المتغيرات" الموضّح أعلاه، يمكنك تعديل العنصر <JSONPath> لتحديد أحد العناصر المتاحة في نموذج حمولة استجابة 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"
        }
    }
}

الأسباب المحتملة

في ما يلي الأسباب المحتملة لهذا الخطأ:

السبب الوصف
حمولة الإدخال غير متوفّرة حمولة الإدخال (JSON أو XML) فارغة.
إدخال غير صالح أو غير صحيح المدخلات (JSON أو XML أو غير ذلك) التي تم تمريرها إلى السياسة غير صالحة أو تم تنسيقها بشكلٍ غير صحيح.

السبب: حمولة الإدخال غير متوفّرة

يحدث هذا الخطأ إذا كان من المفترض أن تستخرج سياسة "استخراج المتغيرات" المتغيرات من حمولة JSON أو XML، ولكن كان محتوى المتغير المحدّد في العنصر <Source> فارغًا.

على سبيل المثال، إذا تم ضبط العنصر <Source> في سياسة "استخراج المتغيرات" على request أو response وكان من المفترض أن يحتوي على حمولة JSON أو XML، ولكن كانت الحمولة فارغة، سيحدث الخطأ.

التشخيص

  1. حدِّد سياسة "استخراج المتغيّرات" التي حدث فيها الخطأ. يمكنك العثور على هذه المعلومات في عنصر faultstring الخاص باستجابة الخطأ. على سبيل المثال، في السلسلة faultstring التالية، اسم السياسة هو ExtractJSONVariables:

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

  2. افحص العنصر <Source> في ملف XML الخاص بـ "استخراج المتغيّرات" الذي تعذّر تنفيذه وحدِّد نوع الإدخال الذي يتم استخراج المتغيّرات منه. على سبيل المثال، تحتوي سياسة "استخراج المتغيّرات" التالية على العنصر <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. تحقَّق مما إذا كانت البيانات التي يتم تحليلها بواسطة سياسة "استخراج المتغيّرات" فارغة. إذا كانت قيمة الإدخال فارغة، سيكون ذلك هو سبب الخطأ.

    في مثال سياسة "استخراج المتغيرات" الموضّح أعلاه، كان حمولة الاستجابة (أي نص الاستجابة) التي أرسلها خادم الخلفية فارغًا.

    بما أنّ حمولة استجابة XML فارغة، سيظهر لك رمز الخطأ التالي:

    steps.extractvariables.ExecutionFailed

    يمكن أن يحدث هذا الخطأ أيضًا إذا تم ضبط العنصر <Source> على request، ولكن لم يتم تمرير أي حمولة في طلب خادم وكيل واجهة برمجة التطبيقات. على سبيل المثال:

    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.

الدقة

تأكَّد من أنّ الإدخال الذي تم تمريره إلى سياسة "استخراج المتغيّرات" صالح وغير فارغ.

لحلّ المشكلة في مثال سياسة "استخراج المتغيّرات" الموضّحة أعلاه، عليك تمرير حمولة XML صالحة. على سبيل المثال:

  1. أنشئ ملفًا باسم city.xml يتضمّن المحتوى التالي:

    <city>Bengaluru</city>
    <area>Sanjaynagar</area>
    
  2. أرسِل طلب بيانات من واجهة برمجة التطبيقات باستخدام أمر cURL على النحو التالي:

    curl -v "http://<org>-<env>.apigee.net/v1/testevexecutionfailed" -H "Content-Type: application/xml" -X POST -d @city.xml
    
    

السبب: إدخال غير صالح أو غير مكتمل

يظهر هذا الخطأ إذا حلّلت سياسة "استخراج المتغيّرات" إدخالاً غير صالح أو تم تنسيقه بشكلٍ غير صحيح.

على سبيل المثال، إذا تم تقديم JSON غير صالح التالي كإدخال إلى سياسة "استخراج المتغيرات"، سيظهر لك هذا الخطأ.

[
    "args": ["name" : "amar" ]
]

التشخيص

  1. حدِّد سياسة "استخراج المتغيّرات" التي حدث فيها الخطأ. يمكنك العثور على هذه المعلومات في العنصر faultstring ضمن استجابة الخطأ. على سبيل المثال، في faultstring التالي، اسم السياسة هو ExtractJSONVariables:

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

  2. افحص العنصر <Source> في ملف XML الخاص بـ "استخراج المتغيّرات" الذي تعذّر تنفيذه وحدِّد نوع الإدخال الذي يتم استخراج المتغيّرات منه. على سبيل المثال، تحتوي سياسة "استخراج المتغيرات" التالية على العنصر <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. تحقَّق مما إذا كانت البيانات التي يتم تحليلها بواسطة سياسة "استخراج المتغيّرات" صالحة. إذا كان الإدخال غير صالح أو تم تنسيقه بشكلٍ غير صحيح، سيكون ذلك هو سبب الخطأ.

    في مثال سياسة "استخراج المتغيّرات" الموضّح أعلاه، تم تمرير JSON غير صالح التالي إلى سياسة "استخراج المتغيّرات".

    [
        "args": ["name" : "amar" ]
    ]
    

    في ما يلي نموذج لطلب بيانات من واجهة برمجة التطبيقات يوضّح كيفية تمرير الطلب:

    curl -v "http://<org>-<env>.apigee.net/v1/testevexecutionfailed" -H "Content-Type: application/json" -X POST -d '[ "args" : ["name" : "amar" ]]'
    

    حِمل JSON الذي تم تمريره إلى واجهة برمجة التطبيقات غير صالح لأنّه يحتوي على مصفوفة ذات أقواس مربّعة ([ ])، لذا ستتلقّى رمز الخطأ التالي:

    steps.extractvariables.ExecutionFailed
    

    يمكن أن يحدث هذا الخطأ أيضًا إذا تم ضبط العنصر <Source> على response، ولكن حمولة استجابة JSON غير صالحة أو غير صالحة.

الدقة

تأكَّد من أنّ الإدخال الذي تم تمريره إلى سياسة "استخراج المتغيّرات" صالح وليس بتنسيق غير صحيح.

لحلّ المشكلة المتعلّقة بسياسة "استخراج المتغيّرات" الواردة أعلاه، مرِّر طلب حِمل JSON صالحًا على النحو التالي:

{
   "args":{
      "name":"amar"
   }
}

UnableToCast

رمز الخطأ

steps.extractvariables.UnableToCast

نص رد الخطأ

{
    "fault": {
        "faultstring": "Unable to cast value [value] as [type].",
        "detail": {
            "errorcode": "steps.extractvariables.UnableToCast"
        }
    }
}

السبب

يحدث هذا الخطأ إذا تعذّر على سياسة "استخراج المتغيّرات" تحويل القيمة المستخرَجة إلى متغيّر. يحدث ذلك عادةً إذا حاولت ضبط قيمة أحد أنواع البيانات على متغيّر من نوع بيانات آخر.

على سبيل المثال، إذا حاولت سياسة &quot;استخراج المتغيّر&quot; ضبط قيمة تم استخراجها من متغيّر سلسلة إلى متغيّر عدد صحيح، سيظهر لك هذا الخطأ.

التشخيص

  1. تحديد نوع البيانات للمتغير الذي تحاول سياسة "استخراج المتغيرات" تحويله إليه، ولكنها تفشل. يمكنك العثور على هذه المعلومات في العنصر faultstring لردّ الخطأ. على سبيل المثال، في faultstring التالي، يكون نوع العنصر BOOLEAN:

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

  2. حدِّد سياسة "استخراج المتغيّرات" التي تحاول ضبط القيمة فيها على متغيّر من النوع الذي تم تحديده في الخطوة رقم 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>
    
    
  3. افحص نوع بيانات القيمة التي يتم استخراجها. قد تكون البيانات على شكل عناوين أو مسارات URI أو حمولات JSON/XML أو مَعلمات نموذج أو مَعلمات طلب بحث.

  4. تحقَّق مما إذا كان نوع البيانات الذي تم تحديده في الخطوة 3 ونوع بيانات المتغيّر الذي يتم تعيين البيانات له (الذي تم تحديده في الخطوة 2) متطابقَين.

  5. إذا كان نوع بيانات المتغيرات المصدر والوجهة غير متطابق، سيكون ذلك هو سبب الخطأ.

    في مثال سياسة "استخراج المتغيرات" الموضّح أعلاه، لنفترض أنّ حمولة طلب JSON هي كما يلي:

    {
     "latitude":36.2312
    }
    

    نوع البيانات الخاص بالقيمة التي يتم استخراجها من <JSONPath> و‘$.latitude’ هو عدد صحيح، ويتم تعيينه إلى متغيّر من نوع البيانات المنطقية.

    بما أنّ نوع بيانات القيمة المستخرَجة ونوع بيانات المتغيّر الذي يتم تعيين القيمة له غير متطابقَين، ستتلقّى رمز الخطأ: steps.extractvariables.UnableToCast.

الدقة

تأكَّد من أنّ نوع بيانات القيمة المستخرَجة ونوع بيانات المتغيّر الذي يتم تعيين المحتوى إليه هما النوع نفسه.

لتصحيح مثال سياسة "استخراج المتغيّرات"، عليك تعديل نوع المتغيّر إلى "عدد صحيح":

<?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> متوفّرًا في التسلسل الحالي.

على سبيل المثال، يحدث هذا الخطأ إذا تم تنفيذ سياسة &quot;استخراج المتغيرات&quot; في مسار الاستجابة وكان من المتوقّع أن يتم تحليل مسار JSON، ولكن العنصر <Source> يحدّد متغيّر المسار request.content، الذي لا يتوفّر في مسار الاستجابة.

التشخيص

  1. حدِّد سياسة "استخراج المتغيّرات" التي حدث فيها الخطأ واسم متغيّر التدفق الذي تعذّر استخراج البيانات إليه. يمكنك العثور على كلتا السمتين في العنصر faultstring لردّ الخطأ. على سبيل المثال، في السلسلة faultstring التالية، يكون اسم السياسة ExtractVariables-1 والمتغير request.content:

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

  2. في ملف XML لسياسة "استخراج المتغيّرات" الذي تعذّر تنفيذه، تأكَّد من أنّ اسم المتغيّر الذي تم ضبطه في العنصر <Source> يتطابق مع اسم المتغيّر المحدّد في سلسلة الخطأ (الخطوة 1 أعلاه). على سبيل المثال، تحدّد سياسة &quot;استخراج المتغيرات&quot; التالية متغيرًا باسم 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> محدّدًا ومتاحًا في التدفق الذي يتم فيه تنفيذ سياسة "استخراج المتغيّرات".

  4. إذا كان المتغير إما:

    • خارج النطاق (غير متوفّر في المسار المحدّد الذي يتم فيه تنفيذ السياسة)
    • لا يمكن حلّها (لم يتم تحديدها)

    عندها يكون هذا هو سبب الخطأ.

    على سبيل المثال، لنفترض أنّ سياسة ExtractVariables الموضّحة أعلاه من المفترض أن يتم تنفيذها في مسار الاستجابة. تذكَّر أنّ متغيّر التدفق request.content يُستخدَم في العنصر <Source> من سياسة "استخراج المتغيّرات". لا يتوفّر المتغيّر request.content إلا في مسار الطلب.

    بما أنّ المتغيّر response غير متوفّر في مسار الطلب، ستتلقّى رمز الخطأ: steps.extractvariables.JsonPathParsingFailure.

الدقة

تأكَّد من أنّ متغيّر التدفق المستخدَم في عنصر <Source> من سياسة "استخراج المتغيّرات" متاح في التدفق الذي يتم فيه تنفيذ سياسة "استخراج المتغيّرات".

على سبيل المثال، لنفترض أنّ هناك متغيّرًا باسم 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>