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

طرح مسئله: فرض کنید در یک فرایند، با توجه به اقدام‌کننده یک فعالیت کاربر (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;

}

}

}

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

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

یک × یک =