فیلد انتخابی — Selective
فیلد Selective در Form Builder GraphBPMS برای انتخاب یک یا چند مقدار از مجموعهای از دادهها بهکار میرود. دادههای این فیلد میتوانند بهصورت لیست ثابت داخل خود فرم تعریف شوند یا از منبع داده مانند Query، Stored Procedure، Function، گزینههای اختیاری یا وبسرویس دریافت شوند. تنظیمات این فیلد علاوه بر منبع داده، نحوه نمایش، مرتبسازی، عنوان نمایشی، چندانتخابی، کلید خارجی، مدیریت رکوردهای منبع، بارکد/QR، پارامترهای منبع داده و شرط اجرای منبع را پوشش میدهد.
در طراحی این فیلد، انتخاب درست منبع داده اهمیت زیادی دارد؛ چون محل نگهداری داده، امکان استفاده مجدد در فرمهای دیگر، قابلیت تغییر توسط کاربر نهایی، سرعت بارگذاری و امکان ایجاد ارتباط پایگاه دادهای را تحت تأثیر قرار میدهد.
انتخاب و طراحی منبع داده
Selective میتواند دادههای قابل انتخاب را از دو مسیر اصلی دریافت کند: لیست ثابت یا منبع داده. مسیر منبع داده برای اتصال Field به Providerها و منابع اطلاعاتی استفاده میشود.
لیست ثابت برای دادههای مخصوص همان فرم
با انتخاب لیست ثابت، پنجره مدیریت لیست باز میشود. برای هر رکورد دو مقدار اصلی تعریف میشود:
- مقدار: ارزشی که بهعنوان Value گزینه نگهداری میشود.
- عنوان: متنی که به کاربر نمایش داده میشود.
پس از افزودن رکوردها، امکان ویرایش یا حذف آنها نیز از همین محیط وجود دارد.
نکته: دادههای لیست ثابت در Provider یا منبع داده ذخیره نمیشوند. این مقادیر در ساختار ذخیرهسازی خود فرم، یعنی XML فرم، نگهداری میشوند. به همین دلیل افزودن، حذف و ویرایش رکوردهای لیست ثابت فقط از طریق Studio فرمساز انجام میشود.
منبع داده برای دریافت رکوردها از Provider
در حالت منبع داده، Field به یک Provider متصل میشود. مدیریت منبع داده ابتدا امکان استفاده از یک منبع موجود یا ایجاد منبع داده را در اختیار طراح قرار میدهد.
منبع میتواند از پایگاه داده همین سامانه یا، در صورت دسترسی، از سایر پایگاههای داده رابطهای تأمین شود. روشهای مطرحشده برای دریافت داده عبارتاند از:
- Query
- Stored Procedure
- Function
- گزینههای اختیاری
- سایر گزینههای قابل انتخاب در مدیریت منبع داده
برای دریافت داده از API نیز میتوان از روشهای REST یا WSDL استفاده کرد.
برای جزئیات ساخت و مدیریت Providerها، مرجع مرتبط منابع اطلاعاتی و Provider است.
گزینههای اختیاری؛ Lookup مرکزی GraphBPMS
گزینههای اختیاری برای مواردی مناسب است که یک مجموعه داده باید در چند فرم یا چند فیلد انتخابی بهصورت مشترک استفاده شود. مشابه لیست ثابت، برای هر گزینه میتوان مقدار و عنوان تعریف کرد. علاوه بر آن، میتوان برای گزینهها گروه تعیین کرد؛ برای نمونه در سناریوهای وابستهای مانند استان و شهر.
دادههای گزینههای اختیاری در یک Lookup مرکزی با جدول Options در پایگاه داده GraphBPMS نگهداری میشوند. در صورت Bind کردن Selective به این منبع، ارتباط کلید خارجی Field با جدول Options نیز بهصورت خودکار برقرار میشود.
استفاده از Query روی جدولهای دیگر و فرمهای پایه
دادههای Selective میتوانند با Query از جدولهای دیگر دریافت شوند؛ حتی جدولهایی که برای فرمهای ساختهشده در Form Builder ایجاد شدهاند. این قابلیت امکان ساخت فرم پایه را فراهم میکند: یک فرم بهعنوان محل نگهداری دادههای پایه ایجاد میشود و Selective در فرمهای دیگر دادههای جدول همان فرم پایه را دریافت میکند.
این الگو زمانی مفید است که داده پایه باید مشترک باشد و کاربر نهایی نیز، در صورت داشتن دسترسی لازم، بتواند رکوردهای آن را تغییر دهد، اضافه کند یا حذف کند.
انتخاب مناسب بین لیست ثابت، گزینههای اختیاری و Query
| روش | چه زمانی مناسب است؟ | محل/ماهیت داده | تغییر توسط کاربر نهایی | نکته شاخص |
|---|---|---|---|---|
| لیست ثابت | گزینهها فقط برای همان فرم هستند، در فرمهای دیگر نیاز نیستند و قرار نیست تعداد یا عنوان آنها توسط کاربر تغییر کند | داخل ساختار فرم | خیر؛ مدیریت از Studio | برای تعداد زیاد Selectiveها میتواند سرعت بارگذاری را افزایش دهد، چون برای دریافت گزینهها نیازی به ارتباط با پایگاه داده ندارد |
| گزینههای اختیاری | یک کدینگ مشترک برای کل سامانه و چند فرم لازم است، ولی تغییر روزمره آن توسط کاربر نهایی نیاز نیست | Lookup مرکزی Options | بهصورت معمول از مسیر فرم کاربر نهایی تغییر نمیکند | ارتباط کلید خارجی Selective با Options بهصورت خودکار برقرار میشود |
| Query و سایر Providerهای مبتنی بر جدول | داده باید مشترک باشد و در عین حال کاربر نهایی نیاز به افزودن، ویرایش یا حذف داده پایه دارد | جدول منبع، از جمله جدول فرم پایه | در صورت اعطای دسترسی به فرم منبع | مزایای Lookup مشترک را دارد و امکان مدیریت داده از طریق فرم پایه را نیز فراهم میکند |
مثال — گزینههای اختیاری: «میزان تحصیلات» مانند دیپلم و لیسانس میتواند کدینگ مشترک کل سامانه باشد؛ در چند فرم استفاده شود و معمولاً نیاز به تغییر آن توسط کاربر نهایی وجود نداشته باشد.
مثال — فرم پایه و Query: «گروه اقلام» در یک سیستم انبارداری به کدینگ مشترک نیاز دارد، اما رکوردهای آن ممکن است توسط کاربر نهایی اضافه یا کم شوند. در این حالت ایجاد فرم پایه و دریافت داده آن از طریق Query مناسب است.
تنظیم نمایش و مدلهای انتخاب
بعد از تعیین منبع داده، باید مشخص شود کدام ستون نقش کلید را دارد، چه متنی به کاربر نمایش داده شود و Field با چه مدل نمایشی در فرم ظاهر شود.
مقدار پیشفرض، کلید و عنوان
- مقدار پیشفرض: برای انتخاب خودکار یک گزینه در شروع کار استفاده میشود. مقدار واردشده باید کلید یکی از رکوردهایی باشد که در مرحله منبع داده به Field متصل شدهاند.
- فیلد کلید (Value): ستون کلیدی یا مقدار واقعی گزینه از رکوردهای منبع داده است. برای نمونه در فهرست کاربران میتواند UserID باشد.
- فیلد عنوان (Text): ستونی است که بهعنوان متن نمایشی گزینه استفاده میشود؛ برای نمونه UserName.
هفت مدل نمایش Selective
لیست ساده با امکان جستجو: فهرست ساده گزینهها همراه قابلیت جستجو.
نمونه «لیست ساده با امکان جستجو». لیست چندستونه (جدول): با بازکردن Field، دادهها به شکل Grid نمایش داده میشوند.
نمونه «لیست چندستونه (جدول)». لیست چندانتخابی (TagBox): امکان نمایش انتخابها به شکل Tag را فراهم میکند.
نمونه «لیست چندانتخابی (TagBox)». لیست تکانتخابی افقی: گزینهها بهصورت RadioList افقی نمایش داده میشوند.
نمونه «لیست تکانتخابی افقی». لیست تکانتخابی عمودی: گزینهها بهصورت RadioList عمودی نمایش داده میشوند.
نمونه «لیست تکانتخابی عمودی». لیست پیشرفته با امکان جستجو: فهرست در یک نمای پیشرفته همراه ناحیه جستجو باز میشود.
نمونه «لیست پیشرفته با امکان جستجو». نمایش بخشبندیشده: گزینهها در قالب بخشهای جداگانه نمایش داده میشوند.
نمونه «نمایش بخشبندیشده».
مرتبسازی دادهها
انتخاب ستون جهت مرتبسازی تعیین میکند فهرست منبع داده بر اساس کدام ستون مرتب شود. جهت مرتبسازی نیز میتواند صعودی یا نزولی باشد.
رفتارهای تکمیلی نمایش
- قابلیت HTML Render: اگر داده نمایشی شامل Tagهای HTML باشد، خروجی آن Tag در Selective رندر میشود؛ برای نمونه میتوان دادهای شامل Tag تصویر (img) داشت.
- نمایش بهصورت چندخطی: اگر متن نمایشی طولانی باشد، با توجه به عرض Field در چند خط شکسته میشود.
- انتخاب اولین گزینه: اگر مقدار پیشفرض تعیین نشده باشد، اولین Index فهرست هنگام Load فرم بهصورت انتخابشده نمایش داده میشود.
- حذف آیتمهای تکراری: اگر یک رکورد به هر دلیل بیش از یک بار در داده Bindشده وجود داشته باشد، موارد تکراری بهصورت خودکار حذف میشوند.
- فراخوانی رخداد بعد از تغییر مقدار (onChangeValue): پس از تغییر آیتم Selective میتوان یک رخداد را فراخوانی کرد؛ این رخداد میتواند همان رخداد تعریفشده برای یک دکمه دیگر در فرم باشد.
ساخت عنوان نمایشی سفارشی
گاهی یک ستون منفرد برای عنوان گزینه کافی نیست. در تنظیمات قالب نمایشی میتوان عنوانی ساخت که از ترکیب چند مقدار تشکیل شود. برای نمونه در فهرست کاربران، کلید میتواند UserID باشد اما عنوان از ترکیب نام و نام خانوادگی ساخته شود.
در این ترکیب میتوان از موارد زیر استفاده کرد:
- ستونهای منبع داده، مانند UserFirstName و UserLastName
- مقدار ثابت
- مقدار سیستمی
- Query String
- پارامتر فرم
خروجی این فرمول در لیست گزینهها بهعنوان عنوان نمایش داده میشود.
نمایش عبارت بالا در حالت انتخابشده: با فعالکردن این گزینه، پس از انتخاب رکورد از فهرست کشویی نیز همان فرمول عنوان حفظ میشود و مقدار انتخابشده با همان قالب نمایش داده میشود.
چندانتخابی و یکپارچگی پایگاه داده
ذخیره چند مقدار
در مدلهایی که امکان انتخاب بیش از یک مورد فعال میشود، از جمله حالتهای مطرحشده برای لیست چندستونه و لیست چندانتخابی (TagBox)، مقادیر انتخابشده بهصورت جداشده با کاما ذخیره میشوند؛ برای نمونه:
1,2,3,4
در این حالت فیلد متناظر در پایگاه داده از نوع متنی مانند nvarchar است و امکان ایجاد کلید خارجی مستقیم با جدول منبع برای این مقدار چندتایی وجود ندارد. کنترل امکان انتخاب بیش از یک مورد در مدلهای نمایشی مربوط در دسترس قرار میگیرد.
ارتباط با یک جدول دیگر (Foreign Key)
وقتی حالت چندانتخابی فعال نیست، میتوان بین ستون Selective و جدول منبع داده یک کلید خارجی برقرار کرد. برای این کار ابتدا جدول منبع و سپس ستون موردنظر برای کلید خارجی انتخاب میشود.
اگر منبع داده گزینههای اختیاری باشد، این ارتباط با جدول Options بهصورت خودکار برقرار میشود.
محدودیت: کلید خارجی زمانی قابل ایجاد است که داده از جدولهای پایگاه داده خود GraphBPMS یا جدولهای فرمهای ساختهشده در Form Builder تأمین شود. اگر داده از جدولهای یک پایگاه داده دیگر یا از API دریافت شود، این قابلیت در دسترس نیست.
نکته مهم: برای ساختار داده منسجمتر، در حالت تکانتخابی ارتباط و کلید خارجی Selective را با جدول منبع مشخص کنید. این ارتباط باعث میشود رکورد منبعی که در داده فرم استفاده شده است در سطح پایگاه داده بدون رعایت رابطه ایجادشده حذف نشود.
مدیریت رکوردهای منبع از داخل Selective
اگر داده Selective از جدول یک فرم ساختهشده در Form Builder دریافت شود، میتوان امکانات افزودن، ویرایش و حذف آیتم را در خود Field فعال کرد.
برای این تنظیم، فرم موردنظر و کلید رکورد منبع معرفی میشوند.
رفتار هر عملیات به این صورت است:
- درج: با انتخاب دکمه افزودن، فرم منبع باز میشود. پس از درج رکورد جدید، آن رکورد در Selective قابل نمایش و انتخاب است.
- ویرایش: با استفاده از کلید رکورد، فرم منبع در حالت ویرایش باز میشود و آیتم انتخابی قابل تغییر است.
- حذف: رکورد مربوط میتواند از دادههای فرم منبع حذف شود.
شرط دسترسی: کاربر نهایی زمانی میتواند از این عملیات استفاده کند که دسترسی لازم، یعنی رونوشت مربوط به فرم منبع یا فرم تأمینکننده داده، برای او وجود داشته باشد.
کنترل نحوه نمایش Popup فرم منبع
وقتی درج یا ویرایش فعال است، فرم منبع در یک Popup باز میشود. اندازه Popup میتواند از اندازههای مشخص استفاده کند یا بهصورت سفارشی با عرض، ارتفاع و واحد اندازهگیری تنظیم شود.
انتخاب با بارکد یا QR
با فعالکردن خواندن از بارکد، انتخاب یک گزینه در Selective میتواند از طریق اسکن بارکد یا QR انجام شود. پس از خواندن بارکد یا QR، گزینه متناظر در Field انتخاب میشود.
پارامترهای منبع داده
اگر Selective از یک Provider پارامتریک استفاده کند، مقدار هر پارامتر باید هنگام اجرای منبع داده مشخص شود. این بخش امکان مقداردهی پارامتر را با چند روش فراهم میکند و در صورت نیاز میتوان چند جزء را در قالب یک عبارت با هم ترکیب کرد.
در مثال زیر پارامتر Query با نام IsActive در نظر گرفته شده است.
روشهای مقداردهی پارامتر
مقدار ثابت: یک مقدار ثابت بهعنوان ورودی پارامتر در نظر گرفته میشود.
سیستمی: مقدار از اطلاعات سیستمی انتخاب میشود؛ مانند کاربر جاری، نقش جاری، تاریخ جاری و سازمان جاری در حالت چندسازمانی.
مقادیر سیستمی قابل انتخاب برای پارامتر. مثال: اگر منبع داده فهرست کاربران، پارامتر UserID داشته باشد، میتوان آن را به کاربر جاری متصل کرد تا هر کاربر فقط رکورد مربوط به خودش را در آن فهرست دریافت کند.
کنترل: پارامتر به یک Field دیگر در همان فرم متصل میشود.
اتصال پارامتر منبع داده به یک کنترل دیگر فرم. مثال: منبع داده شهرها میتواند پارامتری به نام استان داشته باشد و این پارامتر به Selective دیگری که فهرست استانها را نگه میدارد متصل شود. در نتیجه مقدار Field استان، ورودی منبع داده شهرها را تعیین میکند.
Query String: اگر URL فرم دارای Query String باشد، مقدار آن میتواند بهعنوان ورودی پارامتر استفاده شود.
پارامتر فرم: اگر فرم از مبدأ دیگری فراخوانی شده و پارامتر فرم برای آن مقداردهی شده باشد، همان مقدار میتواند ورودی Provider باشد.
اسکریپت: برای مقداردهی سفارشی، محیط JavaScript باز میشود و میتوان مقدار پارامتر را با یک اسکریپت ساده تولید کرد؛ برای نمونه ترکیب مقدار دو Field، یک پارامتر فرم و یک مقدار جاری.
انتخاب روش «اسکریپت» برای مقداردهی سفارشی پارامتر. محیط JavaScript برای تولید مقدار سفارشی پارامتر. شناسه رکورد فرم: وقتی فرم در حالت نمایش یا ویرایش باز میشود، شناسه رکورد فرم میتواند به پارامتر منبع داده متصل شود.
ساخت مقدار پارامتر بهصورت ترکیبی
مقداردهی پارامتر محدود به یک منبع واحد نیست. میتوان یک عبارت ترکیبی ساخت؛ برای نمونه ترکیب مقدار ثابت + Query String + مقدار Fieldهای دیگر و سایر اجزای قابل انتخاب در سازنده عبارت.
پارامتر متفاوت برای نمایش و ویرایش
گزینه استفاده به منظور نمایش / ویرایش اجازه میدهد مقداردهی یک پارامتر در حالت نمایش یا ویرایش با حالت درج متفاوت باشد.
مثال مهم — کاربر غیرفعال: در زمان درج، ممکن است IsActive=true اعمال شود تا فقط کاربران فعال در Selective دیده شوند. اما در حالت نمایش یا ویرایش، اگر رکوردی قبلاً با کاربری ثبت شده باشد که اکنون غیرفعال است، اعمال همان فیلتر باعث میشود مقدار قبلی قابل Bind و نمایش نباشد. بنابراین برای حالت نمایش/ویرایش میتوان مقداردهی متفاوتی برای پارامتر در نظر گرفت تا رکورد قبلی همچنان قابل نمایش باشد.
مثال مهم — عنوان Selective در لیست دادههای فرم: اگر فرم به کاربر نهایی دسترسی داده شده باشد و او فهرست رکوردهای فرم را مشاهده کند، انتظار میرود عنوان Selective نیز در ستون مربوط نمایش داده شود. وقتی منبع این Field پارامتریک است، پارامترهای لازم برای حالت نمایش باید طوری مقداردهی شوند که عنوان رکورد انتخابشده قابل دریافت و نمایش باشد.
مقداردهی پارامتر برای استفاده آفلاین
اگر فرم در تسکهای موبایلی GraphBPMS استفاده شود و فرم باید بهصورت آفلاین Load شود، دادههای موردنیاز Selective باید در پایگاه داده اپلیکیشن موبایل ذخیره شوند. برای یک منبع پارامتریک، مقداردهی آفلاین باید طوری تنظیم شود که دادههای لازم برای استفاده آفلاین قابل دریافت و نگهداری باشند.
تنظیمات این حالت شامل موارد زیر است:
- انتخاب ستون متناظر در حالت آفلاین: چون در حالت آفلاین دسترسی مستقیم به جدول یا منبع اصلی وجود ندارد، ستونی که متناظر با پارامتر شرطی است باید در خروجی منبع داده وجود داشته باشد. پارامتر به همان ستون خروجی متصل میشود. برای نمونه اگر پارامتر IsActive در شرط استفاده میشود، ستون IsActive باید در خروجی Query نیز حضور داشته باشد تا شرط در حالت آفلاین قابل اعمال باشد.
- نوع مقداردهی: مقدار پارامتر در حالت آفلاین میتواند ثابت باشد یا از مقادیر سیستمی مانند کاربر جاری و نقش جاری استفاده کند.
- مقدار در حالت آفلاین: مقدار نهایی پارامتر برای این وضعیت تعیین میشود.
برای تنظیم و رفتار تسکهای آفلاین، مرجع مرتبط تسکهای موبایلی / مدیریت کار همراه است.
شرط اجرای منبع داده
در بخش تنظیم شرط اجرا میتوان شرطی تعریف کرد که اجرای Provider منبع داده به تحقق آن وابسته باشد.
اگر شرط تعریفشده برقرار باشد، Provider اجرا و داده Selective تأمین میشود. اگر شرط برقرار نباشد، اجرای Provider و تأمین داده این Field انجام نمیشود.
آموزشهای مرتبط
- منابع اطلاعاتی و Provider — برای ساخت و مدیریت Query، Stored Procedure، Function، گزینههای اختیاری و وبسرویسهایی که بهعنوان منبع Selective استفاده میشوند.
- تسکهای موبایلی / مدیریت کار همراه — برای سناریوهایی که فرم و دادههای Selective باید در حالت آفلاین روی موبایل در دسترس باشند.