شرح صورت مسئله: اگر در فرآیندی برای مثال نام درخواستکننده از نوع سمت سازمانی باشد و نیاز باشد بر حسب این نام در آرشیو فعالیتها امکان جستجو باشد، نیاز است به این صورت عمل کنیم:
در فعالیت کاربر (UserTask) که در فرم مربوط به آن فیلد نام از نوع سمت سازمانی وجود دارد، در بخش کدنویسی قبل از ساخت این فعالیت، کد زیر را مینویسیم و سپس در بخش پارامترهای خروجی فعالیت کاربری (UserTask) که در فرم مربوط به آن فیلد سمت سازمانی موردنظر وجود دارد یک متغیر از نوع رشته تعریف میکنیم (در اینجا Starter).
در ادامه در بخش مستندات المان فعالیتهای کاربر (UserTask) بعدی نام این متغیر را درون براکت تعریف میکنیم ([Starter]).
using System;
using System.Data;
using System.Data.SqlClient;
using Chargoon.Didgah.BPMS.CommonApi;
namespace Chargoon.Didgah.BPMS.Runtime
{
public class ScriptUserTask : IScriptUserTask
{
public IExecution Execution { get; set; }
public void Execute()
{
// تعریف متغییر starter از جنس رشته تا مقداردهی شود.//
string starter =””;
// اتصال به دیتابیس. BPMSConnection نام رشته اتصال است.//
SqlConnection conn = new SqlConnection(Execution.GetConnectionString(“BPMSConnection”));
using ( SqlCommand cmd = new SqlCommand()) {
cmd.Connection = conn;
cmd.CommandType =CommandType.Text;
// کوئری SQL که در آن نام سمت سازمانی شخص را با استفاده از متغییر @StaffID فرد موردنظر به دست میآوریم. //
cmd.CommandText =@”SELECT P.[DisplayName]
FROM Didgah_Common.dbo.com_persons AS P
LEFT JOIN Didgah_Common.dbo.com_Users AS U ON P.Guid = U.personGuid
LEFT JOIN Didgah_Common.dbo.com_StaffUsers AS SU ON U.Id = SU.UserId
LEFT JOIN Didgah_Common.dbo.com_Staff AS S ON SU.StaffId = S.Id
WHERE S.id = @StaffId ” ;
//متغیر @StaffID را در این بخش مقداردهی میکنیم. برای مثال در این بخش ___StarterStaffId که مقدار StaffId فرد شروعکننده است را درون این متغییر میریزیم.//
cmd.Parameters.AddWithValue(“@StaffId”,Execution.IntegerValue(“___StarterStaffId”));
conn.Open();
starter= cmd.ExecuteScalar().ToString();
conn.Close();
// مقداردهی به فیلد Starter
Execution.SetVariable(“Starter”, starter );
}
}
}
}