vdcasino
betexper
imajbet
perabet
casinomaxi
ilbet

چنانچه در هریک از مراحل نصب یا کاربری نرم‌افزارها به مشکلی برخورد کرده‌اید یا هر سوال، اشکال یا ابهامی در این زمینه دارید، می‌توانید پاسخ خود را ابتدا در مطالب موجود جستجو و در صورت لزوم به عنوان یک مبحث جدید مطرح کنید، تا کارشناسان پشتیبانی به آن پاسخ دهند.

به منظور ثبت سوال جدید و یا پاسخ به موضوعات موجود، ابتدا می بایست از طریق صفحه مربوطه به سامانه وارد شوید. چنانچه نام کاربری دریافت نکرده اید، به صورت رایگان و از طریق صفحه مربوطه، ابتدا در سامانه ثبت نام نمایید.

انجمن های پشتیبانی سیمرغ نوسا

قبليقبلي Go to previous topic
بعديبعدي Go to next topic
آخرين ارسال 27 خرداد 1403 04:00 ب.ظ توسط  Tariverdi
عدم حضور کاربران در فرایندها: 2- مدیریت عدم حضورها از طریق برنامه گردش کار
 0 پاسخ
مرتب:
شما مجاز به پاسخ به اين پست نمي باشيد.
مولف پيغام ها


کاربر باتجربه


کاربر باتجربه


--
27 خرداد 1403 04:00 ب.ظ

    در این مطلب با نحوه نوشتن کدها و اسکریپتهای مناسب در برنامه گردش کار، برای مدیریت عدم حضورها آشنا می شویم. برای این کار از متدهای خاص مرتبط با عدم حضورها در موجود WorkDateUtils استفاده می کنیم. البته لازم به توضیح است که برای استفاده بهتر از این مستند، لازم است با مفهوم عدم حضور آشنا باشید و نیز نحوه مدیریت و ثبت دستی عدم حضورها از طریق رابط کاربری را آموخته باشید. بنابراین در صورت عدم آشنایی و تسلط به موارد یادشده، توصیه می شود قبل از مطالعه مستند جاری، ابتدا مطلب عدم حضور کاربران در فرایندها: 1- مفاهیم و نحوه ثبت دستی عدم حضورها  را مطالعه کنید.

    در ابتدا ممکن است این سوال به ذهن برسد که اساسا چه نیازی به مدیریت عدم حضورها از طریق برنامه وجود دارد. به عبارت دیگر این روش چه امکانات اضافه ای را در اختیار مدیر سیستم قرار می دهد. به این ترتیب، بحث را با ضرورت روش برنامه نویسی برای مدیریت عدم حضورهای کاربران آغاز می کنیم.

    ضرورت مدیریت عدم حضورها در برنامه گردش کار

    هرگاه بخواهیم در جریان گردش کار، عدم حضورها را به شکل سیستماتیک و خودکار ثبت و یا حذف کنیم آنگاه به برنامه نویسی نیاز پیدا می کنیم. به عبارت دیگر میزان مکانیزه شدن مدیریت عدم حضورها، تعیین کننده میزان پیاده سازی این مورد در برنامه گردش کار است.  برای نمونه به مثالهای زیر توجه کنید:

    مثال 1: ثبت عدم حضور روزانه پس از ثبت ماموریت: فرض کنید در یک گردش کار خدمات پس از فروش، سرپرست پشتیبانی، ماموریت نصب و راه اندازی یک محصول را به یک کارشناس محول می کند. حال لازم است که سیستم بطور خودکار، روز ماموریت این کارشناس را به صورت یک عدم حضور روزانه و  با عنوان ماموریت، ثبت نماید.

    مثال2: حذف عدم حضور روزانه پس از لغو مرخصی: فرض کنید در یک سیستم پرسنلی، یک روز خاص برای یک کاربر بصورت یک عدم حضور روزانه و با عنوان مرخصی ثبت شده است. حال اگر به هر دلیل، این مرخصی لغو شود آنگاه باید سیستم بطور اتوماتیک این عدم حضور را حذف نماید.

    مثال 3: ثبت عدم حضور ساعتی پس از نوبت دهی : فرض کنید در یک گردش کار نوبت دهی در درمانگاه، به عنوان مثال ساعت 11 تا 12 برای نوبت معاینه و درمان به یک بیمار اختصاص می یابد. حال سیستم باید بطور اتوماتیک، این محدوده زمانی را برای پزشک فوق بصورت یک عدم حضور ساعتی ثبت نماید. به این ترتیب این محدوده زمانی برای نوبت دهی های بعدی قابل انتخاب و تخصیص نخواهد بود.

    مثال4: حذف عدم حضور ساعتی پس از انصراف از شرکت در جلسه: فرض کنید در یک گردش کار تنظیم جلسات، از ساعت 10 تا 12 برای یک کاربر، یک عدم حضور با عنوان شرکت در جلسه ثبت شده است. حال اگر کاربر به هر دلیل و از طریق گردش کار، جلسه یاد شده را لغو نماید آنگاه باید سیستم بطور اتوماتیک، این عدم حضور را برای این کاربر حذف نماید.

    ملاحظه می کنید که در گردش کارهایی از نوع مثالهای فوق، امکان مدیریت دستی عدم حضورها با کارآیی مناسب وجود ندارد و باید برای مکانیزه کردن عدم حضورها از امکانات برنامه نویسی سیستم استفاده شود.

    توضیح مهم: در توابعی که در ادامه توضیح داده خواهد شد، تاریخها با فرمت استاندارد javascript (ISO Unix) درج می شود. برای آشنایی و اطلاعات بیشتر در مورد این فرمت، می توانید به مستند ویژگیها و کارکردهای خاص فیلدهای نوع تاریخ مراجعه کنید.

     

    ثبت عدم حضور کاربر از طریق برنامه گردش کار

    ثبت عدم حضور روزانه

    عدم حضور روزانه از طریق متد InsUserDailyBusyTime ثبت می شود. الگوی کلی این متد به شکل زیر است:

    InsUserDailyBusyTime(userKey or userName, date, title, desc):  number

    این متد، برای کاربر user تاریخ date را به عنوان عدم حضور روزانه ثبت می کند. در اینجا پارامتر title نشان دهنده عنوان عدم حضور و پارامتر desc نشانگر شرح عدم حضور می باشد. ضمنا خروجی این تابع، یک عدد صحیح و برابر با کلید عدم حضور است بنابراین هر عدم حضور یک کلید مختص به خود را دارد.

    مثال 1- ثبت عدم حضور برای ماموریت کاری

     فرض کنید در گردش کار پشتیبانی می خواهیم برای کاربر tariverdi یک ماموریت نصب و راه اندازی نرم افزار در روز 10 خرداد 1403 را ثبت کنیم. این تاریخ در فیلدی بنام تاریخ ماموریت*  (missionDate)ثبت و ذخیره می شود. ضمنا پس از ثبت این ماموریت، می خواهیم سیستم بطور خودکار یک عدم حضور روزانه در تاریخ یاد شده ثبت کند. برای این کار باید در هنگام ثبت ماموریت، تابع زیر را call کنیم:

     

     

     

     

     

     

    * : دقت کنید که این فیلد باید از نوع "تاریخ" باشد.

    با اجرای این تابع، می توانیم عدم حضور ثبت شده را در گزارش عدم حضورهای روزانه کاربر ملاحظه کنیم:

     

    مثال 2- ثبت عدم حضور مرخصی تشویقی برای روز پس از ماموریت

    به عنوان یک مثال پیچیده تر، فرض کنید در یک سازمان خاص، روال کار به این شکل است که روز بعد از بازگشت از ماموریت، برای کارمند یک روز مرخصی تشویقی در نظر گرفته می شود. در این صورت تابع مثال قبل به شکل زیر تغییر می کند:

     

     

     

     

     

     

     

     

     

    ملاحظه می کنید که دو سطر به تابع اضافه شده است که در سطر اول، تاریخ روز بعد در متغیر dateAfterMission قرار می گیرد و در سطر دوم، برای این روز یک عدم حضور با عنوان "مرخصی تشویقی بعد از ماموریت" برای کارشناس ثبت می شود. این عدم حضور، در گزارش عدم حضورهای روزانه به شکل زیر نمایش داده می شود:

    ثبت عدم حضور ساعتی

    عدم حضور ساعتی از طریق متد InsUserHourlyBusyTime ثبت می شود. الگوی کلی این متد به شکل زیر است:

    InsUserHourlyBusyTime(userKey or userName, startDate, endDate, title, desc):  number

    این متد، برای کاربر user محدوده زمانی startDate  تا endDate  را به عنوان عدم حضور ساعتی ثبت می کند. در اینجا پارامتر title نشان دهنده عنوان عدم حضور و پارامتر desc نشانگر شرح عدم حضور است.  ضمنا خروجی این تابع یک عدد صحیح و برابر با کلید عدم حضور است بنابراین هر عدم حضور دارای یک کلید منحصر به خود است.

    مثال 3- ثبت عدم حضور برای یک جلسه کاری

     فرض کنید در یک گردش کار تنظیم جلسات، برای یک کاربر خاص، یک جلسه کاری از ساعت 10 تا 12 روز 20 خرداد 1403  ثبت می شود. ثبت این محدوده زمانی در فیلدهای زمان شروع* (beginTime) و زمان پایان* (endTime) انجام می شود. حال می خواهیم سیستم بطور خودکار، محدوده زمانی این جلسه را به عنوان یک عدم حضور ساعتی ثبت نماید. برای این کار باید در هنگام ثبت جلسه کاری، تابع زیر اجرا شود:

     

     

     

     

     

    در این تابع، ابتدا مقدار فیلدهای زمان شروع و پایان جلسه به ترتیب در متغیرهای begin و end ذخیره شده و سپس به صورت پارامتر به تابع InsUserHourlyBusyTime پاس می شود. پس از اجرای این تابع، عدم حضور ساعتی کاربر ثبت می شود و این عدم حضور در گزارش عدم حضور ساعتی کاربر به شکل زیر نمایش داده می شود:

     

    *: از آنجایی که در این فیلدها تاریخ به همراه ساعت ثبت می شود لذا این فیلدها باید از نوع "تاریخ و زمان" باشند.

    مثال 4- ثبت عدم حضور برای جلسه توجیهی پس از ماموریت

    حال فرض کنید در یک شرکت خاص، مامورین باید در فردای روز ماموریت باید در یک جلسه توجیهی دو ساعته (از ساعت 9 تا 11) دستاوردهای ماموریت را برای مدیران شرکت تشریح نمایند. در این صورت، تابع اجرایی مثال 1 به شکل زیر توسعه پیدا می کند:

     

     

     

     

     

     

     

     

     

     

     

    در این مثال، بخش توسعه یافته با رنگ آبی مشخص است. در این بخش ابتدا یک روز به تاریخ ماموریت افزوده شده و در متغیر dateAfterMission قرار می گیرد. و سپس زمانهای شروع و خاتمه جلسه توجیهی به ترتیب در متغیرهای beginTime و endTime قرار می گیرد و در انتها یک عدم حضور ساعتی با عنوان "جلسه توجیهی" برای کارشناس ثبت می شود.

    *: یادآوری می شود که dateAfterMission ساعت صفر روز بعد از ماموریت است و به همین خاطر باید ساعتهای شروع و خاتمه را با استفاده از متد setHours به این متغیر اضافه کنیم.

    در هر صورت پس از اجرای این تابع اجرایی، عدم حضور جلسه توجیهی به شکل زیر در گزارش عدم حضورهای ساعتی کاربر قابل مشاهده خواهد بود:

     

    استعلام وضعیت عدم حضور کاربر

    در مثالهای بخش قبل وقتی که می خواستیم یک ماموریت روزانه و یا جلسه ساعتی را ثبت کنیم فرض بر این بود که این کاربر در تاریخ و زمان مورد نظر حضور دارد و سپس پس از ثبت ماموریت و یا جلسه کاری، اقدام به ثبت عدم حضور می کردیم. اما در واقعیت این طور نیست و به همین دلیل ابتدا باید وضعیت عدم حضور کاربر در تاریخ و زمان مورد نظر خود را بررسی کنیم و در صورت حضور، اقدام به ثبت ماموریت و جلسه نماییم. بنابراین در این بخش نحوه آگاهی از وضعیت عدم حضور کاربر را شرح می دهیم.

    وضعیت عدم حضور روزانه

    برای آگاهی از وضعیت عدم حضور یک کاربر در یک تاریخ خاص، از تابع IsUserDailyBusy با الگوی زیر استفاده می کنیم:

    IsUserDailyBusy(userKey or userName, date): Boolean

    در این تابع، وضعیت عدم حضور کاربر user در تاریخ date بررسی می شود. خروجی این تابع یک مقدار منطقی (true/false) است به این شکل که اگر کاربر در این تاریخ، حضور داشته باشد، مقدار این تابع false است و در غیر این صورت اگر در این تاریخ برای کاربر عدم حضور ثبت شده باشد، مفدار این تابع، true خواهد بود. لازم به توضیح است که اگر مقداری برای date پاس نشود معادل زمان حال (now) فرض می شود.

    مثال 5: در مثال مربوط به ثبت ماموریت روزانه (مثال 1)، بررسی وضعیت عدم حضور کاربر را اضافه می کنیم. در این صورت، تابع اجرایی WorkTaskSetDailyBusyTime به شکل زیر تغییر می کند:

    همانطور که ملاحظه می کنید یک شرط به تابع اضافه شده است که وضعیت عدم حضور کاربر را بررسی می کند. بر این اساس اگر در تاریخ مورد نظر، برای کاربر عدم حضور ثبت شده باشد، آنگاه سیستم پیغام می دهد که در این تاریخ کاربر حضور ندارد و در غیر این صورت برای او عدم حضور ثبت می کند.

    وضعیت عدم حضور ساعتی

    برای آگاهی از وضعیت عدم حضور یک کاربر در یک بازه زمانی خاص، از تابع IsUserHourlyBusy با الگوی زیر استفاده می کنیم:

    IsUserHourlyBusy(userKey or userName, date): Boolean

    در این تابع، وضعیت عدم حضور کاربر user در تاریخ و زمان (ساعت و دقیقه، ثانیه) date بررسی می شود. خروجی این تابع یک مقدار منطقی (true/false) است به این شکل که اگر کاربر در این زمان، حضور داشته باشد، مقدار این تابع false است و در غیر این صورت اگر در این تاریخ و زمان، برای کاربر عدم حضور ثبت شده باشد، مفدار این تابع، true خواهد بود. لازم به توضیح است که اگر مقداری برای date پاس نشود معادل زمان حال (now) فرض می شود.

    مثال 6: در مثال مربوط به ثبت جلسه کاری (مثال 3) ، بررسی وضعیت عدم حضور ساعتی کاربر را اضافه می کنیم. در این صورت، تابع اجرایی WorkTaskSetHourlyBusyTime به شکل زیر تغییر می کند:

     

     

     

     

     

     

     

     

     

     همانطور که ملاحظه می کنید، در این تابع، شرط عدم حضور کاربر در ابتدای بازه زمانی چک شده است و در صورت عدم حضور، سیستم اعلام می کند که کاربر در این زمان حضور ندارد و در غیر این صورت یک عدم حضور ساعتی با عنوان جلسه کاری برای کاربر ثبت می کند.

    وضعیت کلی عدم حضور (روزانه و ساعتی)

    در این حالت، بطور کلی وضعیت عدم حضور کاربر فارغ از روزانه و یا ساعتی بررسی می شود. ضرورت این وضعیت، به تفاوت ماهیتی عدم حضورهای روزانه و ساعتی برمی گردد. برای درک بهتر این موضوع، مثالهای زیر توجه کنید:

    • اگر کاربری در یک روز خاص عدم حضور روزانه داشته باشد آنگاه نتیجه بررسی عدم حضور ساعتی برای این کاربر در تمام طول این روز، false خواهد بود به این معنی که از نظر سیستم، کاربر از نظر ساعتی حضور دارد.

    مثال 7: فرض کنید برای کاربر می خواهیم از ساعت 10 تا 12 روز 10 تیر 1403 یک جلسه کاری را ثبت کنیم. ضمنا فرض کنید این کاربر در این تاریخ عدم حضور روزانه دارد. حال اگر تنها عدم حضور ساعتی کاربر در این تاریخ را بررسی کنیم جواب منفی است اما با این وجود امکان ثبت این جلسه برای او وجود ندارد چون تمام روز در ماموریت است و حضور ندارد.

    • اگر کاربری در یک بازه زمانی خاص از یک روز، عدم حضور ساعتی داشته باشد، آنگاه نتیجه بررسی عدم حضور روزانه این کاربر در این روز، منفی یا false خواهد بود. یعنی این که از نظر سیستم این کاربر حضور روزانه دارد.

    مثال 8: فرض کنید می خواهیم یک ماموریت روزانه برای یک کارشناس در تاریخ اول تیر 1403 ثبت کنیم، این کارشناس در این تاریخ یک عدم حضور ساعتی با عنوان جلسه توجیهی نیز دارد. حال اگر تنها عدم حضور روزانه را برای این روز بررسی کنیم جواب منفی خواهد بود در حالی که کاربر حضور کامل در این روز ندارد و این تاریخ برای ماموریت روزانه مناسب نیست.

    •  تفاوت ماهیتی عدم حضور روزانه و ساعتی به این معنی نیست که این مانعه الجمع هستند یا به عبارت دیگر دو نوع عدم حضور بطور همزمان نمی توانند وجود داشته باشند.

    مثال 9:  برای مثال فرض کنید کاربری در ماموریت است و در این ماموریت قصد دارد یک کار شخصی خود را نیز انجام دهد که این کار شخصی دو ساعت زمان خواهد برد. بنابراین کاربر فوق، در یک روز خاص هم عدم حضور روزانه دارد و هم عدم حضور ساعتی. بنابراین اساسا این عدم حضورها مستقل از هم هستند و لذا استعلام یکی از انواع عدم حضور، نمی تواند به معنی عدم حضور از نوع دیگر باشد.

    به دلایل فوق، در شرایطی که صرف عدم حضور کاربر در یک تاریخ (و زمان) خاص، مهم باشد آنگاه برای اطمینان از عدم حضور کاربر، باید از تابع IsUserBusy با الگوی زیر استفاده  شود:

    IsUserBusy(userKey or userName, date): Boolean

    در این تابع، وضعیت عدم حضور روزانه یا ساعتی کاربر user در تاریخ (و زمان) date بررسی می شود. خروجی این تابع نیز، یک مقدار منطقی (true/false) است به این شکل که اگر کاربر در این تاریخ (و زمان)، حضور داشته باشد، مقدار این تابع false است و در غیر این صورت اگر در این تاریخ (و زمان)، برای کاربر عدم حضور ثبت شده باشد، مفدار این تابع، true خواهد بود. لازم به توضیح است که اگر مقداری برای date پاس نشود معادل زمان حال (now) فرض می شود.

     

    فهرست عدم حضورهای کاربر

    کارکرد اصلی فهرست عدم حضورها، در سیستم های نوبت دهی و توزیع کار است. برای مثال در مورد نوبت دهی، فرض کنید در یک درمانگاه، نوبت دهی ویزیت پزشکان از طریق یک گردش کار انجام می شود. در این گردش کار، هر نوبت استفاده شده به منزله یک عدم حضور ساعتی است ولذا برای ثبت یک نوبت برای بیمار، ابتدا باید فهرست نوبتهای پرشده یا در واقع عدم حضورهای ساعتی پزشک را ملاحظه کنیم و با یک مکانیزم خاصی یکی از نوبتهای خالی را به بیمار اختصاص بدهیم.

    در مورد مثال برای توزیع کار، فرض کنید در یک گردش کار خدمات IT، سرپرست بخش می خواهد ماموریت روزانه ای را برای یک کارشناس برای توسعه و رفع اشکال شبکه یک مشتری ثبت کند. برای این کار سرپرست ابتدا باید فهرست عدم حضورهای روزانه کارشناس در هفته جاری را مشاهده کند و سپس با مکانیزم خاصی، یکی از روزهای حضور کارشناس را برای این ماموریت انتخاب کند.

    از مثالهای فوق مشخص است که دو نوع فهرست عدم حضور روزانه و ساعتی وجود دارد که در ادامه به آن می پردازیم.

    فهرست عدم حضورهای روزانه

    فهرست عدم حضورهای روزانه با استفاده از تابع GetUserDailyBusyTimeList و با الگوی زیر تولید می شود:

    GetUserDailyBusyTimeList(startDate, endDate, title): array of WorkDailyUBTInfo

    این تابع، فهرست عدم حضور روزانه کاربر user را بین دو تاریخ startDate تا endDate باز می‌گرداند. این محدوده شامل startDate می‌شود ولی شامل endDate نمی‌شود یعنی تا روز قبل از endDate را شامل می شود. title عنوان عدم حضور مورد نظر است که اجباری نیست و اگر درج شود فهرست نتایج را بر اساس عنوان مورد نظر، محدود می‌کند.

    خروجی این تابع، فهرستی از عدم حضورهای روزانه را به شکل آرایه ای از موجودات با نام WorkDailyUBTInfo است. این موجود دارای ویژگی‌های زیر است:

    ملاحظه می کنید که ویژگیهای این موجود (کلید، عنوان و تاریخ عدم حضور)، غیرقابل ویرایش و Read Only هستند.

    مثال 10: فهرست ماموریتهای روزانه کارشناس در هفت روز آینده

    فرض کنید که سرپرست بخش پشتیبانی می خواهد برای یک کارشناس، ماموریت روزانه ای را تخصیص دهد. این سرپرست برای اطمینان از حضور کارشناس، می خواهد سیستم هفت روز آینده را برای این کارشناس بررسی و روزهای عدم حضور کارشناس را به او اعلام نماید. برای این کار از تابع زیر استفاده می کند:

    برای درک بهتر روند کار، بخشهای مختلف این تابع را بررسی می کنیم:

    در سه سطر اول، تاریخ شروع و پایان محدوده مورد نظر (از فردا به مدت 7 روز) تعیین می شود. برای این کار، ابتدا تاریخ حال در متغیر today قرار می گیرد و سپس با استفاده از متد getDate مقدار روز تاریخ را استخراج می کنیم و سپس با افزودن عدد 1، مقدار این روز را با استفاده از متد setDate در beginTime و به همین ترتیب، تاریخ 8 روز بعد در endTime قرار می گیرد. یادآوری می شود که محدوده تاریخی شامل خود روز endTime نمی شود بنابراین تاریخ پایان را یک روز بیشتر از محدوده مورد نظر یعنی 8 روز  در نظر می گیریم.

    در این قسمت برای امکان نمایش فهرست عدم حضورهای روزانه، محتوای آرایه خروجی busyIn7Days را (به شرط وجود) به یک فیلد آرایه تعریف شده در گردش کار بنام busyDays منتقل می کنیم.

    در اینجا اگر عدم حضوری در 7 روز آینده وجود نداشته باشد، پیغام حضور کارشناس در تمام هفت روز ظاهر می شود.

    پس از اجرای این تابع، فهرست عدم حضورهای کارشناس مورد نظر به شکل زیر در فرم نمایش داده می شود:

     

    تمرین: در این مثال شرط تعطیل نبودن عدم حضورهای روزانه در نظر گرفته نشده است. این شرط را اعمال کنید تا فهرست عدم حضورهای روزانه را در 7 روز کاری آینده ملاحظه کنید.

    سوال چالشی: به توجه به اینکه امکان مشاهده فهرست عدم حضورهای روزانه از طریق کلاینت ویندوز وجود دارد، به نظر شما چه نیازی به ملاحظه این فهرست از طریق برنامه وجود دارد؟ ضمنا این روش چه مزایایی نسبت به مشاهده از طریق رابط کاربری دارد؟

    فهرست عدم حضورهای ساعتی

    فهرست عدم حضورهای ساعتی با استفاده از تابع GetUserHourlyBusyTimeList و با الگوی زیر تولید می شود:

    GetUserHourlyBusyTimeList(userKey or username, startDate, endDate): array of WorkHourlyUBTInfo

    این تابع، فهرست عدم حضور ساعتی کاربر user را بین دو تاریخ (و زمان) startDate و endDate باز می‌گرداند. محدوده شامل startDate می‌شود ولی شامل خود endDate نمی‌شود. خروجی این تابع، فهرستی از عدم حضورهای روزانه را به شکل آرایه ای از موجودات با نام WorkDailyUBTInfo است. این موجود دارای ویژگی‌های زیر است:

    تمام ویژگیهای فوق غیرقابل ویرایش (read only) هستند.

    مثال 11: فهرست نوبتهای پر شده یک روانشناس در یک روز

    فرض کنید در یک گردش کار مدیریت درمان در مطب یک روانشناس، می خواهیم یک نوبت مشاوره برای یک بیمار اختصاص دهیم. برای این کار لازم است :

    1. زمان حضور روانشناس در مطب را به نوبتهای مساوی (مثلا یک ساعته) تقسیم کنیم. در این صورت عدم حضور ساعتی در بازه نوبتها به منزله نوبت پرشده خواهد بود.
    2. برای ثبت نوبت ابتدا باید فهرست نوبت های پرشده (عدم حضورهای ساعتی) روانشناس را ملاحظه کنیم و سپس یکی از نوبتهای خالی را برای بیمار ثبت کنیم.

    برای این کار نوبتهای مشاوره روانشناس را به شکل زیر تعیین می کنیم:

    ملاحظه می کنید که نوبتهای مشاوره به صورت یک ساعته تنظیم شده است.

    حال برای ملاحظه نوبتهای پرشده، از تابع زیر استفاده می کنیم:

    برای درک بهتر روال کار، بخشهای مختلف این تابع را بررسی می کنیم:

    در این قسمت، تاریخ و زمان امروز در متغیر time قرار می گیرد، این تاریخ شامل زمان (ساعت و دقیقه و ثانیه) نیز می شود. حال باید با استفاده از متد toDateString زمان (ساعت، دقیقه و ثانیه) تاریخ را حذف کنیم و سپس با استفاده از متد setHours ،  ساعتهای مورد نظر خود را برای شروع و پایان تعیین کنیم. در اینجا، تاریخ و زمان ساعت شروع نوبتها (ساعت 16( و پایان نوبتها (ساعت 21( را تعیین می کنیم و به ترتیب در متغیرهای beginTime و endTime قرار می دهیم.

     

     

    در این مرحله، لیست عدم حضورهای ساعتی کاربر (نوبت های پرشده مشاوره) را با استفاده از متد GetHourlyBusyTimeList تولید و در متغیر آرایه با نام busySessions قرار می دهیم.

    در این قسمت برای امکان نمایش فهرست عدم حضورهای ساعتی (نوبتهای پرشده)، محتوای آرایه خروجی busySessions را (به شرط وجود) به یک فیلد آرایه تعریف شده در گردش کار بنام busyTurns منتقل می کنیم.

    و در انتها، اگر عدم حضور (نوبت پرشده) ی در طول روز وجود نداشته باشد، آنگاه سیستم پیغام می دهد که تمام نوبتها خالی است.

    پس از اجرای این تابع، فهرست نوبت های پر شده روانشناس به شکل زیر در فرم نمایش داده می شود:

     

    حذف عدم حضور کاربر

    در روند گردش کارها ممکن است در مراحلی از کار، بخواهیم عدم حضورها را به شکل مکانیزه حذف کنیم. برای مثال فرض کنید سرپرست بخش پس از دیدن فهرست عدم حضورهای روزانه از نوع ماموریت، تصمیم می گیرد برای توزیع بهتر کارها، یکی از ماموریتهای کارشناس را حذف کند. با برای مثال در گردش کار مدیریت درمان، می خواهیم یکی از نوبتهای پر شده را به دلیل انصراف بیمار، حذف کنیم. برای این موارد، توابع خاصی در برنامه گردش کار، پیاده سازی شده است که در ادامه به ترتیب شرح داده می شود. حضورهای

    حذف عدم حضور روزانه

    حذف عدم حضور روزانه از طریق تابعی بنام DelUserDailyBusyTime و با الگوی زیر انجام می شود:

    DelUserDailyBusyTime (key)

    این تابع، عدم حضور با کلید key را حذف می کند. در بخشهای قبل گفته شد که هر عدم حضور، دارای یک کلید unique و منحصر به خود است بنابراین پارامتری که به این تابع پاس می شود، کلید عدم حضور است.

    مثال 21: حذف ماموریت یک روز خاص

    در مثال 10 فهرست عدم حضورها (ماموریتها) ی روزانه کارشناس را به شکل زیر، مشاهده کردیم:

     

     

    حال فرض کنید سرپرست بخش تصمیم می گیرد به دلیل اولویت کاری و نیاز به حضور کارشناس در شرکت، عدم حضور 23 خرداد، با عنوان معارفه کاری را حذف نماید. در شکل بالا ملاحظه می کنید که کلید این عدم حضور، 2027  است. بنابراین کافی است دستور زیر را در تابع اجرایی مرتبط اضافه نماید:

    WorkDateUtils.DelUserDailyBusyTime (2027)

    حذف عدم حضور ساعتی

    حذف عدم حضور ساعتی از طریق تابعی بنام DelUserHourlyBusyTime و با الگوی زیر انجام می شود:

    DelUserHourlyBusyTime (key)

    این تابع، عدم حضور ساعتی با کلید key را حذف می کند. یادآوری می شود که هر عدم حضور، دارای یک کلید unique و منحصر به خود است بنابراین پارامتری که به این تابع پاس می شود، کلید عدم حضور است.

    مثال 13: حذف یک نوبت مشاوره

    در مثال 11 فهرست نوبتهای مشاوره پر شده مرتبط با یک روانشناس را به شکل زیر، مشاهده کردیم:

     

    حال فرض کنید یکی از مراجعان نوبت مشاوره خود (نوبت 1: از 16 تا 17) را لغو می کند. در شکل بالا ملاحظه می کنید که کلید این عدم حضور، 241 است. بنابراین کافی است دستور زیر را در تابع اجرایی مرتبط اضافه کنیم:

    WorkDateUtils.DelUserHourlyBusyTime (241)

    پيوست ها
    شما مجاز به پاسخ به اين پست نمي باشيد.


    kurtkoy escort
    bostanci escort
    ankara escort
    comendo minha prima gordinha rajini murugan movie hd moglie con due negri calcaterra e lara scena hot mujeres con ropa interior transparente