𝗬𝗼𝘂𝗿 𝗔𝗽𝗲𝘅 𝗠𝗶𝗴𝗵𝘁 𝗥𝗲𝘁𝘂𝗿𝗻 𝗙𝗲𝘄𝗲𝗿 𝗥𝗲𝗰𝗼𝗿𝗱𝘀 𝗶𝗻 𝗦𝘂𝗺𝗺𝗲𝗿 '𝟮𝟲
Salesforce Summer '26 (API v67.0) Apex میں ایک بڑی تبدیلی لاتا ہے۔ یہ تبدیلی بغیر کسی ایرر (error) کے آپ کے کوڈ کے نتائج کو تبدیل کر سکتی ہے۔
برسوں سے، Apex ڈیفالٹ کے طور پر system mode میں چلتا رہا ہے۔ اس کا مطلب یہ تھا کہ SOQL، SOSL، اور DML صارف کی اجازت (user permissions) اور شیئرنگ رولز (sharing rules) کو نظر انداز کر دیتے تھے۔ آپ کا کوڈ ان صارفین کو ڈیٹا دکھا سکتا تھا جنہیں اسے نہیں دیکھنا چاہیے تھا۔
API v67.0 میں، ڈیفالٹ بدل جاتا ہے۔ ڈیٹا بیس آپریشنز اب user mode میں چلتے ہیں۔
v67.0 میں کیا تبدیلیاں آتی ہیں:
• SOQL، SOSL، اور DML ڈیفالٹ کے طور پر user permissions اور sharing rules کو نافذ کرتے ہیں۔ • وہ کلاسز جن میں sharing declaration نہیں ہے، اب ڈیفالٹ کے طور پر "with sharing" ہو جائیں گی۔ • "WITH SECURITY_ENFORCED" کو ہٹا دیا گیا ہے۔ اس کے بجائے آپ کو "WITH USER_MODE" استعمال کرنا ہوگا۔ • Triggers ہمیشہ system mode میں چلتے ہیں۔
یہ تبدیلی آپ کی کلاس کے API ورژن سے منسلک ہے۔ آپ کی پرانی کلاسز تب تک ویسی ہی رہیں گی جب تک آپ انہیں 67.0 پر اپ گریڈ نہیں کر لیتے۔ یہ آپ کو مائیگریشن (migration) کو کنٹرول کرنے کی اجازت دیتا ہے۔
ان خاموش مسائل سے ہوشیار رہیں:
- کوئریز (queries) میں کم ریکارڈز: ایک کوئری 500 کے بجائے 40 قطاریں (rows) واپس کر سکتی ہے کیونکہ صارف کے پاس رسائی (access) نہیں ہے۔ اس سے غلط ٹوٹل اور خراب رپورٹس بنتی ہیں۔
- کمپائلیشن ایررز (Compilation errors): نئی ورژن پر "WITH SECURITY_ENFORCED" کمپائل ہونے میں ناکام رہے گا۔
- انٹیگریشن کی ناکامی: انٹیگریشن صارفین خودکار کاموں (automated jobs) کے لیے درکار ڈیٹا تک رسائی کھو سکتے ہیں۔
- شیئرنگ میں تبدیلیاں: وہ کلاسز جو sharing declaration نہ ہونے پر انحصار کرتی تھیں، اب شیئرنگ کو نافذ کریں گی۔
محفوظ طریقے سے مائیگریٹ کیسے کریں:
- اپنے کوڈ کا جائزہ لیں: "WITH SECURITY_ENFORCED" اور بغیر sharing declaration والی کلاسز تلاش کریں۔
- Sandbox میں ٹیسٹ کریں: پہلے کنٹرولرز (controllers) اور REST endpoints جیسی زیادہ خطرے والی کلاسز کو اپ ڈیٹ کریں۔
- System.runAs() استعمال کریں: صرف پاس ہونے والے ٹیسٹ پر بھروسہ نہ کریں۔ ڈیٹا کی نظر آنے کی صلاحیت (visibility) چیک کرنے کے لیے محدود صارفین کے ساتھ ٹیسٹ کریں۔
- سوچ سمجھ کر فیصلہ کریں: "SYSTEM_MODE" یا "without sharing" صرف اسی وقت استعمال کریں جب آپ کے پاس کوئی خاص وجہ ہو۔
ابھی یہ تبدیلیاں کرنے سے بعد میں پروڈکشن (production) میں خاموش بگ (bugs) سے بچا جا سکتا ہے۔
اختیاری لرننگ کمیونٹی: https://t.me/GyaanSetuAi