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

يتم الآن عرض مستندات 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 صالحة. مثال:

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

السبب

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

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

التشخيص

  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، إلا أنّ العنصر <Source> يحدّد متغيّر التدفق request.content، وهو غير متوفّر في مسار الاستجابة.

التشخيص

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

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

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

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

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

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

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