معيار معالجة الأخطاء في MuleSoft
معالج أخطاء عالمي جاهز للإنتاج يوفر الاتساق والوضوح التشغيلي واستجابات سهلة الاستهلاك عبر واجهات برمجة تطبيقات النظام والعمليات والتجربة.
1. مشكلة التصنيف المفقود
تتسبب معالجة الأخطاء غير المتسقة عبر المئات من واجهات برمجة التطبيقات في احتكاك تشغيلي هائل. وبدون إطار عمل موحد، يتلقى مستهلكو واجهة برمجة التطبيقات هياكل JSON للأخطاء غير متوقعة، وتفتقر فرق الدعم إلى سياق الارتباط الحاسم اللازم لتصنيف المشكلات عبر البنى الهرمية، ويضيع المطورون الوقت في إعادة كتابة منطق إعادة المحاولة بشكل صريح وتعيينات حالة HTTP لكل مشروع جديد.
2. مبادئ التصميم الأساسية
- السياق الأساسي: يُنتج كل خطأ، سواء كان انتهاء مهلة HTTP أو تعطل DataWeave، نفس البنية القطعية الدقيقة JSON التي تحتوي على
correlationId، وerrorCode، ومصفوفة منdetailsالحبيبية. - نموذج العرض المزدوج: يتم تطهير استجابات واجهة برمجة التطبيقات الخارجية بشدة لإخفاء نقاط نهاية البنية التحتية الداخلية، في حين تلتقط أدوات إلحاق السجل الداخلية حمولات وتفاصيل تقنية عالية الجودة لاستكشاف أخطاء المستوى 2 وإصلاحها بسرعة.
- لا تكرر نفسك (DRY): يمسك معالج أخطاء عام واحد 95% من أخطاء HTTP القياسية ومشكلات التوصيل والتوجيه تلقائيًا، مما يزيل ترميز XML الضخم من مسارات التكامل الفردية.
- التوافق مع معايير HTTP: يحول محرك التعيين الصارم نماذج المجال المجردة إلى رموز حالة HTTP المتوافقة مع معيار RFC (على سبيل المثال، تعيين فشل
BUSINESSإلى 422 كيان غير قابل للمعالجة، وتجاوز 500 ساذجة).
كتالوج الرموز الموحد
يصنف هذا المعيار الأخطاء بصرامة لتسريع التجاوب مع الحوادث دون المطالبة بمهارات تحليل السجلات من فرق دعم الطبقة الأولى. تقوم التطبيقات المخصصة بتنسيق الأخطاء مثل [PREFIX]-[HTTP_STATUS]-[UNIQUE_ID].
- VAL-400-001 (Schema Validation)
- BUS-422-001 (Business Rule Flaw)
- AUT-401-002 (Invalid Token)
- DCT-504-001 (Gateway Timeout)
- SYS-500-001 (Execution Panic)
- UNX-500-001 (Unhandled Default)
مثال على حمولة مُطهرة
لاحظ كيف يتم إخفاء هوية downstreamSystem في سيناريو انتهاء مهلة محاكى 504 بدافع الحذر، ولكن يبقى المرجع المُدعم مرتبطًا بشكل صريح بمعرف الارتباط من أجل التتبع.
{
"timestamp": "2023-11-20T08:40:01.112Z",
"correlationId": "4f1c9800-8773-11ee-b9d1-0242ac120002",
"applicationName": "sap-customer-system-api",
"apiLayer": "System",
"error": {
"code": "DCT-504-001",
"category": "DOWNSTREAM_TIMEOUT",
"message": "Gateway Timeout. An underlying system failed to respond.",
"userMessage": "We are currently experiencing delays processing your request.",
"downstreamSystem": null,
"retryable": true,
"supportReference": "CORR-4f1c9800-8773-11ee-b9d1-0242ac120002",
"details": []
}
}