شرح صورت مسئله
فرض کنید در یک OrphanList مشخصات تعدادی راننده وجود دارد و در بخشی از فرآیند نام راننده مورد نظر را انتخاب میکنیم و در بخش بعدی قصد داریم مشخصات راننده منتخب را روی فرم نمایش دهیم .
ابتدا در مدل دادهایی(DataModel) فرایند یک فیلد از جنس رابطه (Relation) تعریف میکنیم(DriverName) و OrphanList رانندگان (DriverProfile) را به آن اختصاص میدهیم و باقی اطلاعات راننده را طبق فیلدهای OrphanList در مدل دادهایی تعریف میکنیم. سپس در بخش پارامترهای خروجی فعالیت کاربری(UserTask) که نام راننده انتخاب شده، فیلد نام راننده را تعریف میکنم(ازنوع Guid).
و درون یک فعالیت کدنویسی(ScriptTask) کد زیر را نوشته و در بخش پارامترهای خروجی آن تمامی فیلدهای مشخصات راننده را تعریف میکنیم.(PhoneNumber,CarName ,CarTag)
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()
{
//تعریف متغییرهایی قرار است در آن مشخصات راننده ریخته شود.//
string PhoneNumber =””;
string CarName =””;
string CarTag =””;
// اتصال به دیتا بیس. BPMSConnectionنام رشته اتصال میباشد.//
SqlConnection conn = new SqlConnection(Execution.GetConnectionString(“BPMSConnection”) );
using (SqlCommand cmd = new SqlCommand())
{
cmd.Connection = conn;
cmd.CommandType =CommandType.Text;
// کوئری SQL که در آن با استفاده از نام راننده منتخب (DriverName@) اطلاعات آن از جدول ارفن// //موردنظر(DriverProfile)انتخاب میشود. //
cmd.CommandText =@” SELECT
PhoneNumber
,CarName
,CarTag
FROM [Didgah_DynamicDataModel].[dbo].[ddm_Orphan_DriverProfile]
WHERE Guid=@DriverName “;
cmd.Parameters.AddWithValue(“@DriverName”,Execution.GuidValue(“DriverName”));
conn.Open();
SqlDataReader reader = cmd.ExecuteReader();
while(reader.Read())
{
PhoneNumber = reader[0].ToString();
CarName =reader[1].ToString();
CarTag =reader[2].ToString();
}
conn.Close();
}
//مقداردهی فیلد های روی فرم //
Execution.SetVariable(“PhoneNumber”,PhoneNumber);
Execution.SetVariable(“CarName”,CarName );
Execution.SetVariable(“CarTag”, CarTag );
}
}
}
همچنین لازم به ذکر است که اگر باقی فیلدها در مدل دادهایی از جنس رابطه با همان OrphanList انتخاب کنیم، میتوانیم در قسمتی که پارامتهای ورودی را تعریف کردهایم به فیلدها مقدار فیلد رابطهایی را بدهیم که در مرحله قبلی انتخاب شده است. (DriverName)تا بدون نیاز به کدنویسی این کار را انجام دهیم:
[ratemypost]