پرش به محتوای اصلی

راهنمای فراخوانی اطلاعات از مدل داده‌ای پایه جهت مقداردهی به فیلدهای فرم

bpm

بررسی مسئله­‌ی فراخوانی اطلاعات از مدل داده‌ای پایه و ارائه یک راه‌حل برای آن:

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

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

bpm

تصویر شماره 1-محل قرار گرفتن فعالیت کدنویسی

همان‌طور که در تصویر شماره 2 مشاهده می‌شود در مرحله‌ی ثبت درخواست پس از انتخاب نام فروشنده در فیلد مربوطه می‌­بایست دیگر فیلدهای قرار گرفته روی فرم که شامل مشخصات فروشنده انتخاب هستند به‌­صورت سیستمی مقداردهی شوند:

bpm

تصویر شماره 2-نمونه فرم صورت مسئله

فیلد مورد نظر در این فرم از جنس رابطه (مدل داده‌ای پایه) است.

کد قرار گرفته در فعالیت کدنویسی “فراخوانی اطلاعات از مدل داده‌­ای پایه” موارد زیر را انجام می­‌دهد:

  • ستون‌های مورد نظر از مدل داده‌ای پایه را با دستور select انتخاب می‌کنیم.
  • سپس با جدول Junction دیتا مدل اصلی فرایند Join می‌زنیم که ForeignKey آن با Guid رکورد مورد نظر در دیتامدل مدل داده‌ای پایه برابر است. رکورد­ مربوط به نمونه فرآیندی که در جریان است با استفاده از شناسه BusinessKey و رکوردی که مربوط به رابطه مدل داده‌­ای پایه است با استفاده از RelationGuid (استخراج شده از جدول Relations در پایگاه داده Didgah_DynamicDataModel) فیلتر می­‌شود.
  • با استفاده از دستور DataReader ستون­‌های انتخاب شده توسط کوئری را جهت مقداردهی به فیلدهای مدل داده‌­ای فرایند به دست می‌­آوریم.
  • با استفاده از دستور SetVariable و مقادیر به‌دست آمده از پایگاه داده فیلدهای مدل داده‌­ای فرایند را مقداردهی می‌­نماییم.

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

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

;”” = string SellerAccountNmber

;”” = string SellerNumberSHeba

;”” = string SellerCardNumber

;”” = string SellerBank

  ; “” = string SellerAccountName

 ;”” = string SellerPhoneNumber

;”” = string SellerNationalCode

;”” = string SellerNationalID

            using (SqlConnection conn = new

(SqlConnection (Execution.GetConnectionString(“BPMS”))

}

                using (SqlCommand cmd = new SqlCommand())

}

;cmd.Connection = conn

;cmd.CommandType = CommandType.Text

 cmd.CommandText = @”select

[SellerName]

[SellerAccountNmber],

      [SellerNumberSHeba],

      [SellerCardNumber],

      [SellerBank],

      [SellerAccountName],

      [SellerPhoneNumber],

      [SellerNationalCode],

      [SellerNationalID],

  FROM [Didgah_DynamicDataModel].[dbo].[ddm_Sellers] w

  inner join [Didgah_BPMS].[dbo].[ddm_RequestPaymentJunction] d on d.ForeignKey=w.Guid

;'”where d.PrimaryKey = @BusinessKey and d.RelationGuid=’5523037A-E674-DE33-F7C5-8DD89D031FBB

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

;()conn.Open

;()SqlDataReader reader = cmd.ExecuteReader

                    while (reader.Read())

}

;()SellerName = reader[0].ToString

;()SellerAccountNmber = reader[1].ToString

;()SellerNumberSHeba = reader[2].ToString

;()SellerCardNumber = reader[3].ToString

;()SellerBank = reader[4].ToString

;()SellerAccountName = reader[5].ToString

;()SellerPhoneNumber = reader[6].ToString

;()SellerNationalCode = reader[7].ToString

;()SellerNationalID = reader[8].ToString

{

;()conn.Close

{

;Execution.SetVariable(“SellerName”, SellerName)

;Execution.SetVariable(“SellerAccountNmber”, SellerAccountNmber)

;Execution.SetVariable(“SellerNumberSHeba”, SellerNumberSHeba)

;Execution.SetVariable(“SellerCardNumber”, SellerCardNumber)

;Execution.SetVariable(“SellerBank”, SellerBank)

;Execution.SetVariable(“SellerAccountName”, SellerAccountName)

;Execution.SetVariable(“SellerPhoneNumber”, SellerPhoneNumber)

;Execution.SetVariable(“SellerNationalCode”, SellerNationalCode)

;Execution.SetVariable(“SellerNationalID”, SellerNationalID)

{

{

{

سپس فیلدهای مورد نظر مطابق با عنوان و نوع داده­ای آن­ها در دیتا مدل در فعالیت کدنویسی به عنوان پارامتر خروجی تعریف شوند.

bpm

تصویر شماره 3-تعریف پارامترهای خروجی

نکته : در پیاده­‌سازی این راهکار در مشتری­‌های مختلف باید به نام‌­های ستون‌ها و نام رشته اتصال دقت نمود زیرا می­‌توانند از آن‌چه که در این اسکریپت­‌ آورده شده است متفاوت باشند.


[ratemypost]