هذه أداة للتحقق من صحة ملفات تدوين نموذج القرار (DMN). إنه يقوم بتحليلات ثابتة مختلفة للكشف عن التناقضات والأخطاء في نماذج قرارك.
يمكنك استخدام dmn-check بست طرق.
حاليا ، فحص DMN-Check من بين آخرين لما يلي:
في عمليات التحقق من صحة القسم ، يمكنك العثور على قائمة كاملة مع أوصاف مفصلة لما يقومون به.
يتم وصف معظم الخصائص والثنائيات التي يتم التحقق من صحتها بواسطة dmn-check بشكل غير رسمي في مواصفات DMN. في حال كان لديك أسئلة حول عمليات التحقق ، فقد يكون من المفيد تقليص المواصفات.
يتطلب هذا البرنامج المساعد Java 17 أو لاحقًا وأباتشي Maven 3 أو لاحقًا. بعض التحليلات مصممة تجاه تطبيق Camunda DMN وقد لا تعمل مع تطبيقات DMN المختلفة.
يمكن استخدام dmn-check إما كمكون مافن عادي داخل مشاريعك pom.xml أو كبرنامج مستقل.
يوضح المثال التالي التكوين الأساسي للمكون الإضافي:
<plugin>
<groupId>de.redsix</groupId>
<artifactId>dmn-check-maven-plugin</artifactId>
<version>...</version>
<executions>
<execution>
<phase>verify</phase>
<goals>
<goal>check-dmn</goal>
</goals>
</execution>
</executions>
</plugin>
باستخدام هذا التكوين ، سيقوم المكون الإضافي بالبحث في جميع مجلدات المشروع الحالي للملفات التي تحتوي على ملحق .dmn وتطبيق جميع المصقوقة المتاحة. من الممكن توفير مجموعة من مسارات البحث بدلاً من ذلك ، بالإضافة إلى تجاهل بعض الملفات وتحديد المدققين الذين يجب تنفيذها. يوضح المثال التالي كيف يمكنك الاستفادة من هذه الخيارات عن طريق تقييد مسار البحث على المجلدات src/ و model/ ، وكذلك تجاهل test.dmn . يحدد التكوين أيضًا أنه يجب تنفيذ ShadowedRuleValidator فقط. لتحديد المدققين ، يجب عليك استخدام الاسم المؤهل بالكامل.
<configuration>
<searchPaths>
<searchPath>src/</searchPath>
<searchPath>model/</searchPath>
</searchPaths>
<excludes>
<exclude>test.dmn</exclude>
</excludes>
<validatorClasses>
<validatorClass>de.redsix.dmncheck.validators.ShadowedRuleValidator</validatorClass>
</validatorClasses>
</configuration>
بالإضافة إلى ذلك ، يمكن تعيين المعلمة failOnWarning (خاطئ) لفشل تنفيذ Maven إذا كانت هناك أخطاء التحقق من صحة مع شدة التحذير.
<configuration>
<failOnWarning>true</failOnWarning>
</configuration>
لاستخدام dmn-check بدون أو خارج مشروع Maven ، يمكنك استدعائه بالطريقة التالية
mvn de.redsix:dmn-check-maven-plugin:check-dmn
يتطلب هذا البرنامج المساعد Java 11 أو الأحدث و Gradle 6.5 أو أحدث. بعض التحليلات مصممة تجاه تطبيق Camunda DMN وقد لا تعمل مع تطبيقات DMN المختلفة.
DMNMGR هي مجموعة أدوات تنفصل عن تطبيق Camunda DMN وتوفير أدوات لتطوير تطبيقات قائمة على DMN في فرق متعددة الوظائف. إنه يشحن مع تكامل dmn-check ويتصور التحذيرات والأخطاء في التمثيل الرسومي لنموذج DMN. تحتاج إلى تثبيت DMNMGR-Client و DMNMGR Server لاستخدامه.
تتوفر صورة Docker التي تحتوي على dmn-check من سجل حاوية Github ويمكنك سحب أحدث إصدار من خلال التنفيذ
docker pull ghcr.io/red6/dmn-check:latest
إذا كنت ترغب في استخدام docker run لتنفيذ dmn-check يجب عليك تثبيت الدليل الذي يحتوي على ملفات DMN في الحاوية وتعيين مسار البحث بشكل مناسب ، على سبيل المثال
docker run -v ~/dmn-files:/dmn-files ghcr.io/red6/dmn-check:latest --searchPath=/dmn-files
إذا كنت ترغب في استخدام صورة Docker في خط أنابيب gitlab ، فعليك الكتابة فوق نقطة الدخول واستدعاء dmn-check مباشرة. في المثال التالي لخط أنابيب gitlab ، نقوم بتحديد Project ClassPath أيضًا ، لجعل التحقق من صحة التعداد ممكنًا.
variables:
MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository"
default:
artifacts:
paths:
- ./cp.txt
- .m2/repository
stages:
- analysis
image:
name: ghcr.io/red6/dmn-check:latest
entrypoint: [ "" ]
create-classpath-for-dmn-check:
image: adoptopenjdk/maven-openjdk11
stage: analysis
script: mvn dependency:build-classpath --settings .m2/settings.xml --batch-mode -Dmdep.outputFile=cp.txt
dmn-check:
stage: analysis
needs:
- create-classpath-for-dmn-check
script: |
/opt/java/openjdk/bin/java -cp /app/resources:/app/classes:/app/libs/* de.redsix.dmncheck.cli.Main --projectClasspath=$(< cp.txt)
تصف الأقسام الفرعية التالية عمليات التحقق المتاحة بالتفصيل. يتم اشتقاق جداول قرار DMN المستخدمة في هذا القسم من مثال على camunda.org.
النظر في جدول قرار DMN التالي مع سياسة ضرب UNIQUE :
| الموسم ᴵᴺᴾᵁᵀ | كم عدد الضيوف ᴵᴺᴾᵁᵀ | طبق ᴼᵁᵀᴾᵁᵀ | |
|---|---|---|---|
| 1 | "يسقط" | <= 8 | "Spareribs" |
| 2 | "شتاء" | <= 8 | "الشواء" |
| 3 | "ربيع" | [5..8] | "شريحة لحم" |
| 4 | "شتاء" | <= 8 | "الشواء" |
من الواضح أن القاعدة رقم اثنين هي نسخة مكررة من القاعدة الرابعة. هذا غير مسموح به من خلال سياسة ضرب UNIQUE وبالتالي خطأ.
التعريف : القاعدة هي نسخة مكررة لقاعدة أخرى إذا وفقط إذا كانت جميع المدخلات والمخرجات من هذه القواعد متطابقة.
ستقوم dmn-check بالإبلاغ عن قواعد مكررة لجميع جداول القرار باستثناء أولئك الذين لديهم COLLECT سياسة HIT.
القواعد المتضاربة تشبه إلى حد ما القواعد المكررة. النظر في المثال التالي مع سياسة HIT UNIQUE :
| الموسم ᴵᴺᴾᵁᵀ | كم عدد الضيوف ᴵᴺᴾᵁᵀ | طبق ᴼᵁᵀᴾᵁᵀ | |
|---|---|---|---|
| 1 | "يسقط" | <= 8 | "Spareribs" |
| 2 | "شتاء" | <= 8 | "الشواء" |
| 3 | "ربيع" | [5..8] | "شريحة لحم" |
| 4 | "شتاء" | <= 8 | "الحساء" |
ننظر مرة أخرى في القاعدة الثانية والرابعة. هذه المرة ، جميع مدخلاتها متطابقة ، لكنها تختلف في الإخراج. يمكن القول أن هذا أسوأ من قاعدة مكررة ، لأنه قد ينتج عنه نتائج مختلفة اعتمادًا على ترتيب التقييم لجدول القرار. على افتراض أن وقت التشغيل لا يكتشف تلك التناقضات.
التعريف : القاعدة r تتعارض مع القاعدة s إذا وفقط إذا كانت جميع مدخلات القواعد r و s متطابقة وإذا كانت تختلف في تأجير مخرج واحد.
ستقوم dmn-check بالإبلاغ عن قواعد مكررة لجميع جداول القرار ، باستثناء أولئك الذين لديهم COLLECT سياسة HIT و RULE_ORDER .
بعض القواعد تمنع الآخرين من النظر. ألق نظرة على المثال التالي مع سياسة HIT FIRST :
| الموسم ᴵᴺᴾᵁᵀ | كم عدد الضيوف ᴵᴺᴾᵁᵀ | طبق ᴼᵁᵀᴾᵁᵀ | |
|---|---|---|---|
| 1 | "يسقط" | <= 8 | "Spareribs" |
| 2 | "شتاء" | <= 8 | "الشواء" |
| 3 | - | - | "الحساء" |
| 4 | "ربيع" | [5..8] | "شريحة لحم" |
لا يحتوي هذا المثال على قواعد مكررة ولا قواعد متضاربة. ومع ذلك ، فإن جميع مدخلات القاعدة الثالثة فارغة (ممثلة مع اندفاعة في هذا المثال). بما أن المدخلات الفارغة تتطابق مع كل شيء ، وبما أن نفترض أن السياسة FIRST لن تتطابق القاعدة الرابعة مع القاعدة الثالثة لجميع المدخلات الممكنة. لذلك ، يتم تقديم الحساء لضيوف من 5 إلى 8 في الربيع. على افتراض أن كل قاعدة تخدم غرضًا ، فإن القواعد المظللة هي دائمًا خطأ لأنها لن تتم مطابقتها أبدًا.
التعريف : القاعدة r shadows القاعدة s إذا وفقط إذا كانت مدخلات القاعدة r تتطابق على الأقل مع جميع القيم التي تطابقها مدخلات s .
ستقوم dmn-check بالإبلاغ عن قواعد مكررة لجميع جداول القرار باستثناء أولئك الذين لديهم COLLECT سياسة HIT و RULE_ORDER .
تقدم DMN لغة تعبير غنية تسمى لغة التعبير الودية بما يكفي (الشعور) التي يمكن استخدامها لوصف الظروف لإدخالات الإدخال. ومع ذلك ، كما هو الحال مع معظم لغات التعبير ، ليست كل التعبيرات الممكنة من الناحية النحوية صالحة (لها دلالات). يدمج dmn-check مدققًا نوعًا للغة التعبير التي يضمن أن جدول القرار يحتوي على تعبيرات مطلقة فقط.
مثال على التعبير غير المغطى هو [1..true] والذي من شأنه أن يصف النطاق بين 1 true وهو (في الإيجار في الشعور) وليس تعبيرًا صحيحًا. على النقيض من ذلك ، [1..9] مملوء جيدًا ويصف الأرقام من 1 إلى 9.
| الشعور بالتعبير | يكتب |
|---|---|
| حقيقي | منطقية |
| [1..3] | عدد صحيح |
| [1 .. "سلسلة"] | ✘ |
| 1 ، 2 ، صحيح | ✘ |
| > 5 | عدد صحيح |
| > صحيح | ✘ |
بالطبع تم التحقق من صحة إعلان النوع.
غالبًا ما يتضمن اتخاذ القرارات مجموعة ثابتة من القيم (على سبيل المثال قائمة بالعملات المدعومة) وبالتالي يتم استخدام هذه القيم في جداول قرار DMN. غالبًا ما يتم تنفيذ هذه القيم في شكل جافا التعداد. dmn-check أيضًا لتحديد اسم الفئة المؤهلة بالكامل للتعداد في إعلان نوع عمود الإدخال / الإخراج والتحقق من القيم في جدول قرار DMN مقابل تنفيذ التعداد.
بشكل افتراضي ، يستخدم dmn-check تبعيات المشروع لحل التعدادات. نظرًا لأن هذا غير ممكن في الوضع المستقل Maven ، يمكنك تحديد ClassPath المستخدم لحل التعدادات
mvn de.redsix:dmn-check-maven-plugin:check-dmn -Dclasspath=foo.jar,bar.jar
يوفر معيار DMN أيضًا وسيلة لتوصيل جداول القرارات مع بعضها البعض وللنماذج من المدخلات ومصادر المعرفة. تسمى الرسوم البيانية الناتجة الرسوم البيانية لمتطلبات القرار (DRG).
يتحقق dmn-check من أن رسم بياني للقرار
في المثال التالي ، يحتوي Dish جدول القرار على Season How many guests كمدخلات ، ولكن بدلاً من Season الإدخال ، توجد Lunar phase المدخلات متصلة بجدول القرار.
الرسم البياني TD ؛
X (المرحلة القمرية)-> طبق ؛
y (كم عدد الضيوف)-> طبق ؛
طبق-> المشروبات ؛
Z (الضيوف مع الأطفال)-> المشروبات ؛
يسمح معيار DMN بتجميع القيم لجمع سياسة HIT. على سبيل المثال ، يمكنك حساب مجموع جميع الصفوف المطابقة في جدول القرار. يمكنك استخدام هذه الميزة لحساب درجة الائتمان.
نحن نضمن أن يتم تطبيق هذه التجميعات فقط على الأعمدة بنوع رقمي. بالإضافة إلى ذلك ، فإننا نتحقق من أن التجمعات تستخدم فقط عند استخدام جمع سياسة HIT.
عادة لا يتعين عليك الاهتمام بالكثير من المعرفات وأسماء عناصر DMN. ومع ذلك ، أثناء الترقيات وإعادة إنشاء قد يحدث ذلك قد يحدث معرف أو اسم. هذه الأخطاء عادة ما تبقى دون أن يلاحظها أحد لفترة طويلة. اعتمادًا على السيناريو ، قد يؤدي مفقود المعرفات أو الأسماء إلى كسر نموذج القرار الخاص بك أو يجعل تحليل الخطأ صعبًا.
يتحقق dmn-check من أن عناصر DMN التالية لها معرف واسم دائمًا:
ItemDefinition s ItemDefinition S هي طريقة DMNS للتعبير عن التعداد. في تعريف ItemDefinition تعلن القيم المسموح بها. في الوقت الحالي ، لا نتحقق فقط من صحة ما إذا كانت التعبيرات من ItemDefintion مملوءة جيدًا.
عندما بدأنا العمل على dmn-check ، لم نكن من أدوات تحليل لملفات DMN التي تناسب احتياجاتنا وعملت في بيئتنا المنكهة. منذ ذلك الحين أصبحت DMN أكثر شعبية وبدأت الأدوات الأخرى توفر بعض قدرات التحليل أيضًا. إذا كنت تريد أن تعرف كيف تقارن dmn-check بالأدوات الأخرى ، فيمكنك قراءة مقارنة في GCD.
مدد أولاري لورسون وفابريزيو ماريا ماجي مجموعة أدوات تحرير dmn-js من كاموندا مع قدرات التحليل ونشروها على github.com/ulaurson/dmn-js. الأداة قادرة على اكتشاف الأخطاء بناء الجملة وكتابة وتحديد القواعد المتداخلة والمفقودة. كما أنه قادر على تبسيط جداول القرار عن طريق دمج القواعد. في الورق التجريبي LM16 يصفون الأداة. يتم نشر مزيد من التفاصيل حول التحليلات التي تؤديها الأداة في CDL+16.
CDL+16 Calvanese ، D. ، Dumas ، M. ، Laurson ، ü. ، Maggi ، FM ، Montali ، M. ، Teinemaa ، i. في وقائع المؤتمر الدولي الرابع عشر حول إدارة العمليات التجارية (BPM) 2016
LM16 Laurson ، ü. و Maggi ، FM ، 2016 ، سبتمبر. أداة لتحليل جداول القرار DMN. في BPM (DEMOS) (ص. 56-60).
BW-A Batoulis ، K. and Weske ، M. ، أداة للتحقق من سلامة العمليات التجارية المدركة للقرار.
BW-B Batoulis ، K. and Weske ، M. ، Disambiguation of DMN Tables.
FMTV18 Figl ، K. ، Mendling ، J. ، Tokdemir ، G. and Vanthienen ، J. ، 2018. ما نعرفه وما لا نعرفه عن DMN. Enterprise Modeling and Information Systems Architections ، 13 ، pp.2-1.
Silver16 Silver ، B. ، 2016. تحليل جدول القرار في DMN.
HDSV17 Hasic ، F. ، De Smedt ، J. and Vanthienen ، J. ، 2017. نحو تقييم التعقيد النظري لنموذج القرار والتدوين (DMN). Enterprise و Business-Process and Information Systems Modeling. نشر Springer International.
GCD Grohé و C. منتدى إدارة العمليات التجارية ، منتدى BPM 2021 ، روما ، إيطاليا.
Valencia-Parra ، A. ، Parody ، L. ، Varela-Vaca ، A. ، Caballero ، I. ، and Gómez-López M. ، 2020. DMN4DQ: عندما تلتقي جودة البيانات DMN. مجلة "أنظمة دعم القرار".