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

مستند کدنویسی اسکریپت بررسی رابطه سازمانی

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

فرض کنید در یک فرایند، با توجه به اقدام کننده یک فعالیت کاربر(UserTask)، ادامه مسیر فرایند و اقدام کننده فعالیت کاربر(UserTask)، بعدی مشخص می‌شود .

برای مثال اگر اقدام‌کننده فعالیت ثبت درخواست، کارمند باشد اقدام کننده فعالیت بررسی درخواست توسط مدیر انجام می‌شود و اگر اقدام کننده فعالیت ثبت درخواست، مدیر باشد اقدام‌کننده فعالیت بررسی درخواست باید توسط مدیر بالاتر انجام شود .

برای تشخیص این مورد می‌توان از کد ذکر شده در ادامه در در قسمت کدنویسی درگاه انحصاری (Exclusive Gateway) استفاده کرد.

درواقع ما با بررسی رابطه سازمانی مربوط به فرایند می‌توانیم این مسیر را مشخص کنیم.

ابتدا باید طبق تصاویر، از دیتا بیس Common ، جدول [Associations]، Guid رابطه سازمانی مورد نظر را بیابیم و آن را در

‘AssociationGuid’ جای گذاری کنیم و از جدول [AssociationDetails]،اولین SubjectStaffGuid را در

‘ SubjectStaffGuid ‘ جای گذاری کنیم.

AssociationGuid

 

SubjectStaffGuid

 

مطابق تصاویر بالا ،2 تا Guid خواهیم داشت که باید داخل ” ” قرار بگیرند.

مثال :  ‘A1E20762-951F-4BED-96BD-88EAB1230253’

using System;

using System.Data;

using System.Data.SqlClient;

using Chargoon.Didgah.BPMS.CommonApi;

namespace Chargoon.Didgah.BPMS.Runtime

{ public class ConditionalFlow : IConditionalFlow

{

public IExecution Execution { get; set; }

public bool Evaluate()

{

//تعریف متغییر result که  قرار است در آن نتیجه به صورت 0 و 1 ریخته شود.//

int result =0;

// اتصال به دیتا بیس ، BPMS رشته اتصال میباشد.//

SqlConnection sqlConnection = new       SqlConnection(Execution.GetConnectionString(“BPMS”));

using (SqlCommand abc = new SqlCommand())

{   abc.Connection = sqlConnection;

abc.CommandType = CommandType.Text;

abc.CommandText = @”DECLARE @result int

if ((SELECT SubjectStaffGuid FROM Didgah_Common.dbo.com_AssociationDetails

WHERE AssociationGuid = ‘AssociationGuid’ AND

ObjectStaffGuid = (SELECT Guid FROM Didgah_Common.dbo.com_Staff where id = @StaffID))= ‘SubjectStaffGuid’)

SET @result = 1

else

SET @result = 0

SELECT @result”;

___LastIntractorStaffId// متغییر عمومی هست که درآن Id آخرین اقدام کننده فرایند قرار میگیرد.

abc.Parameters.AddWithValue(“@StaffID”, Execution.IntegerValue(“___LastInteractorStaffId”));

sqlConnection.Open();

// خروجی کوئری را تبدیل به نوع داده عدد صحیح میکنیم و درون resultقرار میدهیم .//

result = Convert.ToInt32(abc.ExecuteScalar());

sqlConnection.Close();

}

//طبق کد ، 0 بودن به معنی کارمند بودن متقاضی و 1 بودن به معنی مدیر بودن متقاضی می باشد

//بنابراین این کد برای مسیری که متقاضی کارمند است میباشد .

if (result == 0)

return true;

else

return false;

}

}

}


[ratemypost]