دروزاه OR یا تصمیمات فراگیر در BPMN2
در این مطلب در مورد دروازه OR توضیحاتی را ارئه خواهیم کرد. البته پیش از پرداختن به دروزاه OR را مثال را مطرح میکنیم و با دروازه های XOR و AND آنرا مدلسازی خواهیم کرد تا به اهمیت و سادگی دروزاه OR بیشتر پی ببرید.
گاهی اوقات ممکن است ما نیاز به یک یا چند شاخه پس از یک فعالیت تصمیمگیری داشته باشیم. فرآیند کسبوکار زیر را در نظر بگیرید.
فرآیند توزیع سفارش
یک شرکت دارای دو انبار است که محصولات مختلف را ذخیره میکنند؛ انبار آمستردام و هامبورگ. زمانی که یک سفارش دریافت میشود، در این انبارها توزیع میگردد: در صورتیکه محصولات سفارش شده مربوط به انبار آمستردام باشد، یک زیر سفارش به آنجا ارسال میگردد؛ به همین صورت اگر محصولات سفارش شده مرتبط به انبار هامبورگ باشد، زیر سفارشی برای آنجا ارسال میگردد. پس از آن سفارش ثبت گردیده و فرآیند تکمیل میشود.
آیا میتوانیم سناریوی بالا را با ترکیب درگاههای AND و XOR مدلسازی نمائیم؟ جواب مثبت است. هر چند با تعدادی مشکل مواجه خواهیم شد.
شکل زیر جوابهای ممکن را نمایش میدهند. در اولی، ما از یک انشعاب دهنده XOR با سه شاخه جایگزین استفاده نموده ایم: یکی در صورتیکه سفارش تنها شامل محصولات آمستردام باشد انتخاب میگردد (که زیر سفارش به انبار آمستردام ارسال خواهد شد)، دیگری زمانی که سفارش تنها شامل محصولات هامبورگ باشد انتخاب میگردد (به همان صورت، زیر سفارش به انبار هامبورگ ارسال خواهد شد) و آخرین آن زمانی که سفارش شامل کالاهای هر دو انبار باشد انتخاب می گردد (که در این مورد زیر سفارش به هر دو انبار ارسال خواهد شد). این سه شاخه درون یک ادغام XOR همگرا میشوند که منجر به ثبت سفارش خواهد شد. در حالیکه این مدل، سناریوی ما را به درستی انعکاس میدهد، نمودار حاصل تا حدودی پیچیده است، زیرا ما باید دو فعالیت تکراری که دوبار زیر فرآیندها را به انبارهای مربوطه ارسال میکنند ایجاد نمائیم و در صورتیکه ما بیشتر از دو انبار داشته باشیم، تعداد فعالیتهای تکراری افزایش خواهد یافت. برای مثال، در صورتی که ما سه انبار داشته باشیم، ما نیاز به یک انشعاب XOR همراه با هفت شاخه خروجی خواهیم داشت و هر فعالیت نیاز دارد که چهار بار تکرار گردد. به وضوح مشخص است که این راه حل در مقیاس بالا جوابگو نیست.
جواب اول
جواب دوم
در جواب دوم از یک انشعاب AND با دو کمان خروجی استفاده شده، هر یک از آنها منجر به یک انشعاب XOR با دو شاخه جایگزین میگردند. اولی در صورتی که سفارش شامل محصولات آمستردام (هامبورگ) باشد انتخاب میگردد، در این حالت فعالیت، کار ارسال زیر فرآیند به انبار مربوطه را بر عهده خواهد داشت؛ شاخه دیگر در صورتیکه سفارش شامل محصولات آمستردام (هامبورگ) نباشد انتخاب میگردد، در این حالت هیچ فعالیتی تا ادغام XOR که دو شاخه را دوباره ادغام میکنند، انجام نمیگیرد. سپس یک ادغام AND دو شاخه موازی خروجی انشعاب AND را ادغام مینماید و فرآیند با ثبت سفارش تکمیل میگردد.
مشکل راه حل دوم چیست؟ سناریوی مثال سه حالت زیر را در نظر گرفته است. تنها محصولات موجود در آمستردام، فقط در هامبورگ، و در هردو انبار. در حالیکه این راه حل یک مورد دیگر را فراهم میکند که آن حالتی است که محصولات در هیچ یک از انبارها نباشند. این مورد زمانی رخ میدهد که دو شاخه خالی از دو انشعاب XOR انتخاب شوند و منجر به انجام ندادن هیچ کاری بین فعالیت “بررسی اقلام خط سفارش” و فعالیت “ثبت سفارش” میشود. بنابر این، این راه حل، با وجود اینکه فشرده تر از اولی میباشد ولی اشتباه است.
جهت مدلسازی شرایطی که یک تصمیم ممکن است به طور همزمان منجر به انتخاب یک یا چند گزینه شود، ما نیاز به یک درگاه فراگیر (OR) خواهیم داشت. یک انشعاب OR شبیه به انشعاب XOR میباشد، ولی شرایط مربوط به شاخه های خروجی لازم نیست که متقابلاً منحصر به فرد باشند، یعنی بیشتر از یکی از آنها میتواند در یک لحظه برقرار باشد. زمانی که با انشعاب OR مواجه میشویم، یک یا چند شاخه بسته به اینکه چه شرایطی صحیح است را انتخاب میکنیم. از منظر نشانگرها، بدان معنی است که انشعاب OR نشانگر ورودی را گرفته و به نسبت تعدادی که شرایط خروجی صحیح باشند، نشانگر ایجاد میکند، این تعداد میتواند حداقل یک و در بیشترین حالت به تعداد کل شاخه های خروجی باشد. همانند دروازه انشعاب XOR، یک انشعاب OR نیز میتواند با جریان پیش فرض مجهز شود و تنها زمانی که تمام شرایط دیگر با خطا ارزیابی گردند، انتخاب شود.
شکل بالا راه حل مثال ما را با استفاده از درگاه OR نشان میدهد. پس از ارسال زیر سفارش به هر یک از انبارها یا به هر دو، از یک ادغامکننده OR جهت همگام سازی جریان و ادامه با ثبت سفارش استفاده میکنیم.
یک ادغام کننده OR زمانی که تمامی شاخه های ورودی فعال تکمیل گردند اجرا میشود. انتظار برای یک شاخه فعال به معنی انتظار برای یک شاخه ورودی به گونهای است که آن شاخه ورودی در نهایت یک نشانگر را به ادغام کننده OR تحویل دهد. به عبارت دیگر در صورتیکه شاخه ورودی فعال گردد، ادغامکننده OR برای نشانگر آن منتظر میماند، در غیر اینصورت نمیماند. به محض اینکه تمامی نشانگرهای شاخه های فعال برسند، ادغامکننده OR این نشانگرها را به یک نشانگر تبدیل کرده (همانند کاری که یک ادغام کننده AND انجام میدهد) و این نشانگر را به کمان خروجی ارسال میکند. در مقابل ادغام ساده XOR و همزمان AND، این رفتار را ادغام همزمان مینامیم.
این مطلب برگرفته از کتاب Fundamentals of Business Process Management ترجمه شده توسط مدرسه مدیریت فرایند بود.
همانطور که مشاهده کردید، آموزش BPMN2 و نمادها و علائم این استاندارد در کتاب Fundamentals of Business Process Management کاملاً مبتنی بر مثال است. یعنی با ذکر مثال های مختلف نماد مورد نظر توضیح داده شده و در خلال آموزش تمرین های مختلفی نیز وجود دارد که میتوانید با انجام آنها بلافاصله به تسلط قابل توجهی در مورد نماد مورد نظر دست پیدا کنید. پاسخ تمرین ها در انتهای همان فصل قرار دارد.