طرح مسئله:
فرض کنید مدل داده ای پایه ای داریم که در آن یک فیلد سمت سازمانی دیدگاه تعریف شده است، میخواهیم در صورت انتخاب گزینه ای از مدل داده ای پایه روی فرم، سمت انتخاب شده در فیلد سمت سازمانی دیدگاهی که برای این رکورد در مدل داده ای پایه تعریف شده است به عنوان اقدام کننده مرحله بعد (یا هر مرحله ای در فرایند) انتخاب شود.
راه حل:
در طراحی فرایند، تسکی که قرار است اقدام کننده آن از مدل داده ای پایه انتخاب شود را انتخاب میکنیم و از قسمت اقدام کنندگان، اقدام کننده آن را روی کدنویسی قرار میدهیم و از قسمت کدنویسی فعال شده کد زیر را مینویسیم


using System;
using Chargoon.Didgah.BPMS.CommonApi;
using System.Data;
using System.Data.SqlClient;
namespace Chargoon.Didgah.BPMS.Runtime
{
public class OwnerSelector : IOwnerSelector
{
public IExecution Execution { get; set; }
public Owner GetOwner()
{
//تعریف متغیر عدد صحیح جهت ذخیره سازی خروجی کوئری
int StaffID;
SqlConnection conn = new SqlConnection(Execution.GetConnectionString(“رشته اتصال”));
using (SqlCommand cmd = new SqlCommand())
{
cmd.Connection = conn;
cmd.CommandType = CommandType.Text;
SELECT
s.id
FROM [Didgah_DynamicDataModel].[dbo].[ddm_InsertGrid] PJ //نام جدول مدل داده ای پایه
left join [Didgah_DynamicDataModel].[dbo].[ddm_InsertGridJunction] j //جانکشن مدل داده ای پایه
on pj.guid=j.PrimaryKey
inner join Didgah_Common.dbo.com_Staff s
on s.Guid=j.ForeignKey
left join [Didgah_BPMS].[dbo].[ddm_TestMahtab2Junction] c //جانکشن مدل داده ای اصلی
on pj.Guid=c.ForeignKey
inner join [Didgah_BPMS].[dbo].bpm_ProcessInstances i
on i.BusinessKey=c.PrimaryKey
where i.BusinessKey=@BusinessKey
and j.RelationGuid=’D75794AD-07B1-10CF-8D68-93ACD51C2F29’“;
cmd.Parameters.AddWithValue(“@BusinessKey”, Execution.GuidValue(“___BusinessKey”));
conn.Open();
StaffID = Convert.ToInt32(cmd.ExecuteScalar());
conn.Close();
}
return new Owner(StaffID);
}
} }
به همین روش اقدام کننده تسک بعدی سمت تعریف شده برای گزینه انتخابی از مدل داده ای پایه روی فرم انتخاب میشود.