شرح صورت مسئلهاگر در فرآیندی برای مثال نام درخواستکننده از نوع سمت سازمانی باشد و نیاز باشد بر حسب این نام در آرشیو فعالیتها امکان جستجو باشد، نیاز است به این صورت عمل کنیم:
در فعالیت کاربر (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 );
}
}
}
}