بخش های اصلی

آموزش Drools

شکل دستوری Rule ها در Drools

همانطور که دیدین, .drl (فایل rule) شکل دستوری خاص خودش را داره، بیاید برخی از قسمت های شکل دستوری Rule (قانون) را در این بخش بررسی کنیم.

شرط ها (Conditions) در Ruleها 

یک rule (قانون) تعداد زیادی شرط و الگو داره، مثل:

  • Account (balance == 200)
  • Customer (name == “Vivek”)

شرایط بالا بررسی می کنن که موجودیِ حساب (Account balance) برابر 200 باشه یا نام مشتری (Customer)، “Vivek” باشه.

متغیرها در Ruleها

در Drools، نام متغیر با علامت دالِر ($) شروع میشه.

  • $account : Account()
  • $account، متغیری برای کلاسِ Account() هست.

Drools با تمام انواعِ (types) اصلیِ جاوا و حتی با Enum (نوع داده ی شمارشی)، کار می کنه.

توضیحات (Comments) در Ruleها

کاراکترهای خاصِ # یا // برای تبدیل یک خط به توضیحات استفاده میشن.
برای داشتنِ چندین خط توضیحات از فرمت زیر استفاده کنین:

/*
   Another line
   .........
   .........
*/

متغیرهای سراسری

متغیرهای سراسری، متغیرهای تخصیص داده شده به یک session (جلسه) هستن. این متغیرهای به دلایل زیادی استفاده میشن:

  • برای ورود پارامترها (برای مثال، مقادیر ثابتی که از یک session به session دیگه تغییر می کنن).
  • برای پارامترهای خروجی (برای مثال، گزارش نویسی (reporting) – یک rule (قانون) می تواند پیام هایی برای متغیرِ گزارشِ سراسری بنویسه).
  • خدمات بخش های ورود، مثل ورود به سیستم (logging in) که می تواند داخل ruleها استفاده بشه.

توابع در Ruleها

توابع ویژگی هایی تسهیل کننده هستن. توابع می توانند در شرط ها و نتیجه ها استفاده بشن و جایگزینی برای کلاس های utility/helper (ابزار/کمک کننده) ارائه میدن.

برای مثال

function double calculateSquare (double value) {
   return value * value;
}

Dialect

dialect شکل دستوریِ استفاده شده در هر عبارتِ کدی که بصورت شرط یا نتیجه باشه را تعیین می کنه. dialect شامل return values (مقادیر بازگشتی)، evals (مقادیر عددی)، inline evals (مقادیر عددیِ درون خطی)، predicates (عملوندها)، عبارات salience، نتایج و غیره میشه. Drools در حال حاضر از یه dilect دیگه به نام MVEL هم پشتیبانی می کنه. dialect پیش فرض می تواند بصورت زیر در سطحِ پکیج، تعریف بشه:

package org.mycompany.somePackage
dialect "mvel"

MVEL Dialect

MVEL یک زبان توضیحی برای نرم اافزارهای تحت جاواست، از فیلد و دسترسیِ method/getter (گیرنده/متد) پشتیبانی می کنه و مبتنی بر شکل دستوریِ جاواست.

Salience

Salience یکی از ویژگی های خیلی مهم در شکل دستوریِ Rule (قانون) است. Salience توسط استراتژیِ رفع ناسازگاری، برای تصمیم راجع به این که کدام rule اول اجرا بشه، استفاده میشه. بصورت پیش فرض،مهم ترین معیار به شمار میره.

میتوانیم از salience برای تعریف ترتیب اجزای ruleها استفاده کنیم. Salience یک خصیصه داره که هر عبارتی که عددی از نوع int (اعداد منفی هم مثل اعداد مثبت مجاز هستن) برگرداند را میگیره. هرچه عدد بزرگ تر باشه، احتمال این که rule برای اجرا، توسط استراتژی رفع ناسازگاری، انتخاب بشه بیشتره.

salience ($account.balance * 5)

مقدار پیش فرض silience، 0 است. این مورد را باید هنگام تخصیص دادن ruleها به مقادیر salience، بخاطر داشته باشیم.

در شکل دستوریِ Rule، ویژگی ها/پارامترهای خیلی بیش تری وجود داره، با این حال در این بخش، فقط موارد مهم آن را توضیح دادیم.

کلمات کلیدی نتایج Rule

کلمات کلیدیِ نتایجِ Rule، کلمات کلیدی ای هستن که در بخش “then” از rule، به کار میرن.

  • Modify (تغییر) – خصیصه های (attributes) fact (واقعیت)، در بخشِthen از Rule تغییر می کنن.
  • Inset (اضافه کردن): تحت برخی شرایط، اگر شرط، true (صحیح) باشه، یک fact میتواند به session (جلسه) جاریِ موتورِ Rule (قانون)، اضافه بشه.
  • Retract (پس گرفتن): اگر شرط خاصی در یک Rule، true (صحیح) باشه و نخواید هیچ کار دیگه ای روی fact انجام بشه، می توانید آن fact را از موتورِ Rule (قانون)، پس بگیرین.

نکته: رویه ی بسیار بدی برای منطقِ شرطی (عبارتِ if) داخل نتیجه ی rule در نظر گرفته شده. بیش تر مواقع، باید یک قانون جدید ایجاد بشه.

در صورتی که سوال و یا نظری دارید، از بخش نظرات با ما در میان بگذارید.

خبـرنــامه

Newsletters

در خبــرنـامه سافت اسکیل عضو شویــد تا جدیدترین هـای سایت را بلافاصله در ایمیل خـود دریافت کنیـد

شما چه نظر و یا سوالی درباره این نوشته دارید؟

مبحث آموزشی

آموزش Drools

Learn Drools

پرســیدن سؤال جدید

سؤال های تخصصی خود را از ما بپرسید

تبلیغات

دنبال کردن تلگرام کانال سافت اسکیل

https://telegram.me/softskill_ir

عملیات کاربران

خبـرنــامه

Newsletters

در خبــرنـامه سافت اسکیل عضو شویــد تا جدیدترین هـای سایت را بلافاصله در ایمیل خـود دریافت کنیـد