درج اسامی داخل جدول در توضیحات در مدل داده‌ای پویا 2

طرح مسئله:فرض کنید در فرم یک فرایند یک جدول با ستونی از نوع سمت سازمانی دیدگاه وجود دارد و تکمیل‌کننده فرم سمت­‌های مورد نظر خود را در سطرهای این جدول اضافه می­‌کند (شکل 1). نیازمندیم امکان جستجو بر اساس نام کامل متصدیان سمت­‌های انتخاب شده در جدول را در آرشیو فعالیت‌­ها و کارتابل برای کاربران فراهم نماییم.

شکل 1

یک راهکار: پس از فعالیت کاربری که در فرم آن داخل جدول سمت‌ها وارد می‌شوند یک فعالیت کدنویسی قرار داده می‌شود (شکل 2).

شکل 2

در فعالیت کدنویسی کد زیر قرار می­‌گیرد:

;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 Descripton

using (SqlConnection conn = new SqlConnection(Execution.GetConnectionString(“BPMS”)))

}

                using (SqlCommand cmd = new SqlCommand())

}

;cmd.Connection = conn

;cmd.CommandType = CommandType.Text

                    cmd.CommandText = @”SELECT

 STRING_AGG(CAST(u.FullName as nvarchar(max)),’,’)+:’سمت ها’N

 ) from

SELECT

Per.FullName

FROM [Didgah_BPMS].[dbo].[ddm_DEtable_Table1Junction] as DEtable

inner join [Didgah_Common].[dbo].[com_Staff] S on S.Guid=DEtable.ForeignKey

inner join [Didgah_BPMS].[dbo].[ddm_DescriptioninsidetableJunction] Descrip on Descrip.[ForeignKey]=DEtable.PrimaryKey

 inner join Didgah_PersonnelSystem].[dbo].[prs_Personnel] Per on Per.StaffId=S.Id

where DEtable.Deleted=0 and DEtable.ForeignKey is not null and DEtable.RelationGuid=’CF0078C4-‘7A95-4A05-AE3A-369D46AC00A9

;”and Descrip.[PrimaryKey]=@businesskey  and _baseID IS NULL and Per.Active = 1) u

;cmd.Parameters.AddWithValue(“@businesskey”, Execution.GuidValue(“___BusinessKey”))

;()conn.Open

;()Descripton = cmd.ExecuteScalar().ToString

;()conn.Close

{

{

;Execution.SetVariable(“Descripton”, Descripton)

{

{

{

کد ارائه شده عملیات زیر را انجام می­‌دهد:

  • تعریف یک متغیر از نوع رشته جهت ذخیره نتیجه کوئری استفاده شده در کد.
  • تعریف یک رشته اتصال جهت اجرای کوئری استفاده شده در کد در پایگاه داده دیدگاه.
  • کوئری مورد استفاده نام کامل متصدیان سمت­‌های انتخاب شده در سطرهای جدول را با دستور String AGG به صورت یک رشته تجمیع شده انتخاب می‌­کند. جهت انتخاب نام کامل که در پرونده پرسنلی نگهداری می­‌شود بین جدول Junction جدول روی فرم با جدول Staff از پایگاه داده Didgah_Common بر اساس ForeignKey از جدول Junction جدول روی فرم و Guid از جدول Staff و بین جدول Staff و جدول prs_Personnel از پایگاه داده Didgah_PersonnelSystem بر اساس ستون Id از جدول Staff و ستون StaffId از جدول prs_Personnel، و بین جدول Junction جدول روی فرم و جدول Junction مدل داده‌­ای فرایند بر اساس ستون PrimaryKey از جدول Junction جدول روی فرم و ستون ForeignKey از جدول Junction مدل داده‌­ای Join زده می­‌شود. جهت فیلتر کردن خروجی کوئری به ستون از نوع سمت سازمانی مورد نظر در جدول مقدار RelationGuid را با Guid اختصاص یافته به رابطه بین ستون سمت سازمانی دیدگاه مورد استفاده و جدول فرم فیلتر می­‌کنیم. این مقدار همان ستون Guid در جدول Relations در پایگاه داده Didgah_DynamicDataModel است. جهت نمایش رکوردهای مربوط به اجرای جاری فرایند مقدار PrimaryKey جدول Junction مدل داده‌­ای فرایند را برابر با شناسه BusinessKey نمونه فرایند قرار می­‌دهیم. این مقدار با دستور AddWithValue و متغیر عمومی مربوطه به کوئری منتقل شده است. جهت در نظر گرفته نشدن سطوری از جدول که ممکن است توسط کاربر حذف شده باشند کوئری بر اساس Deleted=0 فیلتر شده است. جهت نمایش رکوردهای فعال سمت انتخاب شده در جدول در نرم­ افزار پرسنلی کوئری بر اساس Active=1 و baseID is NULL فیلتر شده است.
  • نتیجه کوئری با استفاده از دستور ExecuteScalar در داخل متغیر از نوع رشته پیشتر تعریف شده ذخیره شده است.
  • در نهایت جهت استفاده از متغیر در فرایند با دستور SetVariable مقدار ذخیره شده در متغیر پیشتر ذخیره شده را داخل یک متغیر از نوع رشته ذخیره می‌­نماییم.

سپس لازم است تا در تب ورودی/خروجی فعالیت کدنویسی، در قسمت پارامترهای خروجی، یک خروجی از نوع رشته و با نام پارامتری که در فعالیت کدنویسی به آن مقداردهی کردیم ایجاد نماییم (شکل 3).

شکل 3

|بر روی فعالیت کاربری که می‌بایست توضیحات آن بر اساس این خروجی تکمیل شود، پس از وارد نمودن عبارت ثابت (در صورت نیاز)، در داخل [ ] پارامتر خروجی گرفته شده از فعالیت کدنویسی قرار داده می‌شود (شکل 4).

شکل 4

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

شکل 5

نظرات کاربران 0 نظر

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

یک × پنج =