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

أنت تعرض مستندات Apigee Edge.
انتقل إلى مستندات Apigee X.
معلومات

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 من استجابة الخطأ. على سبيل المثال، في سلسلة الأخطاء التالية، يكون اسم السياسة هو 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. تأكَّد من عدم توفّر أسماء متغيّرات متعددة تبدأ أسماؤها بالكلمات نفسها التي تكون مضمّنة بتنسيق مفصول بالنقاط.

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

    في مثال سياسة استخراج المتغيّرات الموضّح أعلاه، تم ضبط العنصر <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. تأكَّد من أنّ العناصر المحدّدة في عنصر <JSONPath> من سياسة "استخراج المتغيّرات" هي فقط العناصر التي تشكّل جزءًا من الحمولة البرمجية بتنسيق JSON التي يتم استخراج المتغيّرات منها.

    لتصحيح مثال سياسة "المتغيّرات" المعروضة أعلاه، يمكنك تعديل العنصر <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. حدِّد سياسة "استخراج المتغيّرات" التي حدث فيها الخطأ. يمكنك الاطّلاع على هذه المعلومات في عنصر سلسلة الخطأ في استجابة الخطأ. على سبيل المثال: في سلسلة الأخطاء التالية، اسم السياسة هو 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 válida. على سبيل المثال:

  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" ]]'
    

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

    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"
        }
    }
}

السبب

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

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

التشخيص

  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> غير موجود في التدفق الحالي.

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

التشخيص

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

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

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

    <?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. إذا كان المتغيّر:

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

    هذا هو سبب الخطأ.

    على سبيل المثال، لنفترض أنّه من المفترض تنفيذ سياسة PermissionVariables الموضّحة أعلاه في مسار الاستجابة. يُرجى العِلم أنّه يتم استخدام متغيّر التدفق 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>