بررسی مسئله پیوست فایل به صورت پیشفرض بر روی فیلد فایل:
طرح مسئله: فرض کنید قصد دارید در فرم یک فعالیت کاربر فایل یا فایلهایی به صورت پیشفرض در یک فیلد فایل آپلود شده باشند تا کاربران بتوانند فایلها را جهت استفاده دریافت کنند.
یک راهکار: یکی روش برای حل این مسئله به این صورت است که در مرحله پیادهسازی فرایند پس از قرار دادن یک فیلد فایل به صورت ویرایشی بر روی فرم یک فعالیت کاربر و اجرای یک نمونه از فرایند، فایلهای مورد نظر خود را در کارتابل بر روی فیلد فایل آپلود نمایید. با آپلود فایلها در این نمونه فرایند به ازای فایلهای آپلود شده مقادیر Guid اختصاص داده شده به این فایلها در پایگاه داده دیدگاه در ستون ForeignKey جدول Junction مدل دادهای فرایند وارد میشوند و از این پس قادر خواهیم بود با انتخاب این مقادیر و وارد کردن مجدد آنان در جدول Junction فرایند برای هر نمونه فرایند با استفاده از کد ارائه شده به صورت پیشفرض فایلهای مورد نظر را بر روی فرم فعالیت کاربر ابتدای فرایند پیوست شده داشته باشیم.
همانطور که در شکل 1 مشخص است در ابتدای فرایند در فرم فعالیت کاربر (شکل 2) فایل مورد نظر را بارگذاری میکنیم.
شکل 1
شکل 2
با انجام این عملیات رکوردهای مربوط به فایلهای آپلود شده در جدول Junction مدل دادهای فرایند وارد میشوند که در کدنویسی از این رکوردها استفاده خواهد شد.
در فرایند نهایی یک فعالیت کدنویسی مانند شکل 3 اضافه میکنیم و کد ارائه شده را در قسمت کدنویسی قرار میدهیم.
شکل 3
;using Chargoon.Didgah.BPMS.CommonApi
;using System.Data.SqlClient
;using System.Data
public class ScriptTask : IScriptTask
}
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 = @”insert into [Didgah_BPMS].[dbo].[ddm_RequestConsumerGoods1Junction] ([RelationGuid]
[PrimaryKey],
[ForeignKey],
([Deleted],
‘select ‘19466DCB-C37E-EE41-F647-3B29F0C105BA
BusinessKey@,
[ForeignKey],
0,
From[Didgah_BPMS].[dbo].[ddm_RequestConsumerGoods1Junction]
where PrimaryKey=’896D2188-6D80-4B9E-971E-BD330A35610D’
;”
;cmd.Parameters.AddWithValue(“@BusinessKey”, Execution.GuidValue(“___BusinessKey”))
;()conn.Open
;()cmd.ExecuteNonQuery
;()conn.Close
{
{
{
{
{
کد ارائه شده عملیات زیر را انجام میدهد:
- تعریف یک رشته اتصال جهت اجرای کوئری مورد نیاز در پایگاه داده دیدگاه
- کوئری مورد استفاده در کد ارائه شده به ازای فایلهای پیشتر آپلود شده در پایگاه داده رکوردهایی را به جدول Junction مدل دادهای فرایند وارد میکند. در ستون RelationGuid مقدار Guid اختصاص داده شده به رابطه بین مدل دادهای فرایند و فیلد فایل مورد نظر وارد میشود. این مقدار برابر با ستون Guid از جدول Relations در پایگاه داده Didgah_DynamicDataModel است. در ستون PrimaryKey مقدار شناسه BusinessKey نمونه فرایند جاری با استفاده از دستور AddWithValue و متغیر عمومی مربوطه وارد میشود. در ستون ForeignKey مقادیر همین ستون به ازای فایلهای پیشتر آپلود شده بر روی فرم فرایند وارد میشود. این مقادیر با برابر قرار دادن مقدار PrimaryKey در دستور Select مورد استفاده با شناسه BusinessKey نمونه فرایندی که برای آپلود فایلها مورد استفاده قرار گرفته قابل فیلتر کردن هستند. مقدار BusinessKey نمونه فرایندی که برای آپلود فایلها مورد استفاده قرار گرفت از جدول ProcessInstaces قابل استخراج است.
نکته: در پیادهسازی این راهکار در مشتریهای مختلف باید به نامهای دیتامدل و نام رشته اتصال دقت نمود؛ زیرا میتوانند از آنچه که در این اسکریپت آورده شده است متفاوت باشند.
[ratemypost]