كيفية إصلاح CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY في عمليات نشر Salesforce

رفضت قاعدة تحقق أو مشغّل (trigger) أو تدفق (flow) في المؤسسة المستهدفة إدراج أو تحديث سجل أثناء التحقق من صحة النشر.

يظهر أثناء: تنفيذ اختبارات Apex كجزء من عملية نشر أو تحقق

المعنى

يُعد CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY خطأ DML عامًا يصدره Salesforce عندما يرفض مشغّل (trigger) أو قاعدة تحقق أو أتمتة عملية في المؤسسة المستهدفة سجلًا ما. يظهر غالبًا أثناء تنفيذ اختبارات Apex، لأن النشر إلى الإنتاج أو تشغيل التحقق يُنفذ اختباراتك دائمًا مقابل مكدس الأتمتة الفعلي للمؤسسة المستهدفة.

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

التشخيص

الأسباب الشائعة

قاعدة التحقق ترفض بيانات الاختبار
لا يفي مصنع بيانات اختبار Apex بمتطلبات قاعدة تحقق نشطة فقط في المؤسسة المستهدفة.
فشل الآثار الجانبية للأتمتة
ينفّذ مشغّل أو تدفق عملية DML تصطدم بحد تنظيمي (governor limit) أو بسجل مقفل أثناء تشغيل الاختبار.
تكوين خاص بالبيئة مفقود
تفتقر المؤسسة المستهدفة إلى إعداد مخصص (custom setting) أو نوع سجل افتراضي أو تكوين آخر تعتمد عليه الأتمتة.

الحل

  1. اقرأ نص الخطأ الكامل، وليس الرمز فقط
    افتح نتيجة النشر واقرأ ما يلي CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY، إذ يُلحق Salesforce رسالة قاعدة التحقق أو المشغّل المحددة التي تحدد الفشل الفعلي.
  2. أدرج التكوين المطلوب أولًا
    انشر الإعدادات المخصصة أو البيانات الوصفية المخصصة أو أنواع السجلات الافتراضية التي تحتاجها الأتمتة قبل تشغيل الاختبارات التي تعتمد عليها.
  3. اعزل الأتمتة المتسببة في الفشل
    عطّل مؤقتًا أو تجاوز المشغّل أو التدفق المحدد في scratch org للتأكد من الأتمتة التي ترفض السجل.
من واقع الاستخدام

إزاي Serpent بتمنع ده

يُشغّل Serpent AI اختبارات Apex الخاصة بك مقابل المؤسسة المستهدفة الفعلية قبل النشر الحقيقي، بحيث يظهر أي سجل مرفوض كقاعدة تحقق أو مشغّل محدد بالاسم، لا كخطأ عام. طالع مكتبة أخطاء نشر Salesforce.

الـ metadata والبيانات في مسار نشر واحد داخل Serpent

الوقاية

ابنِ مصانع بيانات اختبار Apex بما يتوافق مع قواعد تحقق شبيهة بالإنتاج
احتفظ بمصنع بيانات اختبار مشترك يفي بكل قاعدة تحقق نشطة، بحيث ترث الاختبارات الجديدة بيانات متوافقة بدلًا من بناء سجلات يدويًا تتجاهل الحالات الحدية.
انشر تبعيات التكوين ضمن المهمة نفسها للأتمتة التي تحتاجها
اجمع الإعدادات المخصصة والبيانات الوصفية المخصصة وأنواع السجلات الافتراضية مع المشغّل أو التدفق الذي يقرؤها، حتى لا تصل إلى المؤسسة المستهدفة بترتيب خاطئ.
تحقق مقابل نسخة مطابقة للمؤسسة المستهدفة قبل إصدار الإنتاج
نفّذ عملية نشر للتحقق فقط (check-only) على sandbox كاملة تعكس قواعد التحقق والأتمتة الخاصة بالإنتاج، قبل نافذة الإصدار الفعلية.
أسئلة شائعة

CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY، بالشرح

هل تُخبرني رسالة الخطأ بقاعدة التحقق التي فشلت؟
غالبًا نعم. يُلحق Salesforce نص الخطأ الخاص بقاعدة التحقق أو المشغّل بعد رمز CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY، لذا اقرأ ما بعد الرمز نفسه.
لماذا يفشل النشر هنا بينما ينجح الاختبار نفسه في sandbox التطوير الخاصة بي؟
غالبًا ما تختلف قواعد التحقق والتدفقات والإعدادات المخصصة بين sandbox التطوير الشخصية والمؤسسة المستهدفة. قارن الأتمتة النشطة على الكائن المحدد بين البيئتين.
هل يمكن أن يكون هذا خطأً برمجيًا في Salesforce بدلًا من تكوين مؤسستي؟
نادرًا. يعكس هذا الرمز في الغالب رفض الأتمتة الخاصة بالمؤسسة المستهدفة للسجل كما هو مصمم؛ عامله أولًا كتعارض في التكوين أو بيانات الاختبار.

ابدأ مجانًا. دون بطاقة ائتمان، دون تثبيت، ودون التزام.

الإعداد في أقل من 15 دقيقة. لا حاجة لتوظيف مختص DevOps.

هل تريد معرفة كيف يمكنكم الشحن أسرع قبل البدء؟ لنتحدث

بدون التزام.