ما تحتاج إلى معرفته عن أخطاء السياسة

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

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

يفترض هذا الموضوع أن لديك فهمًا عامًا لكيفية عمل معالجة الأخطاء في Edge، وأنك تعرف قواعد الأخطاء. إذا كنت بحاجة إلى مراجعة، اطّلِع على معالجة الأخطاء. ستساعدك المعلومات الواردة هنا أيضًا في التنقّل في مرجع أخطاء السياسات واستخدامه.

معلومات عن الاستجابة لأخطاء السياسة التلقائية

عندما تعرض إحدى السياسات خطأً، تدخل شبكة Edge على الفور في مسار الخطأ وتنشئ رسالة خطأ. هذه الرسالة التي ينشئها النظام هي عنصر JSON يتضمّن معلومتَين: errorcode وfaultstring.

على سبيل المثال:

{  
   "fault":{  
      "detail":{  
         "errorcode":"steps.extractvariables.SourceMessageNotAvailable"
      },
      "faultstring":"foo message is not available for ExtractVariable: ParseJsonResponse"
   }
}

لنحل بسرعة رسالة الخطأ هذه:

يتألف رمز الخطأ من بادئة واسم خطأ على النحو التالي: [prefix].[error_name]. في المثال أعلاه، تمثّل "steps.extractvariables" البادئة وSourceMessageNotAvailable هي اسم الخطأ. وتخبرك البادئة بنوع السياسة التي أدت إلى ظهور الخطأ. في المثال أعلاه، يمكنك معرفة أنّ سياسة استخراج المتغيّرات قد أدّت إلى ظهور الخطأ، واسم الخطأ هو SourceMessageNotAvailable.

يحتوي faultstring على وصف للخطأ. وتتضمن سلسلة الخطأ عادةً أدلة لمساعدتك في العثور على المشكلة المحددة التي تسببت في الخطأ، مثل اسم السياسة أو اسم متغير لم يتم حله أو ما ساهم في حدوث الخطأ. على سبيل المثال، في رسالة الخطأ أعلاه، يمثّل "foo" اسم متغيّر رسالة لم يتم حله ومُشار إليه في السياسة، و"ParseJsonResponse" هو اسم السياسة التي أدّت إلى ظهور الخطأ.

المتغيّرات الخاصة بأخطاء السياسة

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

المتغيّر fault.name

عند عرض سياسة لخطأ، فإنّها تضبط متغيّر التدفق fault.name على الجزء error_name من رمز الخطأ (كما هو موضّح في القسم السابق). ومن الشائع جدًا تقييم هذا المتغيّر لتنفيذ قواعد الخطأ بشكل مشروط.

في ما يلي مثال على قاعدة خطأ تختبر قيمة fault.name:

<faultrule name="VariableOfNonMsgType"<>/faultrule><FaultRule name="Source Message Not Available Fault">
    <Step>
        <Name>AM-CustomErrorMessage</Name>
        <Condition>(fault.name Matches "SourceMessageNotAvailable") </Condition>
    </Step>
</FaultRule>

يُرجى العِلم أنّه عندما تؤدي السياسة إلى ظهور خطأ، يتم دائمًا ضبط المتغيّر fault.name على اسم الخطأ.

المتغيّر [prefix].[policy_name].failed

إلى جانب fault.name، يتحقّق المطوّرون عادةً من علامة [prefix].[policy_name].failed التي يتم ضبطها على "صحيح" أو "خطأ" عند تنفيذ سياسة. في قواعد الخطأ، ستحتاج إلى التحقق لمعرفة ما إذا كانت القيمة true، أي للتحقّق من حدوث خطأ ما. في ما يلي كيفية إنشاء شرط يتحقّق من علامة [prefix].[policy_name].failed. للتحقّق من هذا المتغيّر بشكل صحيح، عليك معرفة أمرَين:

  • اسم السياسة التي تطّلِع عليها. هذه هي قيمة سمة name للسياسة، وليس الاسم المعروض. يتم تضمين هذه السمة دائمًا في ملف XML الخاص بتعريف السياسة.
  • بادئة خاصة بنوع السياسة التي تتحقق منها. (سنشرح أدناه كيفية العثور على البادئة).

للتوضيح، إليك مثال آخر على قاعدة الخطأ. لاحِظ في الشرط الخارجي كيفية تكوين اسم المتغيّر [prefix].[policy_name].failed. في هذه الحالة، تكون البادئة extractvariables واسم السياسة هو ParseJsonResponse. في هذه الحالة، لن يتم تنفيذ قاعدة الخطأ إلا إذا كان هذا المتغيّر صحيحًا. إليك نصيحة: بما أنّ قواعد الأعطال يمكن أن تحتوي على خطوات متعددة، يُعدّ هذا النمط طريقة رائعة لتنظيم قواعد الأعطال في مجموعات .

<faultrule name="VariableOfNonMsgType"></faultrule><FaultRule name="Extract Variable Faults">
    <Step>
        <Name>AM-CustomErrorMessage</Name>
        <Condition>(fault.name Matches "SourceMessageNotAvailable") </Condition>
    </Step>
    <Condition>(extractvariables.ParseJsonResponse.failed = true) </Condition>
</FaultRule>

لمحة عن متغيّرَي error وmessage

لا يتوفّر المتغيّر error إلا في مسار الخطأ لوكيل . يمكنك الحصول على معلومات مفيدة من متغيّر الخطأ، مثل رسالة الخطأ ورمز الحالة وعبارة السبب وما إلى ذلك. نمط التنسيق لمتغير الخطأ هو:

error.[error_component] = [value]

على سبيل المثال:

error.message = "request message is not available for ExtractVariable: ParseJsonResponse بوصة

و

error.status.code = "500"

يتوفّر المتغيّر message أيضًا في مسار الخطأ ويمكن استخدامه لأغراض مشابهة مثل المتغيّر error. المتغيّر message خاص لأنّه سياقي. في تدفق الطلب، يتصرف هذا العنصر كمتغيّر طلب، وفي تدفق الاستجابة، يمكن استخدامه للحصول على قيم الاستجابة أو ضبطها. إذا كنت تريد معرفة المزيد من المعلومات، اطّلِع على حالات استخدام متغيّرات الرسائل.

يُرجى الرجوع إلى مرجع المتغيّرات للحصول على معلومات عن جميع متغيّرات Edge، بما في ذلك error و message.