بررسی نحوه درج اعضای گروه مجریان در یک ستون از جدولطرح مسئله: در مواقعی نیاز است در فرایندی با ایجاد یک گروه مجریان، اعضای آن در داخل یک ستون از جدول درج گردند.
یک راهکار: در قسمت تعاریف نرم افزار مدیریت فرایندهای کسب و کار، گزینه گروهبندی مجریان را انتخاب میکنیم (شکل 1).
شکل 1
با انتخاب گزینه ایجاد گروه جدید، گروه مورد نظر را ایجاد و پس از انتخاب کارمندان عضو گروه مجریان از ساختار سازمان با زدن دکمه ذخیره گروه مجریان را ذخیره میکنیم (شکل 2).
شکل 2
برای درج سمتهای داخل گروه مجریان در یک ستون از نوع سمت سازمانی در جدول نیاز است در مدل دادهای پس از ایجاد یک رابطه از نوع جدول، رابطهای از نوع سمت سازمانی دیدگاه با جدول ایجاد شود تا در فرمساز به عنوان یکی از ستونهای جدول مورد استفاده قرار گیرد (شکل 3).
شکل 3
در فعالیت کاربری که قرار است عملیات درج اعضای گروه مجریان در داخل جدول فرم آن صورت گیرد، در قسمت کدنویسی قبل از ساخت (شکل 4)، کد ارائه شده را قرار میدهیم.
شکل 4
|کد قرار گرفته در قسمت کدنویسی قبل از ساخت عملیات زیر را انجام میدهد:
- یک رشته اتصال جهت اجرای کوئری مورد نیاز در پایگاه داده دیدگاه ایجاد میشود.
- کوئری مورد نیاز اعضای گروه مجریان پیشتر ایجاد شده را انتخاب و مقادیر مربوطه به این اعضا را در جداول مدل دادهای فرایند وارد میکند تا بر روی فرم نمایش داده شوند.
- در کوئری ابتدا یک متغیر از نوع جدول جهت ذخیره مقادیر وارد شده در جدول Junction جدول حاوی ستون از نوع سمت سازمانی دیدگاه ایجاد میشود. هدف از ذخیره این مقادیر نیازمندی به وارد کردن مقادیر PrimaryKey جدول Junction جدول داخل مدل دادهای (جدولی که روی فرم فرایند قرار میگیرد) در ستون ForeignKey جدول Junction مدل دادهای اصلی فرایند است.
- در ستون ForeignKey جدول Junction جدول داخل مدل دادهای میبایست Guid سمتهای عضو گروه مجریان پیشتر ایجاد را وارد نمود. پس از Join بین جدول اعضای گروه مجریان بر اساس ستونهای StaffId در جدول PerformerGroupMembers و Id از جدول Staff، ستون Guid از جدول Staff انتخاب و در ستون ForeignKey وارد میشود. محدود کردن خروجی این قسمت از کوئری با استفاده از Id گروه مجریان پیشتر ایجاد شده انجام شده است.
- مقادیر RelationGuid در جداول Junction این کوئری از جدول Relations در پایگاه داده Didgah_DynamicDataModel برای هر رابطه (رابطه بین مدل دادهای و جدول و رابطه بین جدول و سمت سازمانی دیدگاه) استخراج و هنگام عملیات Insert به صورت ثابت در جدول Junction مورد نظر وارد شده است.
- در نهایت برای نمایش اطلاعات بر روی فرم نمونه فرایند در جریان میبایست مقدار شناسه BusinessKey نمونه فرایند در جریان را در ستون PrimaryKey جدول Junction مدل دادهای فرایند وارد کنیم. این مقدار با استفاده از دستور AddWithValue و متغیر عمومی BusinessKey به کوئری منتقل شده است. مقادیر ستونهای دیگر در این عملیات Insert پیشتر توضیح داده شدند.
;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
}
using (SqlConnection conn = new SqlConnection(Execution.GetConnectionString(“BPMS”)))
}
using (SqlCommand cmd = new SqlCommand())
}
;cmd.Connection = conn
;cmd.CommandType = CommandType.Text
cmd.CommandText = @” declare @inserted table
RelationGuid uniqueidentifier)
JunctionPrimaryKey uniqueidentifier,
JunctionForeignKey uniqueidentifier,
(Deleted bit,
insert into [dbo].[ddm_Presenter_Table1Junction] ([RelationGuid],[PrimaryKey],[ForeignKey],[Deleted])
output inserted.RelationGuid,inserted.[PrimaryKey],inserted.[ForeignKey],inserted.Deleted into @inserted
Select ‘9A6805E4-DE0D-3155-553F-86EC427F4BD9’,newid(),Staff.Guid,0
from [dbo].[com_Staff] Staff
inner join [Didgah_BPMS].[dbo].[bpm_PerformerGroupMembers] PGM on PGM.StaffId=Staff.Id where PerformerGroupId=1010
insert into [dbo].[ddm_Presenter_Table1] ([Guid],[Deleted])
Select JunctionPrimaryKey,0
from @inserted
insert into [Didgah_BPMS].[dbo].[ddm_PresenterJunction] ([RelationGuid],[PrimaryKey],[ForeignKey],[Deleted])
Select ‘8B44ABC8-4161-3A44-9D14-1634569CB985’,@BusinessKey,JunctionPrimaryKey,0
;”from @inserted
;cmd.Parameters.AddWithValue(“@BusinessKey”, Execution.GuidValue(“___BusinessKey”))
;()conn.Open
;()cmd.ExecuteNonQuery
;()conn.Close
{
{
{
{
{
|پس از انتشار فرایند و اجرای آن همانطور که در شکل 5 مشاهده میشود، سمتهای سازمانی گروه مجریان در جدول درج خواهند شد.
شکل 5
نکته : در پیادهسازی این راهکار در مشتریهای مختلف باید به نامهای ستونها و نام رشته اتصال دقت نمود؛ زیرا میتوانند از آنچه که دراین اسکریپت آورده شده است متفاوت باشند.