پردازش موازی بخش مهمی از برنامههای فرآیندمحور است. فعالکردن مسیرهای پردازش موازی برای بهینهسازی فرآیند باعث استفاده بهتر از منابع محاسباتی شده و در سطوح مختلف BPMN پشتیبانی میگردد.
دروازه موازی(Parallel gateway) بدون چک کردن هیچ شرطی، چندین مسیر را فعال نموده و نتیجه در بالاترین درجه از موازیسازی حاصل میگردد.
مزیت لایهای که به پیادهسازی سرویسهای قرارداد شده میپردازد این است که جریان توالی موازیای را به صورت مستقل، پردازش و در بهینهسازی زمان، نقش مهمی را ایفا میکند.
در اینجا عملکرد کسب و کاری که منجر به خواندن دادههای مشتری میشود و نیاز به جمعآوری اطلاعات از چندین سیستم دارد را به عنوان یک مثال در نظر میگیریم.
این سیستمها میتوانند به طور همزمان، فراخوانی شده و زمانی که پاسخ همه آنها رسید، اطلاعات کامپایل شده برای کسب و کار مورد نظر فرستاده شود.
دروازه جامع (Inclusive gateway) اجازه پردازش موازی را میدهد، اما شرایطی را بر روی جریانهای خروجی اعمال مینماید.
با این وجود، مسیر هوشمندی برای استفاده از دروازه جامع برای مدلسازی شرایط در فرآیند معمولی وجود دارد، در واقع شما یک مسیر بدون شرطی را علاوه بر جریانهای خروجی دارای شرط مشخص مینمایید.
این مسیر همیشه فعال است و همراه با هر یک از دیگر شرطهایی که اجرا شوند، انجام میگردد.
مطابق تصویر، مسیر سیستم ۲ تحت هر شرایطی اجرا میشود و مسیرهای سیستمهای ۱ و ۳ زمانی اجرا خواهند شد که شرط آنها برقرار باشد.
در بسیاری از سناریوها، پیشروی بخشی از کار، وابسته به دریافت پیام است.
با استفاده از پردازش موازی به راحتی میتوان چنین سناریوهایی را پیادهسازی نمود، که نمونهای از آن را در تصویر زیر مشاهده میکنید؛ در حالی که فرایند منتظر نتیجه سیستم ۱ میماند، در شاخه پایینی سیستم ۳ منتظر نتیجه سیستم ۲ میباشد.
در برخی از سناریوها یک رویداد، در طول فرآیند تکرار میشود؛ برای پیادهسازی این نوع سناریوها از زیرفرآیند به صورت موازی استفاده میشود. به طور مثال برای پیادهسازی یک فرآیند سفر، نیاز به رزرو بلیت، رزرو هتل، تاکسی و ... است؛ در هر یک از این مراحل نیاز به پرداخت پول از کارت اعتباری داریم و با هربار پرداخت باید اطلاعات کارت اعتباری بهروزرسانی شود، لذا میتوان سیستم را به صورت زیر در نظر گرفت:
به دلیل اینکه پیام جزئیات بهروزرسانی اطلاعات کارت اعتباری در هر یک از سه مرحله گفته شده میتواند تغییر کند، میتوان سه مرحله از کار را به عنوان یک مجموعه در نظر گرفت، یا بهتر است بگوییم به عنوان یک زیرفرآیند در نظر میگیریم.
با استفاده از زیر فرآیند، یک حوزه برای هر رویداد معتبری تعریف میشود. در سناریوی ما، این رویداد تنها میتواند در برخی از نقاط در طول پردازش سه وظیفه رزرو رخ دهد چون اگر در مرحله شارژ کارت اعتباری باشیم دیگر نیازی به رفتن به نقطه به روزرسانی اطلاعات کارت نداریم.
تصویر زیر، نمونهای دیگر از پیادهسازی سناریوی عنوان شده است:
در این حالت به روزرسانی اطلاعات کارت را به عنوان یک زیرفرآیند -که ناشی از یک رویداد (Event Subprocess) است- در نظر گرفتهایم که با مستطیل نقطهچین درون زیرفرآیند نشان داده شده است.
این بخش در تمامی طول زیرفرآیند فعال است و با یک پیغام، رویداد شروع آن فراخوانی میشود.
با فرخوانی رویداد شروع این بخش، به روزرسانی اطلاعات کارت اعتباری به صورت موازی با هریک از وظایف رزرو انجام میشود.
هر سه روش عنوان شده برای پیادهسازی پردازش موازی، توانایی نمایش همزمانی را به وضوح و به طور کامل در فرآیندهای مدل شده BPMN به شما میدهند.
قطعاً میتوان مزایایی برای موازیسازی بهدست آورد، اما طراحان نیز باید در نظر داشته باشند که مسئولیت آنها در این کار، توجه به دستکاری دادهها و دسترسی در داخل فرآیند است.
منبع: پایگاه دانش BPM رایورز