پیش نیازها
برای درک بهتر مطالب این مستند لازم است قبلا با مفاهیم و مدلهای مربوط به فیلدهای انتخابگر حرفی از نوع تابع گردش کار، مدل ساده View در خارج از سیستم مدیریت فرآیندها و نیز با سرویس AccCPUConnector برای تعامل راه دور با سیستم مالی آشنا شده باشید. لذا اگر احساس می کنید به این مفاهیم تسلط کافی ندارید بهتر است قبل از ادامه این مطلب، مستندات زیر را مطالعه کنید:
فیلدهای انتخابگر حرفی با تابع گردش کار: مفاهیم و مدلها
فیلدهای انتخابگر حرفی با تابع گردش کار: View در خارج از سیستم مدیریت فرآیندها: مدل ساده
راه اندازی AccCPUConnector: یک سرویس REST برای تعامل راه دور با سیستم مالی نوسا
مدل View در خارج از شبکه محلی پایگاه فرآیندها
همانطور که در مطالب قبلی گفته شد، این مدل کاربردی ترین مدل استفاده از انتخابگرهای حرفی با تابع گردش کار است و برای امکان راه اندازی خدمات ابری پیاده سازی شده است. به این ترتیب مشتریان سیستم مالی نوسا نیازی به نصب و راه اندازی سیستم مدیریت فرایندها در شبکه محلی خود ندارند و می توانند این خدمات را بصورت خدمات ابری از شرکت نوسا دریافت نمایند. این مدل در شکل زیر نمایش داده شده است:
همانطور که ملاحظه می کنید در این مدل، یک سرویس REST با عنوان AccCPUConnector وظیفه رابط میان پایگاه مدیریت فرایندها (کلاینت) و پایگاه سیستم مالی را به عهده دارد. یادآوری می شود که در این مدل، وظیفه ارتباط با SQL View و خوانش داده های سیستم مالی به عهده یک تابع پارامتریک استخراج داده ها (با پارامتر processedParams) است که این تابع زیرمجموعه ای از سرویس AccCPUConnector است. شکل زیر با تحلیل بیشتر سرویس AccCPUConnector ، تصویر دقیق تری از این مدل را نمایش می دهد:
در این مدل، تابع پارامتریک استخراج داده ها (در این مثال ReadAccData) در فایل Script.js در AccCPUConnector درج می شود و با استفاده از امکانات WorkADOSelect با SQL View ارتباط برقرار کرده و داده های مورد نیاز انتخابگر حرفی (کد، نام، طبقه بندی و جزئیات) را استخراج می کند و به پایگاه مدیریت فرآیندها ارسال می کند.
اگر به یاد داشته باشید، تابع استخراج داده ها نیاز به پارامترهای processedParams دارد. حال باید ببینیم در این مدل، این پارامترها چگونه از راه دور به این تابع پاس می شود.
مساله اصلی: نحوه پاس کردن processedParams به تابع استخراج داده ها
از آنجایی که موجود processedParams از طرف پایگاه فرآیندها پاس می شود لذا در حالتی که سیستم مدیریت فرایندها و سیستم مالی نوسا در یک شبکه محلی هستند این کار به راحتی انجام می شود و نیاز به تنظیمات و یا برنامه نویسی دیگری ندارد. اما در حالتی که سیستم مالی نوسا خارج از شبکه محلی پایگاه فرآیندهاست این کار از طریق یک ماژول واسطه بنام AccCPUConnector انجام می شود. در ادامه مطلب، جزئیات این پروسه شرح داده شده است.
پروسه نحوه خواندن داده های فیلد انتخابگر حرفی از سیستم مالی در این مدل
مراحل کار در این مدل به شرح زیر است:
- تابع گردش کار وابسته به فیلد انتخابگر حرفی (WorkFieldSSViewMyName) یک تابع حاوی کلاینت REST را Call می کند.
- تابع حاوی کلاینت REST (در این مثال RemoteCallACCView)، پارامترهای processedParams را از طریق WEB به سرویس AccCPUConnector در شبکه محلی سیستم مالی نوسا ارسال می کند
- این پارامترها به تابع استخراج اطلاعات (مثلا ReadAccData) که در فایل Script.js قرار دارد پاس می شود.
- تابع ReadAccData داده های تعریف شده در View موجود در پایگاه سیستم مالی را از این پایگاه Query می کند.
- SQL Server پاسخ ( شامل نام، کد، جزئیات و طبقه بندی) را به AccCPUConnector برمی گرداند.
- AccCPUConnector نتایج را از طریق WEB به کلاینت REST در پایگاه مدیریت فرآیندها برمی گرداند.
- این نتایج در فیلد انتخابگر حرفی نمایش داده می شود.
با توجه به توضیحات فوق، مشخص می شود که سه تابع زیر، پایه اسکریپتهای این مدل هستند:
- WorkFieldSSView (تابع گردش کار وابسته به فیلد انتخابگر حرفی)
- RemoteCallACCView (تابع حاوی کلاینت REST برای ارسال processedParams )
- ReadAccData (تابع استخراج داده ها از SQL View )
در ادامه مطلب این سه تابع با جزئیات
تابع استخراج اطلاعات (ReadAccData) در فایل Script.js
نمونه این تابع به شکل زیر است:
در این تابع پارامتر p، در واقع همان processedParams است که از طریق برنامه گردش کار و توسط کلاینت Rest ارسال شده است. در ابتدای این تابع، پارامتر p با استفاده از JSON.parse به Object تبدیل و در متغیر pr ذخیره می شود. در مرحله بعد و با استفاده از موجود WorkADOSelect ، داده های مورد نیاز از View خوانده می شود و در آرایه res قرار می گیرد و در انتها این داده ها به شکل یک رشته حرفی به کلاینت برمی گردد.
تابع حاوی کلاینت REST برای ارسال processedParams
برای این کار، در برنامه گردش کار به یک تابع با عنوان RemoteCallAccView به شکل زیر نیاز داریم:
اگر مطالب قبلی در مورد کلاینت Rest را مطالعه کرده باشید متوجه می شوید که در این تابع:
- ابتدا یک کلاینت Rest برای اتصال به سرویس AccCPUConnector ایجاد و در متغیر با نام restClt قرار می گیرد.
- سپس پارامترهای نام کاربری و کلمه عبور کاربر دارای اختیار خواندن اطلاعات (db_datareader) در پایگاه مالی بصورت Hearder و مقادیر نام تابع (funcName) و پارامتر تابع (funcParam) به عنوان بدنه درخواست تعیین می شود.
- در انتها این درخواست به سرویس AccCPUConnect ارسال می شود.
بدیهی است که این تابع به تنهایی نمی تواند اجرا شود بلکه باید با انتخاب پارامترهای مناسب و مورد نظر و از درون یک تابع دیگر Call شود. تابعی که برای این کار استفاده می شود، تابع گردش کار وابسته به فیلد انتخابگر حرفی است که در بخش بعد شرح داده شده است.
تابع گردش کار وابسته به فیلد انتخابگر حرفی (WorkFieldSSViewMyName)
اگر به یاد داشته باشید، در هنگام تعریف یک فیلد انتخابگر حرفی از نوع تابع گردش کار، باید یک تابع در برنامه گردش کار را به این فیلد معرفی کنیم. در این مورد تابع فوق را به شکل زیر ایجاد می کنیم:
در این تابع، ابتدا پارامترهای processedParams از طریق JSON.stringify به یک رشته حرفی تبدیل می شود و سپس از طریق صدا زدن تابع RemoteCallAccView به تابع راه دور ReadAccData واقع در Script.js پاس می شود. در انتها، پس از اجرای تابع ReadAccData و خواندن داده های مورد نیاز از پایگاه مالی، نتایج در یک متغیر آرایه بنام res ذخیره و به پایگاه مدیریت فرآیندها برمی گردد. در نهایت آرایه res در محاوره انتخاب فیلد انتخابگر حرفی نمایش داده می شود.
پروسه ای که در بالا توضیح داده شد در شکل زیر بطور شماتیک نمایش داده شده است: