پرش به محتوای اصلی

انتخاب مسیر فرایند بر اساس تاریخ

انتخاب مسیر فرایند

طرح مسئله:

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

یک راه­‌حل: جهت حل مسئله می­‌توان از یک درگاه انحصاری پس از فعالیت کاربر مورد نظر استفاده کرد و شرط قرار گرفته بر روی مسیری که در صورت صادق شدن مجدد فرایند را به فعالیت کاربر مورد نظر هدایت می‌کند، کدی قرار می­‌گیرد که تاریخ تکمیل فعالیت را با تاریخ مورد نظر مقایسه می‌­کند. در این فرایند فرض شده است که فعالیت کاربر ثبت درخواست می‌بایست تا تاریخ 1402/06/31 در کارتابل کاربر باقی بماند و امکان ادامه فرایند وجود نداشته باشد (شکل 1).

شکل 1

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

شکل 2

سپس در تب ورودی/خروجی فعالیت کاربر ثبت درخواست، فیلد تاریخ ثبت درخواست به عنوان پارامتر خروجی تعریف می­‌شود (شکل 3).

شکل 3

 

بر روی مسیر خیر، در قسمت نوع شرط Csharp انتخاب می­‌شود (شکل 4).

شکل 4

در قسمت کدنویسی کد ارائه شده قرار داده می­‌شود:

;using System

;using Chargoon.Didgah.BPMS.CommonApi

namespace Chargoon.Didgah.BPMS.Runtime

}

    public class ConditionalFlow : IConditionalFlow

}

        public IExecution Execution { get; set; }

()public bool Evaluate

}

;DateTime Date1 = new DateTime(2023, 09, 22)

;int Result = DateTime.Compare(Execution.DateTimeValue(“CompleteDate”), Date1)

if ((Result == -1) || (Result == 0))

;return true

else

;return false

{

{

{

کد ارائه شده عملیات زیر را انجام می‌­دهد:

  • ابتدا یک متغیر از نوع تاریخ و با مقدار معادل میلادی تاریخ 31/06/1402 ایجاد می‌شود (Date1).
  • با استفاده از دستور DateTime.Compare بین دو مقدار فیلد تاریخ ثبت شده در فرم (تاریخ ثبت درخواست) و متغیر Date1 مقایسه صورت می‌گیرد و نتیجه مقایسه در یک متغیر از نوع عدد صحیح ذخیره می­‌شود. در صورت کوچک‌تر بودن تاریخ تکمیل فعالیت کاربر نسبت به تاریخ مورد نظر نتیجه مقایسه 1- خواهد بود. در صورت برابر بودن این دو مقدار نتیجه مقایسه 0 خواهد بود.
  • در نهایت با استفاده از دستور if و بررسی مقدار نتیجه بررسی دو تاریخ، در صورت کوچک‌تر بودن تاریخ ثبت فرم از تاریخ مورد نظر و یا برابر بودن این دو مقدار نتیجه true برگشت داده می­‌شود که منجر به اجرای مسیر خیر می‌­شود. در غیر این صورت مقدار false برگشت داده می‌­شود که منجر به ادامه فرایند از مسیر پیش‌فرض می­‌شود.

پس از اجرای فرایند در صورتی که تاریخ ثبت درخواست، کوچک‌تر یا مساوی تاریخ 31/06/1402 باشد، فرایند از مسیر خیر ادامه پیدا می‌کند و فرم به کارتابل کاربر باز خواهد گشت و در صورتی که تاریخ ثبت درخواست پس از 31/06/1402 باشد فرایند از مسیر بله ادامه پیدا می‌کند (شکل 5).

شکل 5


[ratemypost]
دستیار هوشمند چارگون دستیار هوشمند چارگون