درج سمت سازمانی دیدگاه در توضیحات فعالیت کاربر
طرح مسئله: فرض کنید نیاز به درج عنوان سمت انتخاب شده در یک فیلد سمت سازمان دیدگاه بر روی فرم یک فعالیت کاربر در توضیحات یک فعالیت کاربر است تا بتوان امکان جستجو بر اساس سمت انتخاب شده روی فرم را در کارتابل و آرشیو فعالیتها فراهم نمود.
یک راهکار: میتوان مطابق تصویر شماره 1 از یک فعالیت کدنویسی پس از فعالیت کاربری که در آن فیلد سمت سازمانی دیدگاه مقدار میگیرد استفاده نمود تا در فعالیت کاربر بعد از فعالیت کدنویسی عنوان سمت انتخاب شده در فعالیت اول را در توضیحات آن درج نماییم.
شکل 1
در فعالیت کدنویسی ایجاد شده کد زیر را قرار میدهیم:
;using Chargoon.Didgah.BPMS.CommonApi
;using System.Data
;using System.Data.SqlClient
namespace Chargoon.Didgah.BPMS.Runtime
}
public class ScriptTask : IScriptTask
}
public IExecution Execution { get; set; }
()public void Execute
}
;string name
using (SqlConnection conn = new SqlConnection(Execution.GetConnectionString(“BPMS”)))
}
using (SqlCommand cmd = new SqlCommand())
}
;cmd.Connection = conn
; cmd.CommandType = CommandType.Text
cmd.CommandText = @”Select
[FullTitle]
from [Didgah_Common].[dbo].[com_Staff]
inner join [Didgah_BPMS].[dbo].[ddm_HelpEducationJunction] on [Didgah_Common].[dbo].[com_Staff].[Guid] = [Demo_Didgah_BPMS].[dbo].[ddm_HelpEducationJunction].[ForeignKey]
;”where [RelationGuid] = ‘E27790F3-F509-B0A4-270E-CFD272F9BF40’ and PrimaryKey=@BusinessKey
;cmd.Parameters.AddWithValue(“@BusinessKey”, Execution.GuidValue(“___BusinessKey”))
;()conn.Open
;()name = cmd.ExecuteScalar().ToString
;()conn.Close
; ;Execution.SetVariable(“Name”, name)
{
{
{
{
{
کد قرار گرفته در فعالیت کدنویسی “توضیحات” موارد زیر را انجام میدهد:
- تعریف یک متغیر با نام name که از آن برای ذخیره خروجی کوئری استفاده میشود.
- ایجاد رشته اتصال برای اجرای کوئری در پایگاه داده دیدگاه.
- کوئری به کار رفته در کد ستون FullTitle از جدول Com_Staff از پایگاه داده Didgah_Common را که در واقع همان عنوان سمت کامل است برای سمت سازمانی انتخاب شده در فیلد سمت سازمان دیدگاه Select میکند. برای فیلتر خروجی کوئری ابتدا با جدول Junction مدل دادهای فرایند بر اساس برابری ستون ForeignKey از جدول Junction و ستون Guid از جدول Com_Staff یک Join زده شده است. در واقع پس از انتخاب سمت توسط کاربر در فیلد سمت سازمانی دیدگاه بر روی فرم مقدار StaffGuid که همان مقدار Guid سمت انتخاب شده در جدول Com_staff است در ستون ForeignKey جدول Junction مدل دادهای فرایند ذخیره میشود. برای محدود کردن خروجی کوئری به رکورد ثبت شده توسط نمونه فرایند در حال اجرا ستون PrimaryKey با شناسه نمونه فرایند یا BusinessKey فیلتر شده است. این مقدار با استفاده از دستور AddWithValue به کوئری منتقل میشود. همچنین برای محدود کردن رکوردهای جدول Junction به فیلد سمت سازمانی مورد نظر، کوئری را بر اساس RelationGuid رابطه موجود بین سمت سازمانی دیدگاه و مدل دادهای فرایند محدود میکنیم. این مقدار از ستون Guid جدول Relations در پایگاه داده Didgah_DynamicDataModel استخراج میشود.
- خروجی کوئری با استفاده از دستور ExecuteScalar برای مقداردهی به متغیر name مورد استفاده قرار میگیرد.
- با استفاده از متغیر name به پارامتر Name که به عنوان پارامتر خروجی روی فعالیت کدنویسی تعریف خواهد شد مقداردهی مینماییم.
در تب ورودی و خروجی فعالیت کدنویسی، در قسمت خروجی متغیری از نوع رشته ایجاد میکنیم و نام آن را برابر با متغیر ایجاد شده در کد (Name) قرار میدهیم (شکل 2).
شکل 2
در فعالیت کاربر بعد از فعالیت کدنویسی در تب عمومی در قسمت توضیحات داخل براکت نام متغیری که در داخل کد ایجاد شده است را وارد میکنیم (شکل 3).
شکل 3
پس از اجرای فرایند در صورتی که در فعالیت کاربر ابتدای فرایند فیلد سمت سازمانی دیدگاه مورد نظر بر روی فرم مقدار بگیرد (شکل 4)، پس از اجرای کد ارائه شده عنوان سمت کامل در توضیحات فعالیت کاربر پس از فعالیت کدنویسی درج میشود (شکل 5) و میتوان بر اساس آن در کارتابل و آرشیو فعالیتها به جستجو پرداخت.
شکل 4
شکل 5
[ratemypost]