توضیحات فرآیند
مدل BPMN در ProcessMaker برای فرم «درخواست اضافه کاری» به شکل ذیل عمل میکند:
مدل BPMN این فرآیند از یک Start Event از نوع «فرم شروع» با عنوان «فرم ثبت درخواست اضافه کاری» آغاز میشود که دادههای اولیه (نام، ساعت شروع و پایان، علت) را دریافت میکند. سپس یک User Task به نام «بررسی درخواست توسط مدیر واحد» قرار دارد که نقش انسانی مدیر را مدل میکند. پس از این Task، یک Exclusive Gateway (XOR) تعبیه شده است که بر اساس تصمیم مدیر (تأیید یا عدم تأیید) جریان را به دو مسیر مجزا هدایت میکند. مسیر «اعلام عدم تایید درخواست» به یک End Event ناموفق منتهی میشود. همچنین یک مسیر موازی برای «مشاهده وضعیت درخواست» در نظر گرفته شده است. تمامی Sequence Flowها دارای Condition Expression بر اساس متغیر فرآیند مانند {approved == true} هستند. فرآیند فاقد حلقه بازگشت (Loop) بوده و به صورت خطی با یک گره تصمیم طراحی شده است. از Timer Event یا پیامرسانی در این مدل استفاده نشده و سادهترین شکل گردش کار درخواستمحور پیادهسازی شده است.
مدل فرآیند اضافه کاری
قوانین کسب و کار فرآیند
در این فرآیند تنها از یک Exclusive Gateway (XOR) استفاده شده است که پس از Task «بررسی درخواست توسط مدیر واحد» قرار گرفته است. این Gateway دقیقاً یک خروجی را بر اساس مقدار متغیر فرآیند decision فعال میکند. قوانین تعریف شده روی Sequence Flow خروجی به شرح زیر است:
- اگر decision == "approved" یا approved == true، مسیر «اعلام تایید درخواست» انتخاب شده و فرآیند با موفقیت پایان مییابد.
- اگر decision == "rejected" یا approved == false، مسیر «اعلام عدم تایید درخواست» فعال شده و فرآیند به پایان ناموفق میرسد.
هیچ مسیر پیشفرض (Default Flow) تعریف نشده است تا در صورت عدم تطابق شرطها، خطای زمان اجرا رخ دهد و فرآیند متوقف شود. این Gateway از نوع انحصاری بوده و امکان همزمانی وجود ندارد. همچنین گره جمعکننده (Joining Gateway) نداریم زیرا پس از آن دو End Event مجزا قرار گرفتهاند.
برای مشاهده وضعیت درخواست یک Parallel Gateway جهت ارسال موازی به کارتابل درخواست کننده و اداری استفاده شده است.
طراحی فرم اضافه کاری
فرم «ثبت درخواست اضافه کاری» به صورت یک فرم داینامیک در Process Maker با قابلیت اعتبارسنجی سمت کاربر و سرور طراحی شده است. فیلد «نام و نام خانوادگی» از نوع Text با ویژگی Readonly یا Auto-fill است که به طور خودکار از دادههای کاربر وارد شده در سامانه (Session Variables) مقداردهی میشود. دو فیلد «ساعت شروع» و «ساعت پایان» از نوع DateTime با فرمت زمان (مثلاً HH:MM) و کنترل تقویم شمسی هستند. یک قانون تجاری (Business Rule) در رویداد onBlur این فیلدها تعریف شده که مدت زمان اضافه کاری را محاسبه کرده و در صورتی که کمتر از ۳۰ دقیقه یا بیشتر از ۴ ساعت باشد، خطای اعتبارسنجی نمایش میدهد. فیلد «علت درخواست» از نوع TextArea با حداکثر ۵۰۰ کاراکتر و امکان اعتبارسنجی محتوا (عدم وجود کاراکترهای غیرمجاز) است. دکمه «ثبت و ارسال به مدیر واحد» پس از تکمیل همه فیلدها فعال میشود و با کلیک، دادهها را به صورت یک شیء JSON به متغیر فرآیند ارسال کرده و فرم را میبندد. همچنین یک فیلد پنهان (Hidden) به نام request_time وجود دارد که زمان ثبت درخواست را از سرور دریافت و در پایگاه داده ذخیره میکند.




