عناوین فهرست
فهرست مطالب
- معرفی بخش Rest Api سایت Processmaker
- دسترسی به پایگاه داده نرم افزار Processmaker و جداول Process و Task
- معرفی بخش “ثبت نام برنامه خارجی” برای دسترسی به سرویس های نرمافزار
- معرفی دسترسی های کاربران در Processmaker
- معرفی مفهوم Case در Processmaker
- معرفی مفهوم Route کردن فرایند در Processmaker
- “ثبت نام برنامه خارجی” برای دسترسی به قابلیت های وبسرویسی Processmaker
- احراز هویت با username و password و بدست آرودن access token
- ساخت Case جدید از فرایند مورد نظر
- هدایت یا Route فرایند به کار مورد نظر
- پیگیری وضعیت case ایجاد شده و اینکه در چه مرحله ای قرار دارد
مقدمه
در این آموزش قصد داریم برنامهای وبی که با تکنولوژی دلخواهی (مانند net.) را توسعه دهیم که به نرمافزار Processmaker متصل شده و فرایند مورد نظر را شروع کند. سپس در ادامه فرایند را به مرحله دلخواه هدایت میکنیم. برای این منظور ابتدا مقدماتی از مفاهیم را تشریح میکنیم و سپس قدم به قدم فرایند ساخت و هدایت Case جدید را توضیح میدهیم.
پیش نیاز
معرفی بخش Rest Api سایت Processmaker
این بخش شامل معرفی و آموزش برخی از وب سرویسهای نرمافزار Processmaker است. در این بخش قابلیتهای فراخوانی وب سرویسهایی برای ایجاد فرایند، هدایت فرایند، تخصیص مجدد به فرد جدید، متوقف کردن فرایند، اجرای تریگرهای فرایند و… با مثالهای مختلف آموزش داده شده است.
دسترسی به پایگاه داده نرم افزار Processmaker و جداول Process و Task
برای دسترسی به پایگاه داده نرمافزار Processmaker میتوان در سیستمی که این نرمافزار نصب شده است، از طریق منوی Start کنسول این نرمافزار را باز کرده و با گزینه Open PhpMyAdmin به صفحه دسترسی پایگاه داده دسترسی داشته باشید.
با نام کاربری و رمز عبور موردنظر وارد شده و از منوی سمت چپ پایگاه داده bitnami_pm را با دوبار کلیک انتخاب میکنیم. سپس برای دسترسی به تابع Process و Task نام این جداول را در فیلد جستجو تایپ کرده و Enter میکنیم.
از این طریق به جداول این نرمافزار دسترسی داریم. حال مقادیر PRO_UID فرایندی مد نظرمان را برای استفاده در کد از جدول Process برمیداریم.
همین طور مقدار TAK_UID را از جدول Task برمیداریم. نکتهای که در این قسمت لازم است توجه فرمایید این است که دقت فرمایید مقدار TAK_UID مربوط به کاری را بردارید که داخل فرایند مدنظر شما است. برای این منظور میتوانید مقدار PRO_UID فرایند مد نظر خود را در فیلد Filter Rows وارد کنید تا تنها کار های این فرایند را به شما نمایش دهد.
معرفی بخش “ثبت نام برنامه خارجی” برای دسترسی به سرویسهای نرمافزار
نرمافزار Processmaker برای برنامه نویسانی که میخواهند برنامهای توسعه دهند که از قابلیتهای این نرمافزار استفاده میکند امکانات مختلفی قرار داده است. اما برای این منظور باید حتما در نرمافزار Processmaker، درخواست دسترسی به نرمافزار ثبت شده و از سمت نرم افزار کدی دریافت شود.
به این ترتیب نرم افزار در برابر دسترسی های غیر مجاز محفوظ بوده و تنها کسانی که از طریق مدیر سیستم Processmaker در نرمافزار معرفی شود اجازه استفاده از این قابلیت ها را خواهند داشت.
معرفی دسترسیهای کاربران در Processmaker
در نرمافزار Processmaker استفاده از قابلیتهای مختلف مشروط به داشتن دسترسیهای مربوطه برای کاربر استفاده کننده است. برای بررسی دسترسی های کاربر بنابه نقش یا Role کاربر میتوانید از بخش زیر به دسترسی ها راه پیدا کنید.
Admin > Users > Roles > Permissions
معرفی مفهوم Case در Processmaker
Case یک نمونه اجرا شده از فرایند است. هر فرایند دارای نقشه کار فرایند است که با نمادهای BPMN نشان داده میشود. یک Case یک نمونه اجرایی از فرایند که بر اساس آن نقشه حرکت میکند. بنابراین هر زمان که کاربر فرایندی را اجرا می کند یک Case ساخته میشود و بنابر ساختار نقشه یا مدل فرایند بین Task ها و افراد مختلف جابجا میشود.
معرفی مفهوم Route کردن فرایند در Processmaker
Route کردن به معنای جابجا کردن کار درحال اجرای یک Case به کاری دیگر است. به عنوان مثال میتوان فرایندی که هم اینک در Task 3 و در دست کاربر 1 میباشد را به Task 4 که کاربر 5 میباشد Route میکنیم و این فرد در کارتابل فرایند خود این کار را میبیند.
ثبت نام برنامه خارجی” برای دسترسی به قابلیتهای وبسرویسی Processmaker
برای ثبت نام برنامه خارجی از این مسیر به صحفه آموزش ثبت نام برنامه خارجی دسترسی خواهید داشت.
در این مسیر با استفاده از گزینه New به صحفه ثبت برنامه وارد میشوید. در این بخش نام دلخواهی که بهتر است نام برنامهای که قصد دسترسی به Processmaker را دارد را وارد میکنیم. در بخش Web Site نیز هر مقدار دلخواه که بهتر است در صورت وجود آدرس اینترنتی نرمافزاری که قصد دسترسی به Processmaker را دارد وارد کنیم. در مورد آموزش جاری، نیازی نیست آدرس معتبری در این فیلد وارد شود.
در صفحه بعدی نرمافزار، مقادیر Client ID و Client Secret را ارائه میدهد. این مقادیر در کدهای آینده استفاده میشود.
احراز هویت با username و password و بدست آرودن access token
دراین قسمت شروع به نوشتن و توسعه نرمافزار میکنیم. لازم بذکر است که الزامی به استفاده از تابعی با این نام و جزئیات نیست و هرتابعی به هر زبان برنامه نویسی که به آدرس webservice متصل شده و دادهها را رد و بدل کند کافی است. این نکته برای تمام کدها و تابعهای ادامه معتبر است. ما در این مثال از یک webform با تکنولوژی asp.net استفاده کرده ایم و محیط توسعه ای که انتخاب کردیم Visual Studio میباشد.
در قدم اول با رایت کلیک کردن روی پروژه یک Sevice WCF اضافه میکنیم.
فایلهای IService1.cs و Service1.svc به پروژه شما اضافه میگردد.
کلاس Service1 از Interface به نام Iservice1 ارث بری میکند و متدهایی که آنجا تعریف شده را پیاده سازی میکند.
در قدم بعدی کدهای احراز هویت را مینویسیم. برای این منظور ابتدا متغیر ها را با مقادیر اولیه متناسب با سیستم خود پر میکنیم. جهت یادآوری مقادیر clientId و clientSecret را در مرحله ثبت برنامه خارجی از سیستم دریافت کردیم.
متد login داخل فایل بصورت زیر پیاده سازی میشود.
متدهای CreateNewCaseو Login و RouteCase در داخل کلاس CaseModel تعریف شدهاند.
که در فایل NewCaseparameter.cs قرار دارد.
ساخت Case جدید از فرایند موردنظر
تا به این مرحله احراز هویت لازم برای استفاده از قابلیت وبسرویس ساخت Case جدید آماده شده ایم. در مرحله نیز مانند مرحله قبل ابتدا متغیرها را با مقادیر اولیه متناسب با سیستم خود پر میکنیم. مجددا جهت یادآوری مقادیر pro_uid و tas_uid از جداول Process و Task که در بخش قبل توضیح داده شد استخراج شده و در متغیرهای مربوطه از آنها استفاده میکنیم.
در داخل متد CreateNewCase متد CallRestapi با پارامترهای apiUrl, restApiParameter, token, “POST” صدا زده میشود.
وب سایت طراحی شده ما بصورت زیر میباشد.
کد پشت دکمه Create case بصورت زیر می باشد.
با Deserialize کردن متغیر result میتوانید به شماره Case که ساخته شده است دسترسی داشته باشیم ، در این مثال این شماره را برروی یک Label نشان می دهیم.
اگر Processmaker را با admin لاگین کنیم در Case ، inbox های ایجاد شده را میبینیم.
برای انتقال دادههای textbox ها متغیرهایی به همین نام در Processmaker باید ایجاد شده باشد.
این متغیرها را میتوانید در یک Dynaform استفاده نمایید.
هدایت یا Route فرایند به کار موردنظر
در برنامهای که در اینجا توسعه دادهایم فرآیند CreateNewCase و Route کردن هم زمان صورت گرفته است.
(تابع Route از داخل CreateNewCase صدا زده میشود.)
در این مثال مدل فرآیند ما بصورت زیر میباشد:
اگر به Processmaker توجه کنیم میبینیم که Case ساخته شده در Inbox و Task برابر Task2 میباشد.
(Routing صورت گرفته است)
اگر در قطعه کد ، قسمتی که routing صورت میگیرد را Comment کنیم :
متوجه میشویم که case جدید در drafts قرارگرفته و Task برابر Task1 میباشد.
پی گیری وضعیت case ایجاد شده و اینکه در چه مرحله ای قرار دارد
در فاز اول یک anonymous user با مراجعه به وب سایت یک case ایجاد کرده است، در این فاز با توجه به شماره Case برگشتی، این کاربر می تواند پیگیری نماید تا Task در چه مرحلهای هست و در صورت وجود شرایط مورد نظر ، آن case را از طریق وب سایت به Task بعدی هدایت (route) کند.
در صفحه بعدی وب سایت، کاربر می تواند با این شماره Case وضعیت فعلی کار خود را پیگیری کند.
و کار در کارتابل فرد بعدی که Task3 به آن assign شده قرار می گیرید.
در قسمت code behind دکمه show data کد زیر قرار دارد.
که با استفاده از یک connection و query مربوطه یک datatable را پرکرده و این Datatable گرید مورد نظر را پر میکند.
در قسمت code behind دکمه route to next task کد زیر قرار دارد.
نکته حایز اهمیت این است که برای استفاده از متد Route_only (این متد فقط عمل Route کردن را انجام میدهد و قسمت create از آن حذف شده است.) ما به uid این task نیاز داریم که در این مثال آنرا از همان گرید نمایش دهنده اطلاعات دریافت کردهایم.
در پایان نمونه سورس کامل پروژه در قالب فایل rar برای دانلود قرار داده شده است.