/
/
پیشخوان «مدیریت گزارشها» در سامانه GraphBPMS، بستر یکپارچه و متمرکز برای مشاهده، دستهبندی، ایجاد و راهبری کلیه گزارشهای سازمانی است. از طریق این بخش، مدیران سیستم و طراحان فرایند میتوانند ساختار انواع گزارشهای تحلیلی را مدیریت نموده، گزارشهای جدید ایجاد کنند، وضعیت قالبهای خروجی فعال را ارزیابی کرده و عملیات حیاتی نظیر بازبینی بلادرنگ دادهها، تنظیم مجوزهای دسترسی، واگذاری رونوشت سازمانی، تعریف اعلانهای شرطی، کپی، ویرایش و حذف گزارش را انجام دهند.
در معماری پلتفرم GraphBPMS، ماژولها نقشهای تفکیکشدهای در گردش داده دارند:
گزارشها میتوانند اطلاعات را در قالبهای پنجگانه زیر رندر کنند:
برای ورود به بخش مدیریت گزارشها، پس از ورود با حساب کاربری دارای دسترسی راهبری سیستم:
با باز شدن صفحه، پیشخوان مدیریت گزارشها با جدول رکوردهای گزارشهای موجود و نوار ابزار بالای صفحه ظاهر میشود.
جهت طراحی و راهاندازی یک گزارش تازه، روی دکمه آبیرنگ ایجاد گزارش در گوشه بالا سمت چپ جدول کلیک کنید. با این اقدام، سامانه محیط طراحی استودیو (ReportBuilderStudio) را فراخوانی میکند.
در بدو ورود به استودیو، دو گام اصلی در اختیار طراح قرار میگیرد:
چرخه کامل تعریف پرووایدر، فرمدهی ستونهای خروجی و فیلترهای کوئری در آموزش [REPORT-02] استودیوی ساخت گزارش تشریح شده است.
جدول اصلی مدیریت گزارشها شامل ستونهای زیر است:
| نام ستون | شرح و عملکرد |
|---|---|
| کد | شناسه عددی یکتا که سیستم بهصورت خودکار به هر گزارش تخصیص میدهد. |
| عنوان | نام نمایشی و سازمانی گزارش. |
| قالبهای گزارش | آیکنهای پنجگانه نشاندهنده خروجیهای فعال (جدول، نمودار، نقشه GIS، گالری و چاپ). |
وجود نشانگر عددی رنگی روی هر یک از آیکنهای ستون «قالبهای گزارش»، بیانگر تعداد تمپلیتهای طراحیشده و آماده بهرهبرداری برای آن قالب خاص است.
جهت بهینهسازی فضای جدول، آیکنهای عملیاتی هر گزارش در حالت پیشفرض مخفی هستند. با بردن نشانگر ماوس (Hover) روی هر سطر، نوار ابزار عملیاتی متناظر با همان ردیف فعال و نمایان میگردد (در محیط راستبهچپ، در سمت چپ ردیف ظاهر میشود).
با کلیک بر روی نخستین آیکن از سمت راست (نماد چشم)، پیشنمایش مستقیم گزارش بدون ورود به محیط طراحی استودیو باز میشود:
سازوکار «رونوشت گزارش (Report Transcript / Dispatch)» یکی از ارکان بنیادی انتشار داده و تفکیک امنیتی در پلتفرم GraphBPMS است. این قابلیت منحصراً برای کاربران نهایی (End-Users) و ذینفعان عملیاتی سازمان طراحی شده است تا بتوانند دادههای پردازششده و خروجیهای معتبر گزارش را در محیطهای بهرهبرداری دریافت نمایند.
هدف از اعطای رونوشت، توانمندسازی پرسنل و کاربران اداری جهت مشاهده، جستوجو، فیلترگذاری و چاپ رکوردهای گزارش در پورتال کاربری «لیست گزارشها» یا میزکارهای سازمانی (Dashboards) است. کاربر دریافتکننده رونوشت، صرفاً «مصرفکننده داده (Data Consumer)» است و هیچگونه مجوز یا امکانی برای ورود به محیط پیچیده طراحی گزارشساز، کدنویسی کوئریهای SQL، تغییر فیلدها یا دستکاری متادیتای سیستم نخواهد داشت.
جهت مشاهدهٔ فرآیند کامل تفویض رونوشت به انواع قالبها (قالب چاپ، نقشه مکانی GIS، نمودارهای تحلیلی BI)، نحوهٔ مشاهده در پورتال «لیست گزارشها» و استقرار ماژول گزارشات در داشبوردهای سازمانی، به بخش ۱۶: توزیع گزارشها در میزکارهای سازمانی و سامانه رونوشت مراجعه فرمایید.
تنظیم پارامترها در هنگام اعطای رونوشت، صرفاً یک فیلترگذاری ساده نیست؛ بلکه یک ابزار فوقالعاده مهم، استراتژیک و سناریومحور مدیریتی است. در سازمانها اغلب یک گزارش مادر و جامع طراحی میشود (مانند «لیست پروژهها و اقلام») که کل اطلاعات سازمان را در بر دارد. اما هنگام توزیع رونوشت میان مدیران و پرسنل، اهداف مدیریتی متعددی مطرح است: تفکیک پروژهها بر اساس دپارتمانها، محدود کردن کارتابل هر کارمند به وظایف خودش، یا نمایش دادههای متناسب با نقش سازمانی. سامانه رونوشت این امکان را به مدیر میدهد که بدون دستکاری در گزارش اصلی، انواع سناریوهای مدیریتی را با دقت بالا پیادهسازی کند.
به جای طراحی دهها گزارش موازی و مشابه برای تکتک واحدها، یک گزارش جامع ساخته میشود و سپس با تنظیم هوشمند پارامترها در پنجره رونوشت، اطلاعات برای هر کاربر یا نقش به شکلی سفارشی، فیلترشده و حتی کاملاً پنهان ارسال میگردد.
برای پیادهسازی گامبهگام این قابلیت، سناریوی واقعی زیر را در چرخه پروژههای سازمان دنبال میکنیم:
CategoryId) بر اساس یک لیست ثابت سهگانه مقداردهی شده است:
user-1: مدیر پروژههای عمرانیuser-2: مدیر پروژههای ITuser-3: مدیر پروژههای تأسیساتاگر با هر یک از این سه کاربر وارد سامانه شویم، مشاهده میکنیم که در پیشخوان «لیست گزارشها» هیچ دسترسی به گزارش «لیست پروژهها و اقلام» ندارند. هدف ما اعطای رونوشت به این مدیران است، به طوری که هر مدیر دقیقاً و منحصراً پروژههای مربوط به دپارتمان خود را مشاهده کند و امکان دستکاری فیلتر یا مشاهده پروژههای دپارتمانهای دیگر را نداشته باشد.
گام ۱: باز کردن پنجره رونوشت گزارش «لیست پروژهها و اقلام»: از جدول مدیریت گزارشها، بر روی آیکن رونوشت سطر گزارش کلیک میکنیم. همانطور که در تصویر زیر مشاهده میشود، پنجره رونوشت باز شده و در نیمه پایینی آن، بخشی با عنوان «عنوان پارامتر عنوان منبع داده: لیست پروژهها (master)» نمایان است. سیستم به صورت خودکار پارامترهای ورودی تعریفشده روی منبع داده (در اینجا CategoryId) را شناسایی کرده و در جدول پارامترها قرار داده است:
گام ۲: باز کردن دراپداون انتخاب کاربر گیرنده: رادیوباتن «کاربر» را انتخاب کرده و بر روی کادر انتخاب کاربر کلیک میکنیم تا فهرست کاربران فعال باز شود:
گام ۳: انتخاب مدیر پروژههای عمرانی (user-1): چکباکس سطر user-1 (مدیر پروژههای عمرانی) را فعال میکنیم تا به عنوان گیرنده رونوشت مشخص شود:
گام ۴: توقف قبل از کلیک روی «ارسال رونوشت» و رجوع به جدول پارامترها: پس از بسته شدن دراپداون و قرار گرفتن نام کاربر در کادر گیرنده، بر روی دکمه «ارسال رونوشت» کلیک نمیکنیم! در این مرحله به بخش پایینی تنظیمات رونوشت یعنی جدول پارامترهای منبع داده گزارش رجوع میکنیم:
گام ۵: ورود به حالت ویرایش سطر پارامتر (Inline Edit): با کلیک بر روی آیکن مداد سبز رنگ (ویرایش ✏️) در ستون عملیات سطر CategoryId، سطر فعال شده و دکمههای ذخیره (💾 دیسکت آبی) و انصراف (❌ ضربدر قرمز) آشکار میشوند:
گام ۶: بررسی منوی کشویی «نوع مقدار»: با کلیک بر روی دراپداون ستون «نوع مقدار»، چهار منبع استراتژیک برای مقداردهی به پارامتر نمایان میگردد:
| نام ستون | نوع کنترل / المان UI | عملکرد و کاربرد در گزارش |
|---|---|---|
| عنوان پارامتر | برچسب متنی (ReadOnly) | نام پارامتر ورودی متصل به کوئری پایگاه داده منبع گزارش (در این مثال پارامتر CategoryId). لازم به ذکر است که یک گزارش میتواند انواع و اقسام پارامترهای مختلف عددی، متنی، تاریخی و انتخابی را در این جدول داشته باشد. |
| قابل تنظیم | چکباکس (Checkbox) | مشخصکننده امکان تغییر فیلتر توسط کاربر نهایی. اگر تیک آن فعال باشد، کاربر میتواند مقدار ارسالی ما را در پنل فیلترهای گزارش تغییر دهد. اما اگر تیک آن برداشته شود، پارامتر برای کاربر به صورت فقطخواندنی (ReadOnly) قفل شده و کاربر به هیچ عنوان قادر به تغییر آن نخواهد بود. |
| نوع مقدار | منوی کشویی (Dropdown) | منبع تغذیه مقدار پارامتر را مشخص میکند و شامل چهار گزینه است:
• مقدار ثابت: طراح یک مقدار ایستا و مشخص (مثلاً عدد ۱) را در ستون بعدی تایپ میکند. • کاربر جاری: مقدار پارامتر به صورت خودکار با شناسه کاربری (User ID) کاربر لاگینکرده پر میشود. • تاریخ جاری: مقدار پارامتر با تاریخ جاری شمسی سیستم مقداردهی میشود. • نقش جاری: مقدار پارامتر با شناسه نقش فعال کاربر در سشن جاری مقداردهی میشود. |
| مقدار | کادر ورودی / خودکار | اگر گزینه «مقدار ثابت» انتخاب شده باشد، طراح مقدار دلخواه خود را در این فیلد وارد میکند. اما اگر یکی از «مقادیر سیستمی» (کاربر جاری، تاریخ جاری، نقش جاری) انتخاب شود، این فیلد به صورت خودکار از ناحیه کاربری پر شده و کاملاً غیرفعال (Disabled) و خاکستری میشود. |
| قابل نمایش | چکباکس (Checkbox) | کنترل نحوه رندر پارامتر در پورتال کاربری. اگر تیک آن فعال باشد، فیلد پارامتر در هدر گزارش به کاربر نمایش داده میشود. اما اگر تیک آن برداشته شود (Hidden)، پارامتر کاملاً از دید کاربر پنهان میگردد؛ این ویژگی فوقالعاده کاربردی برای زمانهایی است که مایل نیستیم کاربر نهایی اصلاً متوجه شود که در حال مشاهده گزارشی فیلترشده و محدودشده است. |
| عملیات | آیکنهای اکشن سطر | شامل آیکن ذخیره (💾 دیسکت آبی) برای ثبت و تثبیت تنظیمات این پارامتر، انصراف (❌ ضربدر قرمز) برای لغو ویرایش و بازگشت به تنظیمات قبلی، و ویرایش (✏️ مداد سبز) برای ورود مجدد به حالت تغییر مقادیر. |
گام ۷: مقداردهی پارامتر CategoryId با گزینه عمرانی و ذخیره سطر: مقدار 1 (متناظر با پروژههای عمرانی) را در کادر مقدار وارد میکنیم. در این مرحله، بر روی آیکن ذخیره (💾 دیسکت آبی) کلیک مینماییم تا مقدار و تنظیمات پارامتر در حافظه موقت پنجره تثبیت گردد:
گام ۸: ارسال نهایی رونوشت فیلترشده به کاربر: پس از ذخیره شدن سطر پارامتر، سطر مجدداً به حالت عادی بازمیگردد و دکمه «ارسال رونوشت» در بالای پنجره فعال میگردد. با کلیک بر روی این دکمه، رونوشت به همراه فیلتر مقیدشده برای مدیر پروژههای عمرانی ثبت میشود:
گام ۹: انتقال خودکار به تب «رونوشتهای ارسال شده»: سامانه به صورت خودکار بلافاصله پس از ثبت موفق رونوشت، شما را به تب «رونوشتهای ارسال شده» هدایت میکند. در این تب، رکورد تفویضشده به مدیر پروژههای عمرانی به زیبایی در جدول قابل رؤیت است:
گام ۱۰: ورود با حساب مدیر پروژههای عمرانی (user-1) و بررسی پورتال کاربری: اکنون از حساب ادمین خارج شده و با حساب کاربری user-1 (مدیر پروژههای عمرانی) وارد سامانه میشویم. با ورود به منوی «لیست گزارشها» (مسیر localhost/ReportList)، مشاهده میکنیم که گزارش «لیست پروژهها و اقلام» به پیشخوان این مدیر اضافه شده است:
گام ۱۱: اجرای گزارش و بررسی مقداردهی خودکار پارامتر: با کلیک بر روی آیکن آبیرنگ «مشاهده» (چشم)، پنجره پیشنمایش گزارش باز میشود. به محض باز شدن پنجره، مشاهده میکنید که بدون نیاز به هیچگونه دخالت یا انتخاب توسط کاربر، فیلد «دستهبندی موضوعی» به صورت خودکار مقدار «عمرانی» را به خود گرفته است:
همانطور که دیدید، چون تیک «قابل نمایش» را زده بودیم، کاربر پارامتر دستهبندی را در بالای گزارش میبیند و چون تیک «قابل تنظیم» را هم زده بودیم، کاربر میتواند این پارامتر را باز کرده و در صورت تمایل تغییر دهد.
اما اگر اصلاً نخواهیم کاربر این پارامتر را ببیند و نخواهیم بتواند آن را دستکاری کند، کافی است دوباره به مودال رونوشت برگردیم، وارد تب «رونوشتهای ارسال شده» شویم، رکورد کاربر را در حالت ویرایش باز کنیم و این دو تیک را برداریم تا گزارش بدون نمایش فیلتر و کاملاً قفلشده در اختیار کاربر قرار گیرد.
گام ۱۲: بازگشت به پنجره رونوشت و کلیک بر روی ویرایش رکورد کاربر: برای ویرایش تنظیمات رونوشت مدیر پروژههای عمرانی، مجدداً از منوی مدیریت گزارشها روی آیکن رونوشت سطر گزارش کلیک کرده و وارد تب دوم، یعنی «رونوشتهای ارسال شده» میشویم. در این جدول، بر روی آیکن ویرایش سبز رنگ (✏️ - مشخصشده با کادر قرمز) در سطر کاربر کلیک میکنیم:
گام ۱۳: ورود به تب «ویرایش رونوشت» و انتخاب ویرایش سطر پارامتر: سامانه به تب «ویرایش رونوشت» سوئیچ میکند. نام مدیر پروژههای عمرانی به صورت ثابت نمایش داده شده است. اکنون برای تغییر دسترسی پارامتر، بر روی آیکن ویرایش سبز رنگ (✏️ - مشخصشده با کادر قرمز) در سطر پارامتر CategoryId کلیک میکنیم:
گام ۱۴: برداشتن تیکهای «قابل تنظیم» و «قابل نمایش» و ذخیره سطر: اکنون تیکهای دو ستون «قابل تنظیم» و «قابل نمایش» را برمیداریم (هر دو چکباکس با کادر قرمز مشخص شدهاند) و سپس بر روی آیکن ذخیره سطر (💾) کلیک میکنیم:
توجه داشته باشید که حتی اگر صرفاً تیک «قابل نمایش» را بردارید، پارامتر دیگر در هدر گزارش به کاربر نشان داده نمیشود؛ و زمانی که پارامتر اصلاً در صفحه کاربر ظاهر نشود، کاربر عملاً امکانی هم برای تغییر دادن یا دستکاری آن نخواهد داشت.
گام ۱۵: ثبت نهایی با کلیک روی دکمه «ویرایش رونوشت»: پس از ذخیره شدن سطر در جدول پایین، بر روی دکمه آبیرنگ «ویرایش رونوشت» در بالای پنجره سمت چپ کلیک میکنیم تا ویرایش رونوشت نهایی و در پایگاهداده ذخیره گردد:
گام ۱۶: نتیجه در پورتال کاربر (مخفی شدن کامل پارامتر ورودی): اکنون مجدداً به حساب کاربری مدیر پروژههای عمرانی بازمیگردیم و در منوی «لیست گزارشها» روی آیکن «مشاهده» گزارش کلیک میکنیم. همانطور که در تصویر زیر به وضوح مشخص است، در بخش «جستجو در فرم» هیچ فیلتری نمایش داده نمیشود! فیلد دستهبندی موضوعی کاملاً از دید کاربر پنهان شده و با فشردن دکمه «پیشنمایش»، صرفاً پروژههای عمرانی در جدول بارگذاری میشوند:
گام ۱۷: بارگذاری خروجی جدول و ارزیابی دادهها: اکنون بر روی دکمه آبیرنگ «پیشنمایش» کلیک میکنیم. همانطور که در تصویر زیر به زیبایی مشاهده میشود:
1 را نشان میدهند.سناریویی که در این کارگاه عملی بررسی کردیم، صرفاً یک نمونه با یک پارامتر بود؛ اما این ابزار یک راهکار راهبردی مدیریتی برای پیادهسازی انواع سناریوهای سازمانی است:
بر خلاف سامانه رونوشت که منحصراً برای کاربران نهایی و مصرفکنندگان خروجی طراحی شده است، «سطوح دسترسی گزارش (Report Permissions)» منحصراً در اختیار کاربران توسعهدهنده سیستم (System Developers / Report Designers)، تحلیلگران فرآیند و راهبران فنی قرار میگیرد تا بتوانند ساختار فنی و چرخه مهندسی گزارش را هدایت کنند.
درک دقیق مرز عملیاتی میان این دو مفهوم، از نقض حریم امنیتی دادهها و تداخل وظایف در سازمان جلوگیری میکند:
| محور مقایسه | سامانه رونوشت گزارش (Transcript) | سطوح دسترسی گزارش (Permissions) |
|---|---|---|
| جامعه هدف | کاربران نهایی (End-Users)، کارشناسان اداری و مدیران مصرفکننده اطلاعات | کاربران توسعهدهنده سیستم (System Developers)، تحلیلگران داده و طراحان گزارش |
| پورتال و مدخل ورودی | پورتال کاربری «لیست گزارشها» (ReportList) و ابزارکهای میزکار سازمانی (Dashboards) |
ماژول تخصصی «گزارشساز (Report Builder)» در زیرمنوی راهبر سیستم و استودیوی طراحی |
| دامنه اختیارات | صرفاً مشاهده رکوردهای پردازششده، اعمال فیلترهای جستوجو، دریافت خروجی اکسل و چاپ | کدنویسی کوئریهای SQL، افزودن فیلدهای محاسباتی، دیزاین قالبها، کپی و حذف دائم گزارش |
| امنیت ساختار داده | عدم دسترسی به معماری پایگاه داده، شروط SQL، متادیتا یا تنظیمات استودیو | اختیار کامل تغییر مدل داده، پیکربندی پارامترهای دیتابیس و اعطای اختیارات به سایرین |
با کلیک روی آیکن چرخدنده یا کلید، پنجره مجوزها باز میشود. پس از انتخاب کاربر یا نقش هدف، میتوان مجوزهای تفکیکشده دهگانه زیر را به کاربر توسعهدهنده اختصاص داد:
| عنوان مجوز | دامنه عملکرد تخصصی توسعهدهنده |
|---|---|
| مشاهده گزارش | اجازه باز کردن گزارش در پیشخوان گزارشساز و بررسی پیشنمایش دادهها. |
| ویرایش گزارش | اجازه ورود به استودیوی طراحی گزارشساز جهت ویرایش کوئریهای SQL، شروط و فیلدها. |
| کپی گزارش | امکان تولید نسخه همزاد و مستقل از گزارش به همراه تمام ساختارها و قالبهای متصل. |
| رونوشت گزارش | اختیار تفویض رونوشت خروجی گزارش به کاربران نهایی و نقشهای سازمانی. |
| تنظیمات سطوح دسترسی | اختیار تعیین و اصلاح مجوزهای دهگانه توسعه برای سایر کاربران و نقشها. |
| مدیریت قالب چاپ (Stimulsoft) | طراحی، ویرایش و تنظیم قالبهای چاپی رسمی گزارش در محیط استودیو پرینت Stimulsoft. |
| مدیریت قالب نمودار | ایجاد، پیکربندی و ویرایش انواع نمودارهای آماری، تحلیلی و روندنما (Chart Studio). |
| مدیریت قالب گالری | تنظیم، چیدمان و ویرایش کارتهای تصویری، آلبوم و قالبهای چندرسانهای (Media Gallery). |
| مدیریت قالب مکانمحور (GIS) | پیکربندی لایههای نقشه، عوارض مکانی، پینها و اطلاعات جغرافیایی (GIS Map Studio). |
| حذف گزارش | اختیار حذف دائم گزارش و کلیه تعاریف وابسته به آن از پایگاهداده سازمان. |
در موتور گزارشساز GraphBPMS، چهار استودیوی مستقل برای طراحی قالبهای تخصصی تعبیه شده است: «قالب چاپ (Stimulsoft)»، «قالب نمودار»، «قالب گالری» و «قالب مکانمحور (GIS)». پیشوند «چاپ» منحصراً ویژه قالبهای چاپی Stimulsoft است و سایر قالبها ماهیت مستقل تحلیلی، بصری و مکانی دارند.
پس از اعطای مجوزهای توسعه، کاربر میتواند از منوی اصلی وارد بخش گزارشساز شده و گزارش را مدیریت نماید.
با کلیک روی آیکن کپی، یک نسخه کامل و همزاد از گزارش (شامل منابع داده، فیلدها و قالبها) با شناسه مستقل ساخته میشود:
۳. گزارش جدید با کد مجزا ثبت میشود. جهت دسترسی و ویرایش توسط کاربر مقصد، ثبت سطح دسترسی متناظر الزامی است.
آیکن زنگوله (اطلاعرسانی) برای گزارشها در حالت پیشفرض خاموش و غیرفعال است. به محض اینکه حداقل یک سناریوی اعلان وابسته به دادههای گزارش در سیستم پیکربندی شود، این آیکن فعال و روشن میگردد (به رنگ نارنجی تغییر حالت میدهد).
جزئیات تعریف سناریوهای اعلان، شروط و قالب پیام در بخش [REPORT-01-01] مدیریت گزارشها — Notification و اطلاعرسانی شرطی ارائه شده است.
با کلیک روی آیکن مداد سبز، گزارش مستقیماً در استودیو با ساختار .../reportBuilderStudio?id={ReportID} بارگذاری میشود تا بتوان فیلدها، اتصالات منابع داده و قالبها را بازتعریف یا اصلاح نمود.
با فشردن آیکن سطل زباله قرمز، جهت پیشگیری از خطای انسانی ابتدا دیالوگ تأیید باز میشود:
جهت سهولت مدیریت فهرست گزارشها، جعبهابزار بالای جدول امکانات کارآمدی فراهم میسازد:
.xlsx.اکنون که با کلیه مفاهیم، ستونها، عملیات ردیفی و ابزارهای پیشخوان مدیریت گزارشها آشنا شدید، در ادامه به عنوان یک کارگاه عملیاتی واقعی، سناریوی ساخت یک گزارش جامع سازمانی را از نقطه آغاز (طراحی فرمها و ایجاد منابع داده مستقل و وابسته) تا ثبت قطعی در پیشخوان مدیریت و ورود به استودیو پیادهسازی میکنیم.
در چرخه استقرار راهکارهای سازمانی در سامانه GraphBPMS، گزارشساز یک لایه تحلیلی متکی بر دادههای ثبتشده در فرمهای الکترونیک است. برای آنکه یک گزارش سازمانی بتواند بهصورت همزمان خروجیهای گرید، نمودارهای پیشرفته، تحلیلهای مکانی GIS، گالری تصاویر و اعلانهای شرطی را پوشش دهد، طراحی فرم مبنا با ساختار فیلدهای مهندسیشده اهمیتی بنیادین دارد.
در سامانه GraphBPMS، طراحی و استقرار گزارشهای ساده و مسطح تکجدولی (Flat Report) که صرفاً به یک جدول یا یک کوئری ساده متصل میشوند بسیار روان و متداول است. با این وجود، در این سناریوی عملیاتی عمداً و بهصورت کاملاً هدفمند، معماری پیشرفته و چندمخزنی Master-Detail (ارتباط دوگانه والد و فرزند) مبنا قرار گرفته است؛ زیرا این الگو تمامی جنبههای پیچیده ساخت گزارش نظیر پارامترهای ورودی شرطی، کوئریهای وابسته، تجمیع سطوح مختلف و ارتباطات رابطهای را یکپارچه پوشش میدهد. طراح یا کارشناسی که ساخت گزارش بر اساس الگوی Master-Detail را فرا گیرد، ساخت هرگونه گزارش تکجدولی ساده را با تسلط کامل و بدون کوچکترین چالش پیادهسازی خواهد کرد.
در سناریوی محوری این دانشنامه، از فرم الکترونیک «مشخصات پروژه» (موجودیت پایگاه داده GB_Project در فرمساز) به عنوان فرم والد و شناسنامه مرکزی پروژهها استفاده شده است.
جدول زیر ساختار فنی و نقش تحلیلی تکتک ستونهای فرم «مشخصات پروژه» را در گزارشساز تشریح میکند:
| نام ستون | برچسب فارسی | نوع کنترل در فرمساز | نوع داده در پایگاهداده | نقش و کاربرد در گزارشساز و استودیوها |
|---|---|---|---|---|
ProjectCode |
کد پروژه | متنی کوتاه (TextBox) | NVARCHAR(50) |
شناسه سازمانی یکتا جهت جستجو، سورت و نمایش در ستون اول گرید |
ProjectTitle |
عنوان پروژه | متنی (TextBox) | NVARCHAR(250) |
عنوان نمایشی، محور متغیر (Argument) در نمودارهای میلهای و پاپآپ نقشه |
CategoryId |
دستهبندی موضوعی | انتخابی (Selective — Static) | INT |
گروهبندی دادهها، فیلتر کشویی در نوار ابزار و تحلیل سهم در نمودار دایرهای |
StartDate |
تاریخ شروع | انتخابگر تقویم شمسی (DatePicker) | DATE / DATETIME |
فیلتر بازه زمانی تاریخ شروع پروژهها در کوئری گزارش |
DueDate |
مهلت تحویل | انتخابگر تقویم شمسی (DatePicker) | DATE / DATETIME |
سنجش سررسید پروژه و فعالسازی آلارمهای خودکار در نوتیفیکیشن شرطی |
BudgetAmount |
بودجه مصوب (ریال) | عددی (Numeric TextBox) | BIGINT |
محور مقادیر (Value) در نمودارها و محاسبه سرجمع کل بودجه (Sum Summary) |
ProgressPercent |
درصد پیشرفت | عددی با نوار پیشرفت (Range / Progress) | INT (0-100) |
بصریسازی شاخص کلیدی در نمودار عقربهای (Gauge Chart) و ردیابی وضعیت |
SitePhoto |
تصویر شاخص پروژه | بارگذاری فایل (File Upload) | XML / ARCHIVE CODE |
استخراج آدرس تصویر برای تولید کارتهای آلبومی در استودیوی گالری مدیا و درج واترمارک |
Coordinates |
موقعیت کارگاه/پروژه | کنترل نقشه جغرافیایی (Map Control) | NVARCHAR(MAX) [GeoJSON] |
تعیین نقاط مکانی، خوشهبندی پینها و مسیریابی در استودیوی نقشه (GIS) |
در طراحی فرم مشخصات پروژه، فیلد «دستهبندی موضوعی» از نوع فیلد انتخابی (Selective) پیکربندی شده و روش تأمین دیتای آن روی «لیست ثابت (Static List)» قرار گرفته است. در پنجره مودال «مدیریت لیست داده»، سه گزینه موضوعی تعریف شده است:
1: عمرانی2: IT3: تأسیساتدر مهندسی فرمها و گزارشهای سامانه GraphBPMS، طراح برای فیلدهای انتخابی با ۳ الگوی متمایز روبهرو است که انتخاب نادرست آنها معماری گزارشساز را با چالش مواجه میکند:
| روش تأمین دیتا | ماهیت فنی و ذخیرهسازی | چه زمانی باید استفاده شود؟ | مزایا در گزارشساز | محدودیتها و ملاحظات |
|---|---|---|---|---|
| ۱. لیست ثابت (Static List) |
اقلام کلید و مقدار (Key-Value) مستقیماً درون شناسنامه فرم ذخیره میشوند و نیاز به هیچ جدول کمکی ندارند. | زمانی که گزینهها محدود، ثابت، ایستا و از پیشتعیینشده باشند و در طول زمان دستخوش تغییر نشوند (مانند همین ۳ دسته اصلی پروژهها یا انواع شیفت کاری). | سرعت واکشی آنی بدون سربار پایگاهداده؛ عدم نیاز به نوشتن دستورات JOIN در کوئری گزارشساز. |
تغییر گزینهها نیازمند ویرایش فیزیکی فرم در فرمساز است؛ در دیتابیس کلید خارجی (Foreign Key) ایجاد نمیکند. |
| ۲. جدول اختیارات (Options) |
گزینهها از جدول سیستمی و یکپارچه Options سامانه بر مبنای یک شناسه گروه (Group ID) واکشی میشوند. |
زمانی که یک فهرست استاندارد، در چندین فرم و فرآیند مختلف به صورت مشترک استفاده میشود (مانند مقاطع تحصیلی، وضعیتهای تاهل، جنسیت). | یکپارچگی سراسری دادهها در پایگاهداده، پشتیبانی بومی از چندزبانی و ویرایش متمرکز مقادیر بدون تغییر فرمها. | در کوئری گزارشساز باید حتماً دستور LEFT JOIN Options O ON O.Id = T.Field نوشته شود تا متن فارسی نمایش یابد. |
| ۳. منبع داده پویا (Lookup Provider) |
گزینهها حاصل اجرای زنده یک کوئری SQL یا Stored Procedure بر روی جداول عملیاتی دیگر سیستم هستند. | زمانی که گزینهها پویا، متغیر، وابسته به شرط و دائماً در حال رشد هستند (مانند لیست پروژههای فعال، لیست کارمندان، لیست پیمانکاران طرف قرارداد). | پشتیبانی از کلیدهای خارجی واقعی (Relational FK)، امکان اعمال فیلترهای شرطی وابسته (Cascading) در فرم و گزارش. | نیاز به طراحی منبع داده مستقل در Provider Manager؛ ایجاد وابستگی و الزام به وجود ایندکس مناسب در جداول مقصد. |
هنگامی که از لیست ثابت در فرم استفاده میکنید، در کوئری منبع داده گزارشساز برای تبدیل کدهای عددی ۱، ۲ و ۳ به عناوین فارسی میتوانید از عبارت ساده CASE CategoryId WHEN 1 THEN N'عمرانی' WHEN 2 THEN N'IT' WHEN 3 THEN N'تأسیسات' END AS CategoryTitle استفاده کنید تا بدون نیاز به هیچ JOIN اضافی، ستون متنی دستهبندی با بالاترین کارایی واکشی شود.
در گزارشهای تحلیلی پیشرفته، همواره با رابطه یکبهچند (One-to-Many) میان موجودیت اصلی و اقلام زیرمجموعه روبهرو هستیم. برای نمونه، هر پروژه سازمانی دارای چندین صورتوضعیت و فاکتور هزینه است. به همین منظور، فرم الکترونیک دوم با عنوان «اقلام هزینه و صورتوضعیتها» (موجودیت پایگاه داده GB_Invoice در فرمساز) پیادهسازی شده است.
ستونهای کلیدی فرم فرزند و نقش آنها در ایجاد رابطه والد-فرزند:
GB_Project). این فیلد نقش کلید ارتباطی (Foreign Key) را ایفا نموده و رکوردهای هزینه را به شناسه پروژه متناظر مقید میکند.ترکیب فیلد کلید خارجی «شناسه پروژه والد» و فیلد «رسته هزینه» مبنای خلق گزارشهای چند سطحی و ویژگی Drill-Down در [REPORT-05] استودیوی نمودار است؛ جایی که کاربر روی میله کل بودجه یک پروژه کلیک کرده و فوراً نمودار تفکیک رستههای هزینهای (مصالح، دستمزد، تجهیزات) همان پروژه را مشاهده میکند.
ماژول گزارشساز GraphBPMS به گونهای طراحی شده است که دادههای مورد نیاز خود را مستقیماً از جداول خام پایگاهداده استخراج نمیکند، بلکه از طریق یک لایه واسط و مطمئن به نام «منابع داده» (Data Providers) تغذیه میشود. این ساختار واسط به طراحان امکان میدهد بدون وابستگی مستقیم به تغییرات فیزیکی دیتابیس، دادهها را پالایش، فرمتبندی، فیلتر و تجمیع نموده و تحویل موتور گزارش دهند.
برای ایجاد و راهبری منابع داده، از منوی عمودی سمت راست، زیرمنوی مدیریت منابع اطلاعاتی و سپس گزینه «مدیریت منابع داده» (در آدرس localhost/Provider/ProviderManager) فراخوانی میشود.
در این سناریو، پیش از ساخت کوئری سفارشی، یک منبع داده از نوع «موجودیت سیستم» (System Entity) برای جدول فرم پروژهها (GB_Project) ایجاد شده است که ساختار دادهای فرم، اتصالات فیزیکی و فیلدهای متادیتای سیستمی را استخراج مینماید:
با کلیک روی دکمه آبیرنگ «ایجاد منبع داده جدید» در بالای پیشخوان، فرآیند گامبهگام ۵ مرحلهای آغاز میشود:
در تب اول، مشخصات شناسنامهای تعیین میگردد:
Master — اطلاعات پروژهها.bpms).در تب دوم، محیط بصری طراحی کوئری (Query Designer) بارگذاری میشود. جدول مبنا یعنی GB_Project با نام مستعار P فراخوانی شده است. در اینجا یک اصل معماری بنیادین در پلتفرم GraphBPMS وجود دارد که طراحان سیستم و مدلهای هوش مصنوعی (AI / Agents) باید دقیقاً به آن تسلط داشته باشند:
به صورت کلی، در معماری پایگاه داده GraphBPMS، برای تمامی جداول تولیدشده توسط موتور فرمساز، ۹ ستون متادیتای سیستمی مشترک به صورت خودکار ایجاد و نگهداری میشوند:
| نام ستون سیستمی | نوع داده SQL | شرح و کاربرد در پلتفرم | وضعیت گزینش در کوئری منبع داده |
|---|---|---|---|
Id |
BIGINT IDENTITY |
کلید اصلی یکتای رکورد در فرم. | الزامی جهت گزینش (کلید ارتباطی Master-Detail) |
RegDate |
DATETIME |
تاریخ و زمان سیستمی ثبت اولیه رکورد. | صرفنظر (مگر در سناریوهای ممیزی و تاریخچه ثبت) |
FK_UserId |
BIGINT |
شناسه کاربر ثبتکننده اولیه رکورد. | صرفنظر (استفاده فقط در RLS / دسترسی سطری) |
FK_OrganizationId |
BIGINT |
شناسه واحد سازمانی / شعبه کاربر در زمان ثبت. | صرفنظر (استفاده در فیلتر ساختار سازمانی) |
LastModifiedFK_OrganizationId |
BIGINT |
شناسه واحد سازمانی کاربری که آخرین تغییر را اعمال کرده. | صرفنظر در گزارشهای عمومی |
FK_RoleId |
BIGINT |
شناسه پست و نقش سازمانی ثبتکننده. | صرفنظر در گزارشهای عمومی |
LastModifiedDate |
DATETIME |
تاریخ و زمان آخرین ویرایش رکورد. | صرفنظر در گزارشهای عمومی |
LastModifiedFK_UserId |
BIGINT |
شناسه آخرین کاربر ویرایشکننده. | صرفنظر در گزارشهای عمومی |
LastModifiedFK_RoleId |
BIGINT |
شناسه پست سازمانی آخرین ویرایشکننده. | صرفنظر در گزارشهای عمومی |
چرا هنگام ایجاد منابع داده در گزارشساز فقط ستونهای مورد نیاز را گزینش میکنیم و از SELECT * پرهیز میکنیم؟
SELECT بیاید به عنوان یک فیلد مجزا در استودیوی ساخت گزارش ظاهر میشود. در صورت واکشی همه ستونها (SELECT *)، استودیو با دهها کارت غیرکاربردی شلوغ شده و کاربر گمراه میگردد؛ بنابراین طراح صرفاً ستونهایی که در خروجیهای گزارش مورد نیاز است را از جدول انتخاب میکند.برای درک کامل این تفکیک و ارائه رفرنس دقیق برای تحلیلگران داده و مدلهای هوش مصنوعی (AI)، در ادامه خروجی کامل و بدون فیلتر (SELECT *) هر دو جدول مبنا نمایش داده شده است تا تفاوت میان ستونهای سیستمی خودکار و فیلدهای تجاری انتخابی ملموس باشد:
GB_Project)این جدول شامل ۹ ستون سیستمی اولیه + ۹ ستون بیزینسی فرمساز (شامل کد، عنوان، دستهبندی، تاریخها، بودجه، پیشرفت، آرشیو تصویر و موقعیت مکانی) است:
| ۹ ستون سیستمی مشترک GraphBPMS | ستونهای بیزینسی فرمساز پروژه (گزینششده برای منبع داده) | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Id | RegDate | FK_UserId | FK_OrgId | LastModOrgId | FK_RoleId | LastModDate | LastModUserId | LastModRoleId | ProjectCode | ProjectTitle | CategoryId | StartDate | DueDate | BudgetAmount | ProgressPercent | SitePhoto | Coordinates |
1 |
2026-10-04 20:31:32 | 1 | 1 | NULL | 1 | 2026-10-04 20:31:32 | NULL | NULL | PRJ-101 |
احداث پست برق ۴۰۰ کیلوولت غرب | 1 | 2026-04-04 | 2027-01-20 | 50000000000 | 65 | <Files ArchiveCode="B65F81B6..."/> |
{"type":"Point","coordinates":[51.182041,35.713987]} |
2 |
2026-10-04 20:35:39 | 1 | 1 | NULL | 1 | 2026-10-04 20:35:39 | NULL | NULL | PRJ-102 |
توسعه زیرساخت مرکز داده و اتاق سرور | 2 | 2026-04-21 | 2026-11-06 | 25000000000 | 40 | <Files ArchiveCode="119C47AB..."/> |
{"type":"Point","coordinates":[51.334047,35.757141]} |
3 |
2026-10-04 20:37:47 | 1 | 1 | NULL | 1 | 2026-10-04 20:37:47 | NULL | NULL | PRJ-103 |
بهسازی تأسیسات سرمایشی ساختمان مرکزی | 3 | 2026-05-31 | 2026-12-11 | 15000000000 | 85 | <Files ArchiveCode="8297FD7F..."/> |
{"type":"Point","coordinates":[51.537552,35.756012]} |
GB_ProjectCostItem)این جدول نیز شامل ۹ ستون سیستمی مشترک اولیه + ۶ ستون بیزینسی تعریفشده در فرم اقلام هزینه است که ستون FK_ProjectId نقش کلید خارجی به جدول پروژهها را ایفا میکند:
| ۹ ستون سیستمی مشترک GraphBPMS | ستونهای بیزینسی فرمساز اقلام هزینه (ارتباطی Master-Detail) | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Id | RegDate | FK_UserId | FK_OrgId | LastModOrgId | FK_RoleId | LastModDate | LastModUserId | LastModRoleId | FK_ProjectId | ItemTitle | CostType | InvoiceAmount | InvoiceDate | IsApproved |
4 |
2026-10-04 20:40:58 | 1 | 1 | NULL | 1 | 2026-10-04 20:40:58 | NULL | NULL | 1 |
خرید میلگرد و بتن فونداسیون | 1 (مصالح) | 1,200,000,000 | 2026-05-10 | 1 (تأییدشده) |
5 |
2026-10-04 20:40:58 | 1 | 1 | NULL | 1 | 2026-10-04 20:40:58 | NULL | NULL | 1 |
دستمزد آرماتوربندی و قالببندی فاز اول | 2 (دستمزد) | 650,000,000 | 2026-06-05 | 1 (تأییدشده) |
6 |
2026-10-04 20:40:58 | 1 | 1 | NULL | 1 | 2026-10-04 20:40:58 | NULL | NULL | 1 |
اجاره جرثقیل سنگین و پمپ بتن | 3 (تجهیزات) | 350,000,000 | 2026-07-01 | 1 (تأییدشده) |
7 |
2026-10-04 20:40:58 | 1 | 1 | NULL | 1 | 2026-10-04 20:40:58 | NULL | NULL | 2 |
خرید رکهای سرور و کابلهای فیبر نوری | 3 (تجهیزات) | 800,000,000 | 2026-05-21 | 1 (تأییدشده) |
8 |
2026-10-04 20:40:58 | 1 | 1 | NULL | 1 | 2026-10-04 20:40:58 | NULL | NULL | 2 |
خدمات مشاوره طراحی معماری امنیت شبکه | 4 (مشاوره) | 200,000,000 | 2026-06-25 | 1 (تأییدشده) |
9 |
2026-10-04 20:40:58 | 1 | 1 | NULL | 1 | 2026-10-04 20:40:58 | NULL | NULL | 3 |
خرید چیلرهای تراکمی و لولهکشی موتورخانه | 3 (تجهیزات) | 900,000,000 | 2026-07-10 | 1 (تأییدشده) |
10 |
2026-10-04 20:40:58 | 1 | 1 | NULL | 1 | 2026-10-04 20:40:58 | NULL | NULL | 3 |
دستمزد نصب و راهاندازی تأسیسات سرمایشی | 2 (دستمزد) | 300,000,000 | 2026-08-01 | 1 (تأییدشده) |
دستور کامل SQL تنظیمشده در این منبع به شرح زیر است:
SELECT
P.Id,
P.ProjectCode,
P.ProjectTitle,
P.CategoryId,
CASE P.CategoryId
WHEN 1 THEN N'عمرانی'
WHEN 2 THEN N'IT'
WHEN 3 THEN N'تأسیسات'
ELSE N'نامشخص'
END AS CategoryTitle,
FORMAT(P.StartDate, 'yyyy/MM/dd', 'fa') AS StartDateShamsi,
FORMAT(P.DueDate, 'yyyy/MM/dd', 'fa') AS DueDateShamsi,
P.BudgetAmount,
P.ProgressPercent,
P.SitePhoto,
P.Coordinates
FROM [GB_Project] P
WHERE (@CategoryId IS NULL) OR (P.CategoryId = @CategoryId)
ORDER BY P.Id;
مزایای برجسته این کوئری:
FORMAT(P.StartDate, 'yyyy/MM/dd', 'fa') مستقیماً در بانک اطلاعاتی، دادهها را به تقویم جلالی خوانا تبدیل میکند.CASE P.CategoryId ... کدهای ۱، ۲ و ۳ را بدون نیاز به هیچ JOIN اضافی به عبارات فارسی تبدیل مینماید.WHERE (@CategoryId IS NULL) OR (P.CategoryId = @CategoryId) تضمین میکند که اگر کاربر در گزارش هیچ فیلتری انتخاب نکند، تمام پروژهها لود شوند؛ اما به محض انتخاب یک دستهبندی، خروجی دقیقاً فیلتر گردد.در تب پارامترهای ورودی، پارامتر CategoryId که در شرط کوئری درج شده به صورت خودکار توسط سیستم شناسایی میشود. نوع مقداردهی روی «پویا» تنظیم شده و مقدار پیشفرض آن خالی رها میشود تا حالت اختیاری (Or Null) فعال بماند.
پیش از ذخیره قطعی، در تب تست، با کلیک روی دکمه آبیرنگ «تست پرس و جو» (در حالت خالی بودن پارامتر)، موتور اجرای کوئری فراخوانی شده و تمامی ۳ رکورد پروژه با ستونهای فرمتشده، تاریخهای شمسی و ساختارهای XML و GeoJSON بدون فیلتر بازیابی میشوند:
جدول زیر مقادیر واقعی بازیابیشده از پایگاهداده را نمایش میدهد که مبنای خروجیهای بعدی ماژول گزارشساز خواهد بود:
| Id | کد پروژه | عنوان پروژه | دسته | عنوان دسته | تاریخ شروع | مهلت تحویل | بودجه مصوب (ریال) | پیشرفت | فایل تصویر (SitePhoto) | مختصات جغرافیایی (Coordinates) |
|---|---|---|---|---|---|---|---|---|---|---|
1 |
PRJ-101 |
احداث پست برق ۴۰۰ کیلوولت غرب | ۱ | عمرانی | ۱۴۰۵/۰۱/۱۵ | ۱۴۰۵/۱۰/۳۰ | ۵۰,۰۰۰,۰۰۰,۰۰۰ | ۶۵٪ | <Files ArchiveCode="B65F81B6..." /> |
Point [51.182041, 35.713987] |
2 |
PRJ-102 |
توسعه زیرساخت مرکز داده و اتاق سرور | ۲ | IT | ۱۴۰۵/۰۲/۰۱ | ۱۴۰۵/۰۸/۱۵ | ۲۵,۰۰۰,۰۰۰,۰۰۰ | ۴۰٪ | <Files ArchiveCode="119C47AB..." /> |
Point [51.334047, 35.757141] |
3 |
PRJ-103 |
بهسازی تأسیسات سرمایشی ساختمان مرکزی | ۳ | تأسیسات | ۱۴۰۵/۰۳/۱۰ | ۱۴۰۵/۰۹/۲۰ | ۱۵,۰۰۰,۰۰۰,۰۰۰ | ۸۵٪ | <Files ArchiveCode="8297FD7F..." /> |
Point [51.537552, 35.756012] |
در تب «لیست خروجیها (فیلدها)»، موتور پردازشگر منبع داده تمامی ۱۱ فیلد استخراجشده از بند SELECT کوئری را فهرست میکند که در استودیوی ساخت گزارش به عنوان کارتهای مستقل خروجی ظاهر خواهند شد.
منبع داده مستقل پروژهها (Master) با موفقیت ذخیره گردید و آماده انتساب به گزارش اصلی شد.
منبع داده دوم در معماری دو سطحی ما، وظیفه واکشی رکوردهای ریزهزینه و صورتوضعیتها از جدول GB_ProjectCostItem را بر عهده دارد. ویژگی کلیدی این منبع، دارا بودن یک پارامتر ورودی وابسته (@ProjectId) است که به آن اجازه میدهد هم به صورت مستقل و هم به عنوان منبع فرزند متصل به منبع مستر (Master-Detail) در قالبهای چاپ، نمودارهای متهای (Drill-Down) و پیشخوانها عمل نماید.
مشخصات شناسنامهای منبع داده فرزند به صورت زیر تکمیل میشود:
Detail — صورتوضعیتها و اقلام هزینه.bpms).اگرچه در این سناریوی عملیاتی از نوع منبع «پرس و جو (Query)» استفاده شده است، پلتفرم GraphBPMS از انواع متنوع دیگری از منابع داده نیز پشتیبانی میکند:
(جهت آشنایی تفصیلی با تنظیمات پروتکلها، احراز هویت سرویسها و نگاشت دادهها، به مستند جامع ماژول «مدیریت منابع اطلاعاتی» مراجعه فرمایید).
در تب دوم، جدول مبنا یعنی GB_ProjectCostItem با نام مستعار C فراخوانی شده و دستور SQL با گزینش هوشمندانه صرفاً ستونهای مورد نیاز تنظیم میشود:
دستور کامل SQL تنظیمشده در این منبع به شرح زیر است:
SELECT
C.Id,
C.FK_ProjectId,
C.ItemTitle,
C.CostType,
CASE C.CostType
WHEN 1 THEN N'مصالح'
WHEN 2 THEN N'دستمزد'
WHEN 3 THEN N'تجهیزات'
WHEN 4 THEN N'مشاوره'
ELSE N'سایر'
END AS CostTypeName,
C.InvoiceAmount,
FORMAT(C.InvoiceDate, 'yyyy/MM/dd', 'fa') AS InvoiceDateShamsi,
C.IsApproved,
CASE C.IsApproved
WHEN 1 THEN N'تأیید شده'
ELSE N'در انتظار تأیید'
END AS ApprovalStatusTitle
FROM [GB_ProjectCostItem] C
WHERE (@ProjectId IS NULL) OR (C.FK_ProjectId = @ProjectId)
ORDER BY C.Id;
تحلیل فنی و محاسباتی ستونهای کوئری فرزند:
C.FK_ProjectId): ستون پیونددهنده رکوردهای هزینه به شناسه پروژه در جدول مستر.CostTypeName): تبدیل کدهای عددی ۱ تا ۴ به اسامی فارسی رسته هزینه بدون نیاز به برقراری JOIN سنگین.InvoiceDateShamsi): با تابع FORMAT(C.InvoiceDate, 'yyyy/MM/dd', 'fa') جهت نمایش مستقیم در گزارش بدون پردازش سمت کلاینت.ApprovalStatusTitle): تبدیل فیلد بولی IsApproved (۰ و ۱) به عناوین گویای «تأیید شده» و «در انتظار تأیید».WHERE (@ProjectId IS NULL) OR ...):
اگر پارامتر @ProjectId مقداری دریافت نکند (مانند پیشنمایش کلی یا گزارش تلفیقی تمام هزینهها)، تمامی ۷ رکورد صورتوضعیت بدون مانع بازیابی میشوند؛ اما هرگاه این منبع در داخل قالب چاپ یا نمودار به پروژه مشخصی متصل گردد، مقدار کلید P.Id در این پارامتر نشسته و کوئری فوراً تنها اقلام مرتبط با همان پروژه خاص را بازمیگرداند.در تب پارامترهای ورودی، پارامتر ProjectId به صورت هوشمند از بند WHERE استخراج شده است:
در تب تست، با خالی گذاشتن فیلد پارامتر ProjectId و کلیک روی دکمه آبیرنگ «تست پرس و جو»، شرط @ProjectId IS NULL فعال شده و تمام ۷ رکورد موجود در دیتابیس بدون هیچ فیلتری بازیابی میشوند:
دادههای خروجی تست که در پایگاهداده ثبت و بازیابی شدهاند به شرح جدول زیر هستند:
| Id | FK_ProjectId | شرح صورتوضعیت (ItemTitle) | کد رسته | عنوان رسته (CostTypeName) | مبلغ صورتوضعیت (ریال) | تاریخ ثبت (شمسی) | وضعیت تایید | عنوان وضعیت تایید مالی |
|---|---|---|---|---|---|---|---|---|
4 |
1 |
خرید میلگرد و بتن فونداسیون | ۱ | مصالح | ۱,۲۰۰,۰۰۰,۰۰۰ | ۱۴۰۵/۰۲/۲۰ | ✔ | تأیید شده |
5 |
1 |
دستمزد آرماتوربندی و قالببندی فاز اول | ۲ | دستمزد | ۶۵۰,۰۰۰,۰۰۰ | ۱۴۰۵/۰۳/۱۵ | ✔ | تأیید شده |
6 |
1 |
اجاره جرثقیل سنگین و پمپ بتن | ۳ | تجهیزات | ۳۵۰,۰۰۰,۰۰۰ | ۱۴۰۵/۰۴/۱۰ | ✔ | تأیید شده |
7 |
2 |
خرید رکهای سرور و کابلهای فیبر نوری | ۳ | تجهیزات | ۸۰۰,۰۰۰,۰۰۰ | ۱۴۰۵/۰۲/۳۱ | ✔ | تأیید شده |
8 |
2 |
خدمات مشاوره طراحی معماری امنیت شبکه | ۴ | مشاوره | ۲۰۰,۰۰۰,۰۰۰ | ۱۴۰۵/۰۴/۰۴ | ✔ | تأیید شده |
9 |
3 |
خرید چیلرهای تراکمی و لولهکشی موتورخانه | ۳ | تجهیزات | ۹۰۰,۰۰۰,۰۰۰ | ۱۴۰۵/۰۴/۱۹ | ✔ | تأیید شده |
10 |
3 |
دستمزد نصب و راهاندازی تأسیسات سرمایشی | ۲ | دستمزد | ۳۰۰,۰۰۰,۰۰۰ | ۱۴۰۵/۰۵/۱۰ | ✔ | تأیید شده |
در تب «لیست خروجیها (فیلدها)»، موتور پردازشگر منبع داده ۹ فیلد قطعی را شناسایی کرده است که در ادامه استودیوهای گزارشساز، قالب چاپ، و نمودارها به عنوان المانهای قابل نمایش و فیلتر مورد استفاده قرار میگیرند.
در آخرین مرحله، تب «خروجی» کارت جامع شناسنامه منبع داده را نمایش میدهد که در یک نگاه کلی، عنوان منبع، نوع پرسوجو، متن یکپارچه SQL، لیست پارامترها و تمامی فیلدهای استخراجشده را تأیید و با فشردن کلید آبیرنگ «ذخیره» در سامانه تثبیت مینماید:
با استقرار موفقیتآمیز دو منبع داده مستقل (اطلاعات پروژهها — Master) و وابسته (صورتوضعیتها و اقلام هزینه — Detail)، اکنون بستر دادهای لازم برای کلیه استودیوهای سامانه اعم از جدول گرید، نمودارهای Drill-Down، قالبهای چاپ دوسطحی و نقشههای تعاملی GIS به طور کامل و اصولی مهیا گردیده است.
پس از ساخت و تثبیت منابع داده در Provider Manager، راهبر سیستم مجدداً به پیشخوان مدیریت گزارشها (زیرمنوی راهبر سیستم ← گزارشساز) بازمیگردد:
Master — اطلاعات پروژهها را انتخاب نمایید.سرفصل بعدی در دانشنامه: جهت ادامه آموزش، به مستند «[REPORT-02] استودیوی ساخت گزارش (Studio)» مراجعه فرمایید.
یکی از ارکان معماری نرمافزار در GraphBPMS، پیوند عمیق و هوشمند میان محیط توسعه گزارشها (Report Builder) و فضای میزکارهای سازمانی (Workspaces / Dashboards) است. در سازمانهای متوسط و بزرگ که صدها گزارش عملیاتی با خروجیهای چندگانه اعم از جداول دادهای، نقشههای مکانی GIS، نمودارهای تحلیلی، قالبهای چاپ و گالریهای تصویری تولید میشود، کاربران نهایی نباید درگیر پیچیدگیهای فنی استودیو یا کدهای منبع داده شوند؛ بلکه باید بتوانند در سادهترین و امنترین حالت ممکن از طریق میزکار شخصی یا پورتال کاربری به خروجیهای مجاز خود دسترسی داشته باشند.
در ساختار منوهای سیستم GraphBPMS، دو مدخل متمایز برای تعامل با گزارشها پیشبینی شده است که درک تفاوت آنها پیشنیاز تسلط بر معماری سامانه است:
| ویژگی / بستر | گزارشساز (Report Builder) | لیست گزارشها (Reports List / پورتال کاربر) |
|---|---|---|
| مسیر دسترسی | منوی اصلی ← پیکربندی سیستم / راهبر سیستم ← گزارشساز | منوی اصلی ← لیست گزارشها (پایینتر از گزارشساز) |
| جامعه مخاطبان | توسعهدهندگان، تحلیلگران فرآیند و مدیران ارشد سیستم | کلیه کاربران نهایی، کارشناسان اداری و مدیران واحدهای عملیاتی |
| هدف عملکردی | طراحی منابع داده SQL، استودیوی ساخت، تعریف قالبهای چاپ و فرمولسازی | مشاهده، پالایش، فیلترگذاری و چاپ خروجیهای تخصیصیافته |
| پایهریزی امنیتی | نیازمند مجوزهای دسترسی سطح ادمین و توسعه پایگاه داده | تابع محض سیاستهای امنیتی «رونوشت» و دسترسیهای نقشمحور |
هنگامی که یک کاربر نهایی یا حتی خود راهبر سیستم وارد منوی «لیست گزارشها» میشود، ممکن است در ابتدا با یک جدول کاملاً خالی مواجه شود، در حالی که در محیط گزارشساز دهها گزارش فعال وجود دارد:
در مهندسی امنیتی GraphBPMS، صرف ایجاد یک گزارش در استودیو به معنای انتشار عمومی آن در سازمان نیست. تا زمانی که توسعهدهنده گزارش به طور صریح اقدام به تفویض رونوشت (Report Dispatching) به یک کاربر مشخص یا نقش سازمانی ننماید، دادههای گزارش در هیچ پورتال یا میزکاری قابل مشاهده نخواهد بود. این رویکرد ضامن انطباق کامل با استانداردهای حاکمیت داده (Data Governance) و عدم نشت اطلاعات حساس میان دوایر مختلف سازمان است.
تفویض رونوشت خروجی استاندارد گزارش، امکان اجرای پیشنمایش جدول دادهها را به کاربر نهایی واگذار میکند. این فرآیند طبق گامهای زیر انجام میپذیرد:
NationalCode) را مشخص کنید (تثبیت مقدار پیشفرض، قابلیت ویرایش توسط گیرنده یا وضعیت قابل نمایش):
یکی از قدرتمندترین قابلیتهای پلتفرم GraphBPMS، تفکیکپذیری کامل سیاستهای رونوشت به ازای انواع قالبها است. بدین معنی که توسعهدهنده گزارش مجبور نیست تمامی خروجیهای یک گزارش را یکجا در اختیار کاربر بگذارد، بلکه میتواند خروجی قالب چاپ را به یک واحد، نقشه GIS را به واحد دیگر و نمودارهای آماری را به مدیران میانی رونوشت دهد:
در ستون «قالبهای گزارش»، چنانچه برای هر قالب خروجی (قالب چاپ، نمودار، نقشه مکانی، گالری) قالبی طراحی و ذخیره شده باشد، یک نشانگر عددی آبیرنگ روی آیکن آن قرار میگیرد که تعداد قالبهای فعال را نمایش میدهد. با کلیک مستقیم روی این آیکن، پنجره مدیریت همان نوع قالب و عملیات رونوشت اختصاصی آن فراخوانی میشود.
در ادامه، فرآیند اعطای رونوشت برای سه فرمت خروجی متفاوت به تصویر کشیده شده است:
در گزارش «اطلاعات کاربر ثبت نام شده»، با کلیک بر روی آیکن قالب چاپ دارای بج عددی ۱، پنجره مدیریت قالبهای چاپ باز شده و خروجی آن به کاربر راهبر سیستم رونوشت داده میشود:
در گزارش «درمانگاههای مشهد»، آیکن قالب نقشه دارای بج ۱ است. با کلیک روی آن و انتخاب اکشن رونوشت قالب نقشه، این لایه مکانی به حساب کاربری راهبر سیستم تفویض میگردد:
در گزارش «فراوانی جنسیت»، آیکن قالب نمودار نشاندهنده یک نمودار فعال است. در زبانه رونوشتهای ارسالشده این قالب مشاهده میشود که پیش از این برای نقش سازمانی «کارشناس» رونوشت صادر شده و اکنون رونوشت جدیدی برای «راهبر سیستم» نیز ثبت میگردد:
اکنون که رونوشتهای گوناگون اعم از جدولی، نقشه، نمودار و چاپ صادر گردید، با بازگشت به زیرمنوی «لیست گزارشها»، جدول خروجیها با رکوردهای واگذارشده لود میشود:
ساختار چهارگانه ستونهای جدول پرتال کاربری به شرح زیر است:
| ستون | ماهیت داده و مفهوم عملیاتی |
|---|---|
| عنوان | نام گزارش اصلی به همراه عنوان زیرمجموعه قالب خروجی (مشخصشده با فلش بازگشتی و نام والد). |
| نوع | فرمت دقیق خروجی شامل آیکن گرافیکی اختصاصی (جدولی، نقشه، نمودار، قالب چاپ، گالری تصاویر). |
| دسترسی | هویت کاربری صادرکننده رونوشت و سیاست امنیتی مرتبط با آن. |
| تاریخ ثبت | تاریخ دقیق اعطای رونوشت به کاربر یا نقش. |
به منظور جلوگیری از شلوغی بصری جدول و بهبود تجربه کاربری (UX) برای پرسنل سازمان، دکمههای عملیاتی نظیر دکمه «مشاهده» در حالت عادی پنهان هستند. با قرار گرفتن نشانگر ماوس (Hover) بر روی هر سطر، آیکن آبیرنگ «مشاهده» (چشم) در انتهای سطر آشکار میگردد. با کلیک بر روی آن، خروجی در یک تب یا پنجره مستقل باز میشود.
با حرکت ماوس روی سطر خروجی نقشه درمانگاهها، آیکن مشاهده پدیدار شده و با کلیک روی آن، پنجره رونوشت نقشه در تب جدید مرورگر اجرا میشود. در این محیط، کاربر میتواند فیلترهای مکانی را اعمال کرده و بر روی نقشه تعاملی لایهها را بررسی کند:
به همین ترتیب، با هاور بر روی سطر خروجی جدولی و کلیک بر روی آیکن مشاهده، پیشنمایش خروجی جدولی در پورتال کاربری بارگذاری میشود. توجه داشته باشید که ساختار تودرتوی منابع (Master-Detail) در سایدبار راست برای کاربر نهایی نیز در دسترس است و پارامترهای فیلتر کدملی به زیبایی رندر میگردند:
اگرچه دسترسی به خروجیها از طریق منوی «لیست گزارشها» فراهم است، اما در استانداردهای پیشرفته تجربه کاربری (Enterprise UX)، مدیران و کارشناسان ترجیح میدهند به محض ورود به سامانه، تمام گزارشها و پایشهای خود را مستقیماً روی میزکار اصلی (Dashboard) مشاهده کنند. پلتفرم GraphBPMS از طریق «ویجت ماژول گزارشات» این اتصال ارگانیک را محقق ساخته است.
در صفحه اصلی سامانه، میزکارهای مختلف در قالب زبانهها (تبها) قرار دارند. در گوشه بالا سمت چپ نوار تیره سربرگ، آیکن آبیرنگ چرخدنده (مدیریت میزکار) تعبیه شده است:
با کلیک روی چرخدنده، صفحه «مدیریت میزکار» لود میشود. در این جدول کلیه میزکارهای سازمان، وضعیت انتشار، گروهبندی و مجازین دسترسی ثبت شده است. برای طراحی تب جدید، بر روی دکمه آبیرنگ «طراحی میزکار جدید» در بالا سمت چپ کلیک کنید:
محیط استودیوی ساخت میزکار باز میشود. در این محیط توسعهدهنده میتواند با افزودن ویجتها، رابط بصری پیشخوان کاربر را چیدمان کند. در منوی تنظیمات ویجت، دراپداون «لیست ماژولها» را باز کرده و گزینه «گزارشات» را برگزینید:
همانطور که در راهنمای پنجره تنظیمات درج گردیده است: «در صورت انتخاب نکردن گزارش خاص، لیست کلیه گزارشهای مجاز کاربر در ویجت نمایش داده خواهد شد.» این ویژگی سبب میشود ویجت گزارشات یک کامپوننت هوشمند و خودتنظیم باشد؛ یعنی به محض اعطای هر رونوشت جدید به کاربر، جدول ویجت در میزکار او بدون نیاز به تغییر در طراحی، بلادرنگ بهروزرسانی شود.
پس از فشردن دکمه ذخیره، کامپوننت گزارشها در بدنه صفحه قرار گرفته و خروجیهای چهارگانه رونوشتشده را به صورت زنده نمایش میدهد. سپس بر روی دکمه «ذخیره» در نوار ابزار بالا کلیک کنید:
پس از ذخیره، رکورد میزکار جدید با عنوان «گزارشات» در گروه فرآیندی مربوطه ثبت میشود. وضعیت «انتشار یافته» تیک خورده و مشخص است که برای کاربر جاری مجاز و فعال میباشد:
با بازگشت به صفحه اول سامانه GraphBPMS، زبانه جدید «گزارشات» در هدر میزکارهای فعال افزوده شده است. کاربر با کلیک روی این تب، بلافاصله کل گزارشها و قالبهای تحلیلی خود را در مرکز صفحه با امکان اجرای سریع و بدون واسطه دریافت مینماید:
سرفصل بعدی در دانشنامه: جهت فراگیری نحوه چیدمان حرفهای کارتها، پیکربندی منابع داده Master-Detail و ساخت ستونهای اکشندار سفارشی، به مستند «[REPORT-02] استودیوی ساخت گزارش (Studio)» مراجعه فرمایید.