شرح صورت مسئله: فرض کنید در یک 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) تا بدون نیاز به کدنویسی این کار را انجام دهیم: