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

محاسبه n اُمین روز یک ماه

محاسبه nامین روز یک ماه

شرح صورت مسئله

فرض کنید در یک فرآیند نیاز است که یک فعالیت کاربر(UserTask) تا روز 15 ماه شمسی انجام شود و اگر زمان ساخت فعالیت کاربر بعد از 15 ماه بود، باید این فعالیت تا 15 ماه بعدی انجام شود.

برای جامع بودن راه حل، فرض کنید اگر در یک فرایند نیاز باشد با درنظر گرفتن زمان حال،n  اُمین روز آن ماه محاسبه شود می‌توان ازکد پایین در فعالیت کدنویسی (ScriptTask) استفاده کرد.

بعد از محاسبه این زمان باید تاریخ به دست آمده در یک فیلد از جنس تاریخ ساعت ذخیره و از این فیلد در رخداد زمانسنج که به صورت مرزی روی فعالیت است استفاده کرد(BoundaryTimer). در این مثال نام فیلد تاریخ VisibleDate است.

همچنین فیلد تاریخ محاسبه شده(VisibleDate) را در بخش پارامترهای خروجی فعالیت کدنویسی (ScriptTask) و درون بخش پارامترهای ورودی رخداد مرزی زمانسنج (BoundaryTimer) مورد نظر تعریف می‌کنیم.

محاسبه روز یک ماه

 

ثبت اطلاعات ورودی

 

محاسبه روز

using System;
using Chargoon.Didgah.BPMS.CommonApi;
using System.Globalization;
namespace Chargoon.Didgah.BPMS.Runtime
{
public class ScriptTask : IScriptTask
{
public IExecution Execution { get; set; }
public void Execute()
{
//تعریف متغییر هایی از جنس عدد صحیح کهYearو MonthوDay تاریخ فعلی در انها به صورت مجزا درج میشود
و  NewYearو NewMonth ماه و سال مربوط به روز n ام میباشد و برای مثال روزn ام را 15 مقدار میدهیمDayNth =15 .//
int Year = 0, Month = 0, Day = 0, DayNth = 15
, NewMonth=0, NewYear=0;
//تعریف p به عنوان یکobject  از کلاس PersianCalendar برای بررسی تاریخ به صورت تاریخ شمسی//
PersianCalendar p = new PersianCalendar();
//تعریف date1که در آن تاریخ لحظه را میریزیم. //
DateTime date1 = DateTime.Now;
//سال و ماه و روز تاریخ date1 را درون متغییر های عدد صحیحی که در ابتدا تعریف کرده ایم میریزیم.//
Year = p.GetYear(date1);
Month = p.GetMonth(date1);
Day = p.GetDayOfMonth(date1);
//حال بررسی میکنیم که ماه تاریخ  الان برابر با 12 میباشد یا نه و همچنین روز بزرگتر یا کوچکتر از روز مدنظر میباشد.
طبق هر شرط متغییر های NewMonth و NewYearرا مقدار دهی میکنیم.//
if (Day > 2 && Month == 12)
{
NewMonth = 1;
NewYear = Year + 1;
}
Else
if (Day > 2 && Month!= 12)
{
NewMonth = Month +1;
NewYear = Year;
}
Else
NewMonth = Month;
NewYear = Year;
// لازم است این ماه و سال به دست امده را به تاریخ میلادی تبدیل کنیم و درون  فیلد
VisibleDate
// درج کنیم.
int FinalYear = 0, FinalMonth = 0, FinalDay = 0;
DateTime FinalDate= new DateTime(NewYear ,NewMonth ,DayNth ,p);
FinalYear = FinalDate.Year;
FinalMonth = FinalDate.Month;
FinalDay = FinalDate.Day;
DateTime Date2 = new DateTime(FinalYear,FinalMonth,FinalDay);
Execution.SetVariable("VisibleDate",Date2);
}
}
}

 


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