10. Provider از نوع گزینههای اختیاری
Provider از نوع OptionalOptions برای نگهداری دادههای پایه انتخابی استفاده میشود؛
یعنی مجموعههایی مانند ماههای سال، نوع درخواست، وضعیت، دستهبندی یا هر لیست کنترلی دیگری که
تیم پیادهسازی میخواهد یکبار تعریف کند و سپس در چند نقطه از Form Builder از همان منبع استفاده شود.
در این سناریو لازم نیست مشتری برای هر فرم یا هر فیلد Selective دوباره دیتای پایه وارد کند.
Selective،
استفاده میشود. هدف این است که داده پایه بهصورت متمرکز تعریف شود و فرمها فقط مصرفکننده آن باشند.
10.1. ساختار Option Group و Option
مدل این قابلیت دو بخش اصلی دارد: «گروه گزینهها» و «گزینههای داخل گروه». گروه، ظرف منطقی مجموعه است و Optionها رکوردهای واقعی قابل انتخاب هستند.
| مفهوم | جدول | کاربرد |
|---|---|---|
| Option Group / گروه گزینه | dbo.OptionsGroup |
رکورد گروه و هویت مجموعه انتخابی را نگهداری میکند؛ برای مثال گروه «ماههای سال». هر Provider از نوع گزینههای اختیاری به یک مجموعه/گروه قابل استفاده تبدیل میشود. |
| Option / گزینه | dbo.Options |
رکوردهای واقعی داخل گروه را نگهداری میکند؛ مانند «فروردین»، «اردیبهشت»، «خرداد» و ... این رکوردها همان مقادیری هستند که در فیلد Selective به کاربر نمایش داده میشوند. |
dbo.OptionsGroupگروه: ماههای سال ←
dbo.Optionsفروردین / اردیبهشت / خرداد / ... ← Selective در Form Builder
10.2. فیلدهای مهم هر Option
در UI مدیریت گزینهها، برای هر رکورد اطلاعاتی مانند Id، Code، Title و در صورت نیاز وابستگی به گزینه دیگر دیده میشود. نقش این مقادیر از دید مصرف در فرم به شکل زیر است:
| فیلد | نقش | نکته اجرایی |
|---|---|---|
Id |
شناسه Identity رکورد Option |
هنگام انتخاب یک گزینه در فیلد Selective، مقدار واقعی ذخیرهشده بهعنوان
Value همان شناسه Identity رکورد گزینه از dbo.Options است.
|
Title |
عنوان قابلخواندن گزینه | معمولاً متن انسانی گزینه است؛ مانند «فروردین» یا «اردیبهشت» و میتواند در UI بهعنوان متن نمایشی استفاده شود. |
Code |
کلید کاربردی و تحت کنترل تیم پیادهسازی | Code را خود تیم پیادهسازی تعیین میکند تا علاوه بر Id دیتابیسی، یک کلید پایدار و قابل اتکا در اختیار داشته باشد. این کلید برای Lookup، Query، گزارش و سناریوهایی که نیاز به مقدار ثابت و قابل ایندکس دارند مناسب است و در صورت نیاز میتواند در نمایش/Display نیز مورد استفاده قرار گیرد. |
| وابستگی به گزینه | ساخت گزینههای وابسته | برای سناریوهای وابسته، یک Option میتواند به Option دیگری وابسته شود؛ نمونه رایج آن لیستهای سلسلهای/وابسته است. |
Id گزینه است.
Code یک کلید کاربردی است که توسط تیم پیادهسازی تعریف میشود تا در منطق کسبوکار،
گزارشگیری یا Queryها به یک شناسه پایدار و قابل اتکا دسترسی داشته باشیم.
10.3. اتصال به Selective در Form Builder
پس از ساخت Provider، در Form Builder میتوان آن را بهعنوان Data Source یک فیلد Selective انتخاب کرد.
در این اتصال، رکورد انتخابشده از dbo.Options مبنای مقدار فیلد خواهد بود و
Id گزینه بهعنوان Value ذخیره میشود. ستون نمایشی نیز بر اساس تنظیم فیلد و داده Provider تعیین میشود؛
در سناریوهای معمول از عنوان خوانا استفاده میشود و در صورت نیاز Code نیز میتواند در نمایش یا منطق مصرف شود.
10.4. چرا Code را خودمان تعریف میکنیم؟
شناسه Id برای ارتباط دیتابیسی مناسب است، اما یک Identity وابسته به رکورد دیتابیس است.
در مقابل، Code را تیم پیادهسازی آگاهانه تعیین میکند تا یک کلید کسبوکاری ثابت و قابل اعتماد داشته باشد.
برای مثال ممکن است عنوان نمایشی در آینده تغییر کند، اما Code ثابت بماند و Queryها، Ruleها و گزارشها بر اساس همان کلید پایدار کار کنند.
به همین دلیل Code برای سناریوهای جستوجو، Index و Integration داخلی ارزشمند است.
10.5. استفاده در Report Designer
از آنجا که دادههای این نوع Provider در جداول مشخص ذخیره میشوند، در Report Designer نیز میتوان مستقیماً از آنها برای گزارشگیری استفاده کرد:
| جدول | کاربرد در گزارش |
|---|---|
dbo.OptionsGroup |
دریافت اطلاعات گروهها و مجموعههای گزینهای |
dbo.Options |
دریافت رکوردهای Option، Id، Code، Title و اطلاعات وابستگی هر گزینه |
بنابراین اگر یک فرم مقدار Id گزینه را ذخیره کرده باشد، در Query/Report میتوان با استفاده از رابطه موجود در Schema
به dbo.Options متصل شد و Title یا Code متناظر را در گزارش نمایش داد.
در گزارشهایی که نیاز به اطلاعات گروه نیز دارند، dbo.OptionsGroup هم وارد Query میشود.
dbo.Options و dbo.OptionsGroup است.
برای نوشتن Join، ستون رابطه را از Schema همان استقرار انتخاب کنید؛ سند روی نام ستون Foreign Key حدس نمیزند.
10.6. مثال اجرایی: ماههای سال
در نمونه تصاویر، یک Provider با عنوان «ماههای سال» ساخته شده است. گروه، مجموعه ماهها را مشخص میکند و هر ماه یک Option مستقل با Id، Code و Title خود است. نتیجه نهایی Provider همان لیستی است که در Selective قابل استفاده خواهد بود.
10.7. الگوی پیشنهادی استفاده
dbo.OptionsGroup گروهها را نگهداری میکند و dbo.Options گزینههای واقعی را.
در Form Builder، Selective به این Provider متصل میشود و Id گزینه بهعنوان Value ذخیره میگردد.
Code کلید کاربردی و تحت کنترل تیم پیادهسازی است، Relation/FK میتواند بهصورت خودکار تنظیم شود،
و همین ساختار در Report Designer نیز برای نمایش Title/Code و تحلیل داده قابل استفاده است.