چرا باید به DMN اهمیت دهم؟
نمادسازی و مدلسازی تصمیمگیری (DMN) یک استاندارد صنعتی برای مدلسازی و اجرای تصمیماتی است که توسط قوانین تجارت و کسب و کار تعیین میشود.
DMN در سال ۲۰۱۵ منتشر شد و در حال حاضر شاهد این هستیم که با سرعت به مقبولیت زیادی دست مییابد. در ادامه دلایل این امر را برمیشمریم:
استاندارد:
DMN متعلق به یک شرکت خاص نیست، بلکه متعلق به موسسه OMG (کنسرسیومی از صدها شرکت کامپیوتری که استانداردهایی را بر مؤلفههای نرمافزاری مینویسند تا بتوانند با یکدیگر تعامل داشته باشند) است که در حال حاضر از طریق سایر استانداردهای جهانی، به عنوان مثال UML و BPMN تاسیس شده است. استاندارد DMN توسط چند محصول نرمافزاری پشتیبانی میشود؛ در این حالت شما وابستگی کمتری به محصولات فروشندگان خاص دارید.
اجرای مستقیم:
در DMN، میتوان با استفاده از زبان یکسان، تصمیمگیریها را مدلسازی و اجرا کرد. تحلیلگران کسب و کار میتوانند قوانینی را مدلسازی کنند که منجر به یک تصمیمگیری در جداولی میشود که خواندن آنها آسان است و جداولی که میتوان بهصورت مستقیم با موتور (محرک) تصمیمگیری مثل کاموندا اجرا کرد. این کار خطر سو تفاهم بین تحلیلگران کسب و کار و برنامهنویسان و توسعهدهندگان را به حداقل میرساند و باعث میشود تغییرات سریع در تولید حاصل شود.
تجربه
DMN به عنوان یک استاندارد، هنوز جوان و تازهکار است اما توسط افرادی توسعه یافته است که دههها تجربه در زمینه مدیریت قانون تجارت و کسب و کار دارند. هرچند که این استاندازد هیچ الگوی اجرا و پیادهسازی خاصی را تحمیل نمیکند اما نسبت به موتورهای قانون تجارت و کسب و کار سنتی، به اجراهای سبکتر و مدرنتر امکان پیادهسازی میدهد.
این آموزش، همانطور که در نسخه ۱٫۱ تعریف شده است، معرفی سریع و جامعی از DMN را ارائه میکند.
یک جدول تصمیمگیری ساده
ما باید آموزش DMN را با یک جدول تصمیمگیری نسبتا ساده آغاز کنیم:
فرض کنید که برای شام چند نفر مهمان دعوت کردهایم. سوال این است، کدام غذا را باید آماده کنیم؟ در این مثال ما یک منطق تصمیمگیری بسیار ساده را دنبال کردهایم: بسته به فصل فعلی، در مورد غذا تصمیمگیری میکنیم. اگر پاییز باشد، گوشت دنده میپزیم، اگر زمستان باشد رست بیف حاضر میکنیم و الی آخر.
بیایید نگاهی به عناصر این مثال بیندازیم:
- در گوشه بالا سمت راست، ما اسم این جدول تصمیمگیری را مشاهده میکنیم: «غذا»
- پایین آن «U» را مشاهده میکنیم که مخفف کلمه منحصر به فرد (unique) و به عنوان خط مشی مشخصی برای این جدول تصمیمگیری تعریف میشود. این بدان معنا است که زمانی که یک تصمیم گرفته میشود، تنها یکی از این ردیفهای زیرین میتواند درست باشد. در این حالت، فصل فعلی (جاری) میتواند فقط پاییز، زمستان، بهار یا تابستان باشد. ما نمیتوانیم بهطور همزمان دو فصل داشته باشیم، حتی اگر تابستان امسال کمی هوا خنک باشد!
- ستونهایی که به رنگ سبز کمرنگ هستند، به دادههای ورودی احتمالی اشاره دارد. در این مثال فقط یک ستون داده ورودی وجود دارد، چون ما فقط بر اساس فصل جاری میخواهیم تصمیم بگیریم. خانهای که در آن عنوان «فصل» را نوشتهایم، همین امر را توضیح میدهد. در DMN، این یک برچسب برای عبارت ورودی است. این عبارت خودش در این مثال، به خاطر سادهتر کردن جدول پنهان است اما در ادامهی این آموزش بهطور واضح خواهید دید و این مورد را توضیح خواهیم داد. خانههای زیرین (که ورودی دادهها نامیده شده است)، به شرایط احتمالی مربوط به ورودی اشاره دارد. برخی شرایط و موقعیتها در داخل علامت نقل قول قرار دارند (مثل «تابستان») که دلیل آن هم این است که داریم از نظر فنی، ارزشهای دسته را مقایسه میکنیم.
- برای هر داده ورودی احتمالی (که در این جدول نام فصل جاری ما هستند)، ما در خانه کناری یک داده خروجی تعریف کردهایم. اینگونه بیان میکنیم که بر اساس فصل، دوست داریم غذای خاصی آماده کنیم. باز هم ما مجبور به استفاده از علامت نقل قول هستیم (مثل «استیک»)، چون از لحاظ فنی میخواهیم به دسته ارزش مشخصی اختصاص دهیم.
- این یک قانون است که طبق دادههای ورودی که صحیح است (یا ترکیبی از دادههای ورودی صحیح)، باید یک داده خروجی داشته باشیم. هر قانون در یک ردیف در زیر جدول هدر تعریف شده است و شماره دارد که شما میتوانید در خانهها (از راست به چپ) پیدا کنید.
- آخرین مورد که اهمیتش از بقیه مواردی که ذکر شد کمتر نیست، این است که شما میتوانید قوانین خود را در ستون سمت چپ یادداشت کنید. این حاشیهنویسیها و یادداشتها تنها بخاطر توضیح نوشته میشوند و توسط موتور تصمیمگیری نادیده گرفته میشوند.
به اندازه کافی ساده است، مگر نه؟ البته در مورد DMN موارد بیشتری وجود دارد اما قواعد و اصول کلی در واقع بسیار راحت هستند.
ترکیب شرایط
در بسیاری از موارد یک قانون نه تنها شامل یک شرط میشود، بلکه ترکیبی از شرطها را شامل میشود. ما میتوانیم با اضافه کردن ستونهای دادههای ورودی به جدول تصمیمگیری، این را بیان کنیم:
در این مورد ما ممکن است بخواهیم مهمانان گیاهخوار را نیز در نظر بگیریم. با صرف نظر از فصل، ما نمیتوانیم هیچ غذای گوشتی سرو کنیم. خوشبختانه همیشه کمی پاستا در خانه داریم. با ترکیب دو ستون داده «فصل» و «مهمانان گیاهخوار»، مطمئن شدیم که چهار قانون اول تنها در صورتی میتواند صحیح باشد که مهمانان گیاهخوار نباشند. قانون شماره ۵ یک «-» در قسمت داده ورودی دارد که فصل را بررسی میکند و این بدان معنا است که میتواند هر فصلی باشد؛ اگر در هر فصلی مهمان گیاهخوار داشته باشیم، میتوانیم برایش پاستا آماده کنیم.
همانطور که مشاهده میکنید، ترکیب دادههای ورودی در یک قانون (یعنی در یک ردیف جدول)، همواره از منطق «و» پیروی میکند: «اگر پاییز است «و» مهمانها گیاهخوار نیستند، گوشت دنده تهیه میکنیم.»
ادامه دارد.