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

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

یک راه­‌حل: برای حل مسئله می­‌توان از یک درگاه انحصاری پس از فعالیت کاربر مورد نظر استفاده کرد و شرط قرار گرفته بر روی مسیری که در صورت صادق شدن مجدد فرایند را به فعالیت کاربر مورد نظر هدایت می‌کند، کدی قرار می­‌گیرد که تاریخ تکمیل فعالیت را با تاریخ مورد نظر مقایسه می‌­کند. در این فرایند فرض شده است که فعالیت کاربر ثبت درخواست باید تا تاریخ 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 برگشت داده می‌­شود که منجر به ادامه فرایند از مسیر پیش‌فرض می‌شود.

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

شکل 5

نظرات کاربران 0 نظر

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *