همانطور که در مطلب قبل بیان شد subprocessها امکان گسترش و توسعه مدل فرآیندی را فراهم میآورند. در این مطلب سایر ویژگیها و دسته بندیهای مختص به subprocessها را بیان میکنیم.
Call Activity
در BPMN ورژن 1.2 ، با اختصاص یک ویژگی به subprocess، بین subprocessهای تعبیه شده و قابل استفاده مجدد تفاوت ایجاد میشد. در BPMN 2.0 نیز، این اصل کماکان برقرار میباشد اما نحوه تعریف آن متفاوت است. در نسخه جدید، اگر یک subprocess در مدل تعبیه شود، این subprocess تنها زمانی میتواند مجددا استفاده شود که به عنوان یک global subprocess تعریف شود و بتوان آن را از طریق یک call activity به منبع آن ارجاع داد. به عبارت دیگر بایستی برای بکارگیری مجدد، آن را به subprocess تعبیه شده ارجاع دهیم.
یک subprocess تعبیه شده تنها در فرآیندی که به آن تعلق دارد میتواند رخ دهد و این subprocess نمیتواند شاملPool ها وLane ها باشد، اما میتواند درون یک Pool و یا یکی ازLane های فرآیند اصلی قرار گیرد. علاوه بر این، subprocess تعبیه شده ممکن است دارای رویداد شروع نباشد و در این حالت، استفاده از رویدادهای شروع از نوع message یا timer مجاز نمیباشد. در واقع subprocess تعبیه شده چیزی بیشتر از ناحیهای محدود در دل فرآیند اصلی نمیباشد که به طور کلی اهداف زیر را دنبال میکند:
- جلوگیری از بوجود آمدن پیچیدگیهای غیر ضروری در مدل
- به منظور فرموله کردن یک بیانیه جمعی در قسمتی از فرآیند اصلی با ضمیمه کردن رویدادها یا بکارگیری marker ها. (که در قسمتهای بعدی توضیح داده خواهد شد.)
به عبارت دیگر، global subprocess ممکن است در فرآیندهای کاملا متفاوتی اتفاق بیفتد چرا که ممکن است در عمل subprocess های بسیار زیادی در فرآیند بارها و بارها استفاده شوند. مثال خوب در این زمینه تهیه یک کالا می باشد، که ممکن است مشتری سفارش داده باشد و یا به منظور تامین موجودی انبار باشد. مثال دیگر مرتبط با این موضوع می تواند صورتحسابی باشد که در اثر تحویل و یا تعمیر یک کالا تهیه و صادر میشود که در نمودار زیر نمایش داده شده است. در این مثال توجه کنید کهcall activity ها با خطوط ضخیمتر اطراف فعالیت مشخص شدهاند.ارتباط بین یک global subprocess با فرآیند اصلیاش به طور قابل توجهی نزدیک نبوده و آنها میتوانند Pool ها یاLane های خاص خود را داشته باشند. همچنین ارتباطات ضعیف نیز میتواند بر انتقال دادهها بین مدل اصلی و subprocess تاثیر بگذارد. در این حالت BPMN فرض میکند embedded subprocessها میتوانند تمامی دادههای فرآیند اصلی را مستقیما بخوانند، اماglobal subprocess ها برای چنین کاری نیاز به یک تخصیص صریح و روشن دارند تا قادر به خواندن اطلاعات باشند. برای درک بهتر این موضوع بهتر است به مثال زیر توجه شود. فرض کنید زمانیکه واحد حسابداری شما قصد دارد صورت حسابی را برای تعمیر یک کالا صادر کند، به اطلاعات زیر نیاز دارد:
- آدرس قبض
- تاریخ تحویل عملکرد
- شرح عملکرد
- مبلغ صورت حساب
- تاریخ مورد انتظار پرداخت
در همین راستا، مسئولین پردازش سفارش و نه فقط بخش تعمیر، بایستی این اطلاعات را فراهم نمایند. در این حالت آیا واحد حسابداری دادههای مورد نیاز را در قالب یک فرمت استاندارد نیاز دارد؟ این مسئله ارتباطات بین فرآیندهای اصلی وglobal subprocess ها را به خوبی نشان میدهد که در BPMN به آن required data mapping میگویند. آیا توجه کردهاید که چگونه اغلب این مسائل عجیب با نیازهای سازمانی و انتظارات فرآیند تطابق دارند؟ در این زمینه، BPMN به سادگی ما را به فرموله کردن مسائل بسیاری که به نظر بدیهی میرسند و یا در طراحی فرآیند فراموش شدهاند وا میدارد که فرموله کردن این مسائل، بهترین شانس را برای نگهداری دادههای مورد نیاز در یک محیط به سرعت در حال تغییر با فرآیندهای پیچیده فراهم مینماید.
Adhoc
یکی از شاخصهای مختصSubprocess ها Ad-hoc نامیده میشود که با افزودن علامت ᷉ به قسمت پایینی Subprocess ایجاد میشود که در شکل ذیل نشان داده شده است.از Ad-hoc subprocess به منظور علامت زدن (مشخص نمودن) یک بخش استفاده میشود که فعالیتهای این بخش (tasks or subprocesses) می توانند :
در هر سفارشی اجرا شوند، چندین بار اجرا شوند و یا کنار گذاشته شوند.
هر قسمتی که از این Subprocess استفاده میکند، تصمیم میگیرد که چکار کند و چه زمانی آن را انجام دهد. در ابتدای کار ممکن است برداشت شود که عدم اطلاع از اینکه داخل این Subprocess چه اتفاقی میافتد، کاری بیهوده و به درد نخور است. اما در حقیقت طبیعت بسیاری از فرآیندها اینگونه بوده و شما اطلاعات دقیقی از آن ندارید و یا کارکنان به نحو دیگری وظایف مربوط به خود را انجام میدهند. در چنین مواردی میتوان از Ad-hoc subprocess استفاده نمود تا مکانها و نقاطی را که ممکن است فرآیند در آنها به طور مطلوب عمل نکند را مشخص نمود، که با قدم نهادن در این مسیر میتوان گام بلندی در راستای استانداردسازی فرآیندها برداشت.
همچنین در BPMN 2.0 مشخص شده است که چه نمادهایی میتوانند در Adhoc استفاده شوند و یا حق استفاده از آنها وجود ندارد، که در ادامه به آنها اشاره شده است.
نمادهایی که باید بیایند : فعالیتها
نمادهایی که میتوانند بیایند: دادهها مانند فرمها، جریانهای توالی، گروهها، ارتباطها، جریان پیامها، Gateway ها و رویدادهای میانی.
نمادهایی که نباید بیایند: رویدادهای شروع و پایان و نمادهای مربوط به گفتگو و نمایش.
با استفاده از خصوصیات ذکر شده، می توان فرمهای ترکیبی مانند شکل زیر ایجاد نمود که در اصطلاح به آنها فرآیندهای ساختاری ضعیف (weakly structured processes) میگویند.
یک فرآیند خاص با فرمهای آمیخته و ساختار فرآیندی ضعیف به شکل زیر ترسیم گشته است.
Event Subprocess
در BPMN 2.0 یک ماژول جدید با نام Event Subprocess معرفی شده است که این ماژول درون یک فرآیند و یا Subprocess دیگر قرار میگیرد و با قالب خط نقطهچین شناسایی میشود.
یک رویداد شروع همیشه یک Event Subprocess را به راه میاندازد و این فقط زمانی رخ میدهد که فرآیند محصور در آن فعال باشدEvent Subprocess .ها میتوانند Interrupting (با وقفه) باشند که با خط ممتد نمایش داده میشوند و یا میتوانند Non-Interrupting (بدون وقفه) باشند که با خطچین نمایش داده میشوند که این دقیقاً همان فرقی است که در رویدادهای میانی هم مشاهده شد. با توجه به نوع رویداد آغازین، Event Subprocess فرآیند محصور را کنسل خواهد نمود و یا به طور همزمان اجرا خواهد شد. در ادامه نحوه کار یک event subprocess را با ارائه مثالی توضیح خواهیم داد:فرض کنید ما دو نفر از دوستانمان را برای صرف شام دعوت میکنیم. این عمل، Subprocess تهیه شام، شامل انتخاب دستورغذا و سپس تهیه غذا را فعال میکند. حال فرض کنید که در هنگام آمادهسازی غذا دوست دیگری زنگ میزند و خودش را برای شام دعوت میکند. در این حالت بایستی جای دیگری در نظر بگیریم و مقدار غذا را افزایش دهیم بدون آنکه وقفهای در تهیه غذا ایجاد کرده باشیم. اگر این اتفاق در حین آمادهسازی صورت پذیرد، خطا سریعا Interrupting Subprocess را فعال خواهد کرد تا برای قضیه اتفاق افتاده تصمیمی اتخاذ شود (برای مثال از بیرون سفارش داده شود). وقتی که Event Subprocess تکمیل شد، از Subprocess محصور آن خارج شده و غذا میل خواهد شد.
در شکل ذیل نشان داده شده است که چگونه Event Subprocess در قالب یک Collapsed State نمایش داده میشود که در آن برای نشان دادن collapsed subprocess علامت + به پایین فعالیت اضافه شده است. انواع رویدادهایی که میتوانندEvent Subprocess های وقفهای و بدون وقفه را راه بیاندازند عبارتند از:
- پیام (Message)
- زمان (Timer)
- تشدید (Escalation)
- شرط (Conditional)
- سیگنال (Signal)
- چندگانه(Multiple)
- چندگانه موازی (Multiple parallel)
البته دو نوع دیگر از این رویدادها وجود دارد که تنها برای Interrupting وجود دارد:
- خطا (error)
- جبران (Compensation)
تهیه و تنظیم: دنیا برزگر
بدون دیدگاه