شرح صورت مسئله:
نمایش اطلاعات فرد روی فرم:
فرض کنید در یک فرآیند نیاز است که روی فرم یک فعالیت کاربر (UserTask) نام واحد سازمانی یک فرد را نمایش دهیم.
با استفاده از کد زیر درون یک فعالیت-کدنویسی (ScriptTask) و همچنین نام فیلدی که نام واحد سازمانی را نشان میدهد درون بخش پارامترهای خروجی فعالیت کدنویسی (ScriptTask) و درون بخش پارامترهای ورودی فعالیت کاربر (UserTask) بعدی تعریف کنیم. در اینجا این فیلد ApplicantUnit است.
using System;
using System.Data;
using System.Data.SqlClient;
using Chargoon.Didgah.BPMS.CommonApi;
namespace Chargoon.Didgah.BPMS.Runtime
{
public class ScriptTask : IScriptTask
{
public IExecution Execution { get; set; }
public void Execute()
{
// تعریف متغیر UnitName از جنس رشته تا مقداردهی شود.//
string UnitName = “”;
// اتصال به دیتا بیس. BPMS نام رشته اتصال است.//
SqlConnection sqlConnection = new SqlConnection(Execution.GetConnectionString(“BPMS”));
using (SqlCommand SqlCommand1 = new SqlCommand())
{
SqlCommand1.Connection = sqlConnection;
SqlCommand1.CommandType = CommandType.Text;
// کوئری SQL که در آن نام واحد سازمانی را از جدول Departments و Staff با استفاده از متغیر @StaffID فرد مورد نظر، نام واحد سازمانی شخص را به دست میآوریم. //
SqlCommand1.CommandText = @”SELECT dep.[Title]
FROM Didgah_Common.dbo.com_Departments as dep
INNER JOIN Didgah_Common.dbo.com_Staff as staff
ON dep.[id] = staff.[DepartmentId]
where staff.Id = @StaffID”;
//متغیر @StaffID را در این بخش مقداردهی میکنیم. برای مثال در این بخش ___StarterStaffId که مقدار
StaffId فرد شروعکننده است را درون این متغیر میریزیم.//
SqlCommand1.Parameters.AddWithValue(“@StaffID”,
Execution.IntegerValue(“___StarterStaffId”));
sqlConnection.Open();
SqlDataReader reader = SqlCommand1.ExecuteReader();
while (reader.Read())
{
// خروجی کوئری بالا که نام واحد سازمانی فرد شروعکننده است را درون متغیر UnitName میریزیم.//
UnitName = reader[0].ToString();
}
sqlConnection.Close();
// متغیر UnitName را درون فیلدی که روی فرم هست و قرار استنام واحد درخواستدهنده (ApplicantUnit) را نمایش دهد میریزیم.//
Execution.SetVariable(“ApplicantUnit”,UnitName);
}
}
}