
Andrew Hanna

Andrew Hanna

الإجابة المختصرة: حدد مين يملك كل حقل قبل أول إصدار، لأن الاختيار ده صعب ترجع فيه. خلّي القيم اللي العملاء هيعدّلوها subscriber editable، وخلّي القيم اللي الكود بتاعك معتمد عليها upgradeable، واعتبر قيم قوائم الاختيار وأسماء السجلات المحمية دائمة، واختبر كل ترقية على مؤسسة فيها بالفعل تعديلات العملاء.
ترقية custom metadata بتكسر المشترك بواحدة من ثلاث طرق:
الثلاثة راجعين لقرارات التغليف اللي اتاخدت قبل أول إصدار، مش لأمر النشر نفسه. علشان كده الطريق الآمن بيبدأ من تعريف النوع.
كل حقل في custom metadata type مُغلَّف بياخد واحد من ثلاث إعدادات، زي ما بتشرح وحدة Trailhead من Salesforce عن حماية custom metadata:
القاعدة العملية: لو العميل ممكن في يوم يحب يظبط القيمة، خليها subscriber editable واقبل إنك مش هتقدر تصححها في مؤسسته تاني. لو القيمة بتحدد سلوك الكود بتاعك، خليها upgradeable. واستخدم locked بس للقيم اللي لازم ما تتغيرش أبدًا. خد بالك إن حقول subscriber editable على السجلات المحمية بتتقفل بعد الإصدار، فخطط للحماية والإدارة مع بعض.
في الحزم المُدارة من الجيل التاني، سجلات custom metadata اللي بتتشال بتتعلّم deprecated لو كانت ظاهرة لمؤسسة المشترك، وبتتحذف نهائيًا لو مش ظاهرة، حسب دليل Salesforce لإزالة مكونات البيانات الوصفية من حزم 2GP. المكونات الـ deprecated بتفضل موجودة لحد ما مسؤول المشترك يحذفها، والـ Setup Audit Trail بيسجّل اللي الترقية شالته. ونتيجتين لده:
لو بتبني نموذج الحزم من الأول، دليلنا عن تغيير أدوات Salesforce DevOps من غير ما تكسر خط النشر بيوضح إزاي تحافظ على تاريخ الحزمة وإنت بتغيّر الأداة.
Metadata.Operations.enqueueDeployment وكلاس
Metadata.DeployCallback، وSalesforce بتحدد عدد عمليات النشر دي اللي
ممكن تكون في الطابور في نفس الوقت.
لما فرعين يعدّلوا نفس سجل .md-meta.xml، اتبع دليلنا عن
حل تعارضات دمج البيانات الوصفية في Salesforce من غير ما حد يخسر شغله.
أيوه، بس بدرجة أقل. الفرق الداخلية كمان بتنشر سجلات custom metadata بين الـ sandboxes والإنتاج، ونشر سجل من المصدر بيكتب فوق النسخة اللي في المؤسسة الهدف. لو المسؤولين بيظبطوا السجلات مباشرة في الإنتاج، أول نشر جاي من Git هيرجّعها بهدوء. يا إما تخلي Git المكان الوحيد اللي السجلات دي بتتغير فيه، يا إما تشيل السجلات اللي يملكها المسؤولين من النشر. دليلنا عن إزاي المسؤولين ينشروا من غير ما يلمسوا Git بيوضح إزاي تديهم مسار متتبَّع بدل التعديل المباشر.
Serpent هي منصة Salesforce DevOps من تطوير Tekunda. بتنشر custom metadata عبر نفس خط النشر المُراجَع زي باقي البيانات الوصفية، مع مراجعة كود بالذكاء الاصطناعي وموافقة بشرية قبل الإنتاج، علشان أي تغيير في الإدارة أو قوائم الاختيار ياخد عين تانية قبل ما يتطلق. قارن خطط Serpent، أو تصفح أدلة SF Guides عن التغليف وCI/CD.
هل ترقية الحزمة تكتب فوق قيم custom metadata الخاصة بالمشتركين؟
في الحقول الـ upgradeable بس. ترقيات الحزمة عمرها ما بتكتب فوق قيم المشترك عدّلها في حقل subscriber editable.
هل أقدر أحذف قيمة من قائمة اختيار في custom metadata type مُغلَّف؟
لا. بعد الإصدار تقدر تضيف قيم، لكن ما تقدرش تحذف أو تعطّل القيم الموجودة.
هل يقدر Apex يحدّث سجلات custom metadata؟
أيوه، بس مش بـ DML. استخدم Metadata.Operations.enqueueDeployment، اللي
بينشر بشكل غير متزامن وبيرجّع النتيجة من خلال كلاس callback.
مين بيطوّر Serpent؟
Tekunda هي اللي بتطوّر Serpent، منصة Salesforce DevOps فيها CI/CD ومراجعة كود بالذكاء الاصطناعي وعمليات نشر بموافقة بشرية.
بدون التزام.