/
/
بخش «کارگاه جامع گزارشساز» در سامانه GraphBPMS، پایگاه تخصصی مستندسازی راهکارهای عملیاتی و پیادهسازیهای کامل (End-to-End) بر مبنای مسائل واقعی کسبوکار است. در حالی که اسناد پایهای به تشریح ابزارها و پنلهای استودیو میپردازند، این کارگاه پاسخ به این پرسش کلیدی است: «چگونه تمامی اجزای گزارشساز اعم از فرمساز، موتور پایگاهداده، منابع داده، استودیو، چارت و میزکارها را در قالب یک سناریوی جامع Master-Detail به هم متصل کنیم؟»
الگوی ارتباط والد و فرزند (Master-Detail) و تحلیل عمیق دادهها (Drill-Down)، بنیادینترین سناریو در هوش تجاری و سامانههای سازمانی است. هدف این کارگاه پیادهسازی سناریویی است که در آن مدیر سازمان بتواند ابتدا سبد کلان پروژهها را رصد کند، با یک کلیک ریز صورتوضعیتهای مالی هر پروژه را مشاهده نماید و این ساختار را به سطوح عمیقتر تسری دهد.
در سازمانهای پروژهمحور و شرکتهای پیمانکاری، مدیران ارشد نمیخواهند صدها صورتوضعیت مالی متفرقه را در یک جدول بزرگ و آشفته ببینند. در مقابل، کارشناسان مالی و اجرایی نیازمند دسترسی به جزئیات فاکتورها به تفکیک پروژه هستند. راهحل معماری، تفکیک دادهها به دو لایه والد (پروژهها) و فرزند (صورتوضعیتها) است:
GB_Project)شامل مشخصات کلان پروژه نظیر نام پروژه، کد شناسایی سازمانی، دستهبندی موضوعی (عمرانی، IT، تأسیسات)، بودجه مصوب ریالی، درصد پیشرفت فیزیکی، موقعیت GIS و تصویر شاخص کارگاه.
GB_Invoice)شامل ریز فاکتورها و مبالغ تسلیمشده پیمانکاران که از طریق کلید خارجی ProjectId به شناسه اصلی پروژه پیوند خورده و با شرط پارامتریک @ProjectId واکشی میشوند.
چارچوب ارتباطی موجودیتهای والد و فرزند به شرح جدول زیر تدوین میشود:
| سطح موجودیت | فرم مبنا و ساختار داده | پرسوجوی SQL و شروط | خروجیهای گزارش و اتصال کلیدها |
|---|---|---|---|
| سطح والد (Master) سبد پروژهها |
• فرم مبنا: فرم پروژهها• جدول پایگاهداده: GB_Project• کلید اصلی: Id• فیلدهای کلیدی: ProjectCode, ProjectTitle, BudgetAmount, ProgressPercent
|
SELECT Id, ProjectCode, ProjectTitle, BudgetAmount, ProgressPercent FROM GB_Project WHERE CategoryId = @CategoryId• پارامتر: @CategoryId
|
• پیشخوان گرید والد • نمودار ستونی بودجه پروژهها • صدور کلید Id به عنوان پارامتر به موجودیت فرزند
|
| سطح فرزند (Detail) صورتوضعیتها |
• فرم مبنا: فرم صورت وضعیت ها• جدول پایگاهداده: GB_Invoice• کلید اصلی: Id• کلید خارجی: ProjectId (مرتبط با والد)
|
SELECT Id, ProjectId, InvoiceNumber, InvoiceTitle, Amount, Status FROM GB_Invoice WHERE ProjectId = @ProjectId• پارامتر شرطی: @ProjectId
|
• زیرگرید بازشونده (Drill-Down Grid) • نمودار ریز هزینهها • دریافت کلید والد و تغذیه خودکار دادهها |
WHERE ProjectId = @ProjectId
در نخستین گام، به جای کدنویسی دستی جداول در SQL Server، از ماژول فرمساز GraphBPMS جهت طراحی فرمها و تولید جداول پایگاهداده استفاده میکنیم:
GB_Project)این فرم شامل فیلدهای عنوان پروژه، کد پروژه، دستهبندی موضوعی، مبالغ بودجه و درصد پیشرفت است:
GB_Invoice)فرم دوم برای ثبت مبالغ صورتوضعیتها طراحی شده و از طریق کلید خارجی ProjectId به پروژه والد متصل است:
موتور فرمساز GraphBPMS بهصورت خودکار جداول GB_Project و GB_Invoice را در دیتابیس ساخته و دادههای ثبتشده را در آنها ذخیره میکند:
از منوی مدیریت منابع اطلاعاتی ← منبع داده وارد بخش Provider Manager میشویم تا منابع داده SQL را پیکربندی کنیم:
منبع داده پروژه های عمرانی (master) را با کوئری استخراج اطلاعات پروژهها و پارامتر ورودی @CategoryId ایجاد و اعتبارسنجی میکنیم:
SELECT
Id,
ProjectCode,
ProjectTitle,
CategoryId,
CategoryTitle,
StartDateShamsi,
DueDateShamsi,
BudgetAmount,
ProgressPercent,
SitePhoto,
Coordinates
FROM GB_Project
WHERE (@CategoryId IS NULL OR CategoryId = @CategoryId)
منبع داده دوم با نام صورت وضعیت ها (detail) تعریف شده و شرط کلیدی WHERE ProjectId = @ProjectId بر روی آن قرار میگیرد:
SELECT
Id,
ProjectId,
InvoiceNumber,
InvoiceTitle,
Amount,
Status,
SubmissionDate
FROM GB_Invoice
WHERE ProjectId = @ProjectId
در پیشخوان گزارشساز، دکمه «+ ایجاد گزارش» را زده و منبع داده Master پروژهها را به عنوان منبع مبنا برمیگزینیم:
با ورود به استودیو، کارتهای فیلدهای منبع Master لود شده و عناوین ستونها به فارسی خوانا بازتعریف میشوند:
از زبانه منابع داده در سایدبار سمت راست، دکمه «+ افزودن منبع داده» را فشرده و منبع صورت وضعیت ها (detail) را اضافه میکنیم:
در تنظیمات منبع فرزند، پارامتر @ProjectId را به فیلد خروجی Id منبع والد مپ میکنیم. این نگاشت تضمین میکند که با کلیک روی هر پروژه، شناسه آن مستقیماً به کوئری فرزند ارسال شود:
در تب پیشنمایش، گرید Master-Detail دو سطحی رندر میشود. کاربر با کلیک روی سطر هر پروژه، زیرجدول صورتوضعیتهای آن را با سرعت بالا مشاهده میکند:
در ادامه سناریو، تجربه بصری کاربر را با نمودارهای تعاملی هوش تجاری ارتقا میدهیم. از جدول گزارشها روی آیکن نمودار کلیک کرده و وارد استودیوی نمودار (Chart Studio) میشویم:
در استودیوی نمودار ابتدا نمودار والد بر اساس منبع Master (محور X: عنوان پروژه، محور Y: بودجه مصوب ریالی) ساخته شده و سپس نمودار فرزند بر اساس منبع Detail (محور X: شرح صورتوضعیت، محور Y: مبلغ ریالی) تعریف میگردد.
فرآیند ناوبری و تعامل کاربر در محیط پیشنمایش چارت شامل سه وضعیت پیوسته و هوشمند است:
۱. وضعیت اولیه پیش از کلیک (Pre-Click Master State): ابتدا تنها نمودار والد با ۳ ستون بودجه ۵۰، ۲۵ و ۱۵ میلیارد ریالی ظاهر میشود و نمودار فرزند هنوز در حالت مخفی قرار دارد:
۲. هاور ماوس روی ستون پروژه (Hover & Focus Preview): کاربر نشانگر ماوس را روی ستون پروژه «توسعه زیرساخت مرکز داده و اتاق سرور» میبرد. نشانگر تغییر حالت داده و خط تراز به برچسب 25B در محور عمودی متصل شده و تولتیپ بودجه ۲۵ میلیارد ریالی را نمایش میدهد:
۳. کلیک و انتقال زنده دریلداون (Live Transition): کاربر بر روی ستون پروژه کلیک میکند. موتور چارت GraphBPMS بلافاصله انیمیشن جهش را اجرا کرده و نمودار والد را با نمودار ریز اقلام مالی همان پروژه جایگزین مینماید:
محدود شده با مقادیر: [ProjectId: توسعه زیرساخت مرکز داده] وضعیت فیلتر را شفاف میسازد.یکی از درخشانترین ویژگیهای معماری GraphBPMS، توسعهپذیری بیپایان الگوی دریلدان (Recursive Cascading) است. این سناریو به رابطه دو سطحی محدود نمیشود؛ بلکه طراح سیستم میتواند دقیقاً با همین مکانیزم، زنجیرهای از منابع داده وابسته چندسطحی بسازد:
همانطور که در این کارگاه با ارسال کلید ProjectId از پروژه به صورتوضعیتها رفتیم، میتوان یک منبع داده وابسته سوم به نام «اسناد پرداخت و حوالهها» با شرط WHERE InvoiceId = @InvoiceId ساخت. بدین ترتیب:
• سطح ۱: کلیک روی ستون پروژه ← باز شدن نمودار صورتوضعیتهای آن پروژه.
• سطح ۲: کلیک روی یکی از صورتوضعیتها ← باز شدن نمودار ریز حوالهها و چکهای صادره آن صورتوضعیت.
• سطح ۳: کلیک روی حواله ← مشاهده آرتیکلهای حسابداری و اسناد مالی.
دکمه بازگشت نیز بهصورت پشتهای (Breadcrumb History) کاربر را گامبهگام به عقب بازمیگرداند.
@ProjectId ➔
@InvoiceId ➔
@VoucherId ➔
پس از تکمیل گرید و نمودار Drill-Down، این گزارش باید در اختیار ارکان سازمان قرار گیرد. در این گام، تفکیک کلیدی میان توسعهدهندگان و کاربران نهایی اعمال میشود:
• رونوشت گزارش (Report Transcript): صرفاً به کاربران نهایی (End-Users) و مدیران مصرفکننده اطلاعات در پورتال «لیست گزارشها» و میزکارهای سازمانی (Dashboards) اعطا میشود تا بدون دسترسی به کوئریها، استودیو یا متادیتای سیستم، از گرید و نمودار Drill-Down بهرهبرداری کنند.
• سطوح دسترسی (Permissions): منحصراً در اختیار کاربران توسعهدهنده سیستم (System Developers) قرار دارد تا بتوانند ساختار SQL، پارامترها و استودیوهای گزارش و نمودار را راهبری نمایند.
| گام چرخه حیات | ابزار و بستر GraphBPMS | اقدام مهندسی انجامشده | دسترسی مورد نیاز |
|---|---|---|---|
| ۱. مدل داده | ماژول فرمساز (Form Builder) | طراحی فرمهای پروژهها و صورتوضعیتها و تولید جداول GB_Project و GB_Invoice |
توسعهدهنده سیستم |
| ۲. لایه کوئری | مدیریت منابع داده (Provider Manager) | ایجاد Provider والد و فرزند با شرط پارامتریک WHERE ProjectId = @ProjectId |
توسعهدهنده سیستم |
| ۳. بایندینگ استودیو | استودیوی گزارشساز (ReportStudio) | اتصال منبع فرزند، نگاشت کلیدها (@ProjectId = Id) و تنظیم گرید بازشونده |
توسعهدهنده سیستم |
| ۴. نمودار BI | استودیوی نمودار (ChartStudio) | طراحی چارت والد و فعالسازی جهش تعاملی Drill-Down به نمودار فرزند | توسعهدهنده سیستم |
| ۵. بهرهبرداری | پورتال کاربری (ReportList) و داشبوردها | مشاهده دادهها، کلیک روی ردیفها و چارت جهت جهش به جزئیات مالی | کاربر نهایی (با دریافت رونوشت) |
تسلط بر این سناریوی پیوسته از طراحی فرم تا راهاندازی نمودار تعاملی دریلدان، عالیترین مهارت در حوزه گزارشسازی GraphBPMS است که پایهای استوار برای پیادهسازی هر نوع سناریوی پیچیده سازمانی فراهم میسازد.