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

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

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

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

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

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

مثلاً:

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

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

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

تحتوي errorstring على وصف للخطأ. تتضمن سلسلة الخطأ عادةً أدلة لمساعدتك في العثور على مشكلة معيّنة تسببت في حدوث الخطأ، مثل اسم السياسة أو اسم متغيّر لم يتم حلّه أو أي عنصر ساهم في حدوث الخطأ. على سبيل المثال، في رسالة الخطأ أعلاه، تبيّن أنّ "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، والتي يتم ضبطها على "صحيح" أو "خطأ" عند تنفيذ السياسة. في قواعد الأخطاء، ننصحك بالتحقّق مما إذا كان الخطأ صحيحًا أم لا. إليك كيفية إنشاء شرط شرطي للتحقّق من علامة [prefix].[policy_name].failed. للتحقّق من هذا المتغيّر بشكل صحيح، يجب معرفة أمرَين:

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

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

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

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