انتخاب مسیر فرایند بر اساس رابطه سازمانی

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

یک راه‌حل: در ابتدا در مرکز مدیریت، از منوی روابط سازمانی، رابطه سازمانی مورد نظر را ایجاد می‌کنیم (شکل 1).

شکل 1

در تعریف رابطه سازمانی لازم است به این نکته توجه داشت که یک سمت مانند سمت کارشناس چارگون (یک سمت بدون استفاده در فرایند) در بالاترین سطح در رابطه سازمانی قرار داده شود و دیگر سمت‌­های مورد نظر طبق سلسله‌مراتب مورد نیاز، زیرمجموعه این سمت قرار گیرند (شکل 2).

شکل 2

در فرایند ایجادشده در قسمت اقدام‌کننده فعالیت بررسی مدیر، از رابطه سازمانی ایجادشده استفاده می‌کنیم (شکل 3).

شکل 3

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

شکل 4

به این منظور بر روی مسیر خیر در قسمت نوع شرط، کدنویسی را انتخاب می‌کنیم (شکل 5).

شکل 5

در قسمت کدنویسی، کد ارائه‌شده را وارد و ذخیره می‌کنیم.

;using System

;using Chargoon.Didgah.BPMS.CommonApi

;using System.Data

;using System.Data.SqlClient

namespace Chargoon.Didgah.BPMS.Runtime

}

    public class ConditionalFlow : IConditionalFlow

}

public IExecution Execution { get; set; }

()public bool Evaluate

}

;int ManagerStaffId

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

            using (SqlCommand cmd = new SqlCommand())

}

;cmd.Connection = conn

                cmd.CommandType = CommandType.Text;

                cmd.CommandText = @”–declare @staffid int=1,@guid uniqueidentifier

select @guid=guid from [Didgah_Common].[dbo].[com_Staff]

where id =@staffid

select @guid=SubjectStaffGuid from [Didgah_Common].[dbo].[com_AssociationDetails]

where AssociationGuid=’E8CBA93E-A1BD-4E91-882F-51197600A352′ and ObjectStaffGuid=@guid

select isnull(id,0) as id from [Didgah_Common].[dbo].[com_Staff]

;”where guid=isnull(@guid,’04DB9489-43AF-4AF0-A18F-822499BE2154′)

;cmd.Parameters.AddWithValue(“@staffid”, Execution.IntegerValue(“___LastIntractorStaffId”))

;cmd.Parameters.AddWithValue(“@guid”, Guid.Empty)

;()conn.Open

;ManagerStaffId = Int32.Parse(cmd.ExecuteScalar().ToString())

;()conn.Close

{

            if (ManagerStaffId == 23161)

}

;return true

{

else

;return false

{

{

{

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

  • تعریف یک متغیر از نوع عدد صحیح برای نگهداری مقدار خروجی کوئری.
  • تعریف یک رشته اتصال برای اجرای کوئری استفاده شده در کد.
  • کوئری استفاده‌شده در کد شناسه سمت بالادستی آخرین اقدام‌کننده فرایند را (اقدام‌کننده فعالیت کاربر بررسی مدیر) از رابطه سازمانی پیشتر ایجادشده استخراج می‌­کند. این شناسه همان StaffId است که برابر با ستون Id در جدول Staff در پایگاه داده Didgah_Common است. شناسه آخرین اقدام‌کننده فرایند به صورت پارامتر @StaffId در کوئری قرار گرفته است که مقدار آن با دستور AddWithValue و متغیر عمومی مربوطه به کوئری فرستاده می­‌شود. رابطه سازمانی پیشتر ایجادشده با شناسه AssociationGuid مشخص می­‌شود که از ستون Guid در جدول Associations در پایگاه داده Didgah_Common برای رابطه سازمانی پیشتر ایجادشده استخراج شده است.
  • خروجی کوئری که شناسه StaffId سمت بالادستی آخرین اقدام‌کننده در فرایند است با دستور ExecuteScalar در متغیر عدد صحیح پیشتر تعریف‌شده ذخیره می‌­شود.
  • در نهایت در یک دستور If مقدار این متغیر را با شناسه StaffId بالاترین سمت قرار گرفته در رابطه سازمانی مورد نظر (در این مثال کارشناس چارگون) مقایسه می‌کنیم. در صورت برابر بودن این مقادیر نتیجه true برگشت خواهد خورد که منجر به ادامه فرایند از مسیر خیر می­‌شود و در غیر این صورت false که باعث ادامه فرایند از مسیر بلی می­‌شود. شناسه StaffId سمت مورداستفاده در بالاترین سطح رابطه سازمانی از ستون Id جدول Staff در پایگاه داده Didgah_Common استخراج شده است.

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

شکل 6

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

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