บทช่วยสอน Drools: เครื่องยนต์กฎ Drools Archiการสอนและตัวอย่าง

Drools คืออะไร?

น้ำลายไหล เป็นซอฟต์แวร์การจัดการกฎเกณฑ์ทางธุรกิจแบบโอเพ่นซอร์ส (BRMS) ที่เขียนขึ้น Java ที่ให้คุณสมบัติที่หลากหลายแก่ผู้ใช้ เช่น Business Rule Engine, การเขียนเว็บ, แอปพลิเคชันการจัดการกฎ และการสนับสนุนรันไทม์สำหรับแบบจำลองการตัดสินใจและแบบจำลองสัญลักษณ์ ใช้ระบบการดำเนินการขั้นสูงของอัลกอริธึมการจับคู่รูปแบบรีเต้

Drools เปิดตัวภายใต้ Apache License 2.0 และเข้ากันได้กับ JVM ใด ๆ และมีอยู่ใน Maven Central Repository ด้วย

เครื่องมือ Drools ช่วยให้คุณแยกและให้เหตุผลเกี่ยวกับตรรกะและข้อมูลที่พบในกระบวนการทางธุรกิจ รองรับเอ็นจิ้นกฎน้ำลายไหลตามการอนุมานแบบไปข้างหน้าและข้างหลัง

น้ำลายจะแบ่งออกเป็นสองส่วน:

  • กำลังเขียน – มันเกี่ยวข้องกับการพัฒนาไฟล์กฎ
  • Runtime – มันเกี่ยวข้องกับการสร้างหน่วยความจำในการทำงานและการจัดการการเปิดใช้งาน

กฎคืออะไร?

กฎเกณฑ์เป็นส่วนหนึ่งของความรู้ที่มักแสดงเป็น “เมื่อมีเงื่อนไขเฉพาะเกิดขึ้น ให้ทำงานบางอย่าง”

ส่วนที่สำคัญที่สุดของกฎก็คือมัน เมื่อ ส่วนหนึ่ง. ครั้งหนึ่ง เมื่อ ส่วนหนึ่งก็พอใจแล้ว แล้วก็ ส่วนนั้นถูกกระตุ้น

ไวยากรณ์:

When
<Condition is true>
Then
<Take desired Action>

วิธีการจับคู่รูปแบบ

วิธีการจับคู่รูปแบบช่วยให้คุณเปรียบเทียบข้อเท็จจริงใหม่หรือเก่ากับกฎการผลิต เสร็จสมบูรณ์โดย Inference Engine

Algorithms ใช้สำหรับการจับคู่รูปแบบคือ:

  • อัลกอริทึม Rete
  • อัลกอริทึมแบบก้าวกระโดด
  • อัลกอริธึมเชิงเส้น
  • รักษาอัลกอริธึม

อย่างไรก็ตาม อัลกอริธึมส่วนใหญ่ที่ Drools ใช้คือ Rete Algorithm

อัลกอริทึม Rete

อัลกอริธึม Rete เป็นอัลกอริธึมการจับคู่รูปแบบที่มีประโยชน์ ซึ่งช่วยให้คุณใช้ระบบกฎการผลิตได้ ช่วยให้คุณเสียสละความทรงจำเพื่อเพิ่มความเร็ว นอกจากนี้ยังลดหรือขจัดความซ้ำซ้อนบางประเภทด้วยความช่วยเหลือของการแบ่งปันโหนด โดยจะจัดเก็บการจับคู่บางส่วนในขณะที่ดำเนินการรวมระหว่างข้อเท็จจริงประเภทต่างๆ

เครื่องยนต์กฎ Drools

เครื่องยนต์กฎ Drools เป็นแนวทางตามกฎในการใช้ระบบผู้เชี่ยวชาญในซอฟต์แวร์ Drools กลไกกฎมีระบบผู้เชี่ยวชาญซึ่งเป็นระบบฐานความรู้ที่ช่วยให้คุณตัดสินใจได้ เช่น จะทำอย่างไรและจะทำอย่างไร รวบรวมความรู้ไว้เป็นฐานความรู้ที่สามารถนำไปใช้ในการให้เหตุผลได้

ชุดเครื่องมือ Drools

ในบทช่วยสอน Drools Rule Engine เราจะเรียนรู้เกี่ยวกับ Drools Tool Suite เครื่องมือห้าประเภทที่มาเป็นส่วนหนึ่งของชุด Drools มีดังนี้

  • น้ำลายไหล Guvnor: เป็นพื้นที่เก็บข้อมูลส่วนกลางสำหรับ Drools KnowledgeBase
  • น้ำลายไหล: มีขั้นตอนการทำงานและกระบวนการทางธุรกิจ
  • น้ำลายไหลฟิวชั่น:เครื่องมือที่ใช้ในการประมวลผลเหตุการณ์ที่ซับซ้อน
  • Drools Expert หรือ Rules Engine: เครื่องมือที่มีประโยชน์สำหรับการแสดงการใช้เหตุผล
  • ผู้วางแผนน้ำลายไหล: เพื่อนำเสนอการวางแผนอัตโนมัติ ซึ่งรวมถึงปัญหาการวางแผน NP-hard

ส่วนประกอบสำคัญใน Drools

ในบทช่วยสอน Drools นี้ เราจะมาเรียนรู้เกี่ยวกับองค์ประกอบที่สำคัญของ Drools กัน

ต่อไปนี้เป็นคำศัพท์สำคัญที่ใช้ใน Drools:

  • ข้อเท็จจริง – ข้อเท็จจริงแสดงถึงข้อมูลที่ทำหน้าที่เป็นอินพุตสำหรับกฎ
  • การทำงานของหน่วยความจำ – พื้นที่เก็บข้อมูลพร้อมข้อเท็จจริง ซึ่งใช้สำหรับการจับคู่รูปแบบ สามารถแก้ไข แทรก และถอดออกได้
  • เซสชั่นความรู้ – ส่วนประกอบนี้เก็บทรัพยากรทั้งหมดที่จำเป็นสำหรับกฎการยิง ที่นี่ ข้อเท็จจริงทั้งหมดจะถูกแทรกลงในเซสชันเดียว จากนั้นกฎที่ตรงกันจะเริ่มทำงาน
  • ฐานความรู้ – เป็นตัวแทนของความรู้ในระบบนิเวศ Drools โดยจะจัดเก็บการก่อตัวของทรัพยากรที่พบกฎเกณฑ์ต่างๆ
  • โมดูล – นี่คือโมดูลที่เก็บฐานความรู้หลายฐานซึ่งสามารถเก็บเซสชันที่แตกต่างกันได้

Archiการบรรยายของ Drools

เครื่องยนต์กฎ Drools Archiเทคเจอร์
เครื่องยนต์กฎ Drools Archiเทคเจอร์

นี่คือระบบการทำงานของสถาปัตยกรรม Drools:

ขั้นตอน 1) กฎจะถูกโหลดลงใน Rule Base ซึ่งสามารถใช้ได้ตลอดเวลา

ขั้นตอน 2) ข้อเท็จจริงจะถูกยืนยันใน Working Memory ซึ่งอาจมีการแก้ไขหรือเพิกถอนได้

ขั้นตอน 3) กระบวนการจับคู่ข้อเท็จจริงใหม่หรือที่มีอยู่กับกฎการผลิตเรียกว่าการจับคู่รูปแบบ ซึ่งดำเนินการโดยกลไกกฎ

ขั้นตอน 4) วาระการประชุมช่วยให้คุณสามารถจัดการลำดับการดำเนินการของกฎที่ขัดแย้งกันด้วยความช่วยเหลือของกลยุทธ์การแก้ไขข้อขัดแย้ง

คุณสมบัติของ Drool

นี่คือคุณสมบัติที่สำคัญของ Drool:

  • ช่วยให้คุณแยกแอปพลิเคชันออกจากตรรกะแบบไดนามิก
  • การเขียนโปรแกรมประกาศ
  • การรวมศูนย์ความรู้
  • ความเร็วและความยืดหยุ่น
  • แยกตรรกะออกจากแอปพลิเคชัน
  • กฎเกณฑ์ที่เข้าใจได้

วิธีเพิ่มปลั๊กอิน Drools เข้าไป Eclipse

ในบทช่วยสอน Drools นี้ เราจะมาเรียนรู้วิธีเพิ่มปลั๊กอิน Drools กัน Eclipse.

ขั้นตอน 1) คลิกที่ “Distribution ZIP” เพื่อรวม jBPM
ไปที่ https://www.drools.org/download/download.html และคลิก “Distribution ZIP” เพื่อรวม jBPM เมื่อดาวน์โหลดแล้ว ให้แตกไฟล์ลงในฮาร์ดไดรฟ์ของคุณ

เพิ่มปลั๊กอิน Drools เข้าไป Eclipse

ขั้นตอน 2) ติดตั้งซอฟต์แวร์ใหม่
In Eclipseให้เลือกติดตั้งซอฟต์แวร์ใหม่

เพิ่มปลั๊กอิน Drools เข้าไป Eclipse

ขั้นตอน 3) คลิกที่ปุ่มเพิ่ม
คลิกที่ปุ่มเพิ่มเพื่อเพิ่มซอฟต์แวร์

เพิ่มปลั๊กอิน Drools เข้าไป Eclipse

ขั้นตอน 4) เรียกดูโฟลเดอร์
ในหน้าจอถัดไป คลิกที่ Local และเลือกโฟลเดอร์ “org.drools.updatesite/” จากนั้นคลิก Ok

เพิ่มปลั๊กอิน Drools เข้าไป Eclipse

ขั้นตอน 5) คลิกที่ปุ่มถัดไป
ในหน้าการติดตั้งการแก้ไข ให้คลิกที่ปุ่มถัดไป

เพิ่มปลั๊กอิน Drools เข้าไป Eclipse

ขั้นตอน 6) ยอมรับข้อตกลงใบอนุญาต
ยอมรับข้อตกลงใบอนุญาตแล้วคลิกถัดไป

เพิ่มปลั๊กอิน Drools เข้าไป Eclipse

ขั้นตอน 7) Reboot Eclipse
ซอฟต์แวร์จะทำการดาวน์โหลด และคุณจะถูกขอให้รีบูต Eclipse

ขั้นตอน 8) กระบวนการติดตั้งเสร็จสมบูรณ์
In Windows > เมนูการตั้งค่า คุณจะเห็นตัวเลือก Drools ระบุว่าติดตั้งแล้ว

เพิ่มปลั๊กอิน Drools เข้าไป Eclipse

ตัวอย่างโปรแกรม Drools Hello World

ด้านล่างนี้เป็นตัวอย่าง Drools สำหรับโปรแกรม Hello World:

package com.sample
import com.sample.DroolsTest.Message;
rule "Hello World"
 when
	m : Message( status ** Message.Hello, myMessage : message )
  then
System.out.println( myMessage );
m.setMessage( "Goodbye cruel world" );
m.setStatus( Message.GOODBYE ); 
update( m );
end
 rule "GoodBye"

when
	Message( status ** Message.GOODBYE, myMessage : message )
then
System.out.println( myMessage );
end

Backward vs. Forward Chaining คืออะไร?

เครื่องยนต์แบบส่งต่อจะตรวจสอบข้อเท็จจริงและได้ข้อสรุปที่เฉพาะเจาะจง

ลองพิจารณาสถานการณ์จำลองของระบบการวินิจฉัยทางการแพทย์ หากนำอาการของผู้ป่วยมาเป็นข้อเท็จจริงในความทรงจำในการทำงาน การวินิจฉัยโรคก็เป็นเรื่องง่าย

ย้อนกลับเทียบกับการผูกมัดไปข้างหน้า

เครื่องยนต์ไปข้างหน้า

เครื่องยนต์ผูกมัดถอยหลังมีเป้าหมายที่ตั้งไว้ และเครื่องยนต์พยายามที่จะตอบสนองความต้องการนั้น

พิจารณาสถานการณ์เดียวกันของการวินิจฉัยทางการแพทย์ สมมติว่ามีการระบาดของโรคบางชนิด AI นี้สามารถสันนิษฐานได้ว่าบุคคลนั้นเป็นโรคและพยายามตรวจสอบว่าการวินิจฉัยนั้นถูกต้องตามข้อมูลที่มีอยู่หรือไม่

ย้อนกลับเทียบกับการผูกมัดไปข้างหน้า

เครื่องยนต์ถอยหลัง

เหตุใดจึงต้องใช้ Drools Rule Engine

นี่คือเหตุผลสำคัญในการใช้เอ็นจิ้นกฎ Drools:

  • กฎง่ายต่อการเข้าใจสำหรับนักพัฒนาและ นักวิเคราะห์ธุรกิจ.
  • กฎเกณฑ์สามารถรักษาได้ง่าย
  • Rule Engine ใช้อัลกอริธึม Rete ซึ่งระบุว่าประสิทธิภาพของเอ็นจิ้นไม่เคยขึ้นอยู่กับจำนวนกฎ
  • สามารถปรับเปลี่ยนและปรับใช้กฎได้โดยไม่ต้องปิดแอปพลิเคชัน
  • ส่งออกตรรกะทางธุรกิจจากโค้ดเบสที่ค่อนข้างคงที่
  • กฎได้รับการพัฒนาในรูปแบบที่ซับซ้อนน้อยกว่า ดังนั้นนักวิเคราะห์ธุรกิจจึงสามารถอ่านและตรวจสอบกลุ่มกฎได้อย่างง่ายดาย
  • กฎเกณฑ์ช่วยให้คุณสร้างคลังความรู้ซึ่งสามารถดำเนินการได้ในรูปแบบ
  • เครื่องมือที่ชอบ Eclipse ช่วยคุณจัดการกฎ ได้รับการตอบกลับทันที การรับรองความถูกต้อง และการสนับสนุนด้านเนื้อหา

ข้อเสียของ Rules Engine

นี่คือข้อเสีย/ข้อเสียของการใช้กฎเอ็นจิ้น:

  • นักพัฒนาต้องใช้ความพยายามในการเรียนรู้มากมายเพื่อที่จะรู้วิธีการเขียนโปรแกรมนี้
  • Rule Engine ไม่ใช่วิธีการที่ปลอดภัยในการแก้ไขปัญหา
  • จำเป็นต้องเข้าใจการทำงานของเอ็นจิ้นกฎเพื่อใช้หน่วยความจำมากขึ้น
  • มีกฎเกณฑ์มากมายสำหรับการแตกสาขาที่ซับซ้อน

กฎอาจมีการเปลี่ยนแปลงเมื่อเวลาผ่านไปและจะมีผลบังคับใช้เมื่อมีการเปลี่ยนแปลงรหัส

สรุป

  • JBoss Drools เป็นแพลตฟอร์มการรวมลอจิกทางธุรกิจ (BLiP)
  • ประเภทของเครื่องมือ Drool ได้แก่ 1) Drools Guvnor 2) Drools Flow 3) Drools Fusion 4) Drools Expert 5) Drools, Planner
  • Drool ช่วยให้คุณแยกแอปพลิเคชันออกจากตรรกะแบบไดนามิก
  • ข้อเท็จจริงได้แสดงข้อมูลที่ทำหน้าที่เป็นอินพุตสำหรับกฎ
  • หน่วยความจำในการทำงานคือที่เก็บข้อมูลที่มีข้อเท็จจริง ซึ่งใช้สำหรับการจับคู่รูปแบบ สามารถแก้ไข แทรก และถอดออกได้
  • ฐานความรู้เป็นองค์ประกอบที่เก็บทรัพยากรทั้งหมดที่จำเป็นสำหรับกฎการเริ่มทำงาน
  • เซสชันความรู้เป็นตัวแทนของความรู้ในระบบนิเวศ Drools
  • ฐานความรู้ถือเป็นองค์ความรู้ในระบบนิเวศ Drools
  • โมดูลจะจัดเก็บฐานความรู้หลายฐาน ซึ่งสามารถเก็บเซสชันที่แตกต่างกันได้
  • กฎเกณฑ์เป็นส่วนหนึ่งของความรู้ที่มักแสดงเป็น “เมื่อมีเงื่อนไขเฉพาะเกิดขึ้น ให้ทำงานบางอย่าง”
  • Drools เป็นกลไกกฎซึ่งใช้แนวทางตามกฎเพื่อนำระบบผู้เชี่ยวชาญไปใช้
  • เครื่องยนต์แบบส่งต่อจะตรวจสอบข้อเท็จจริงและได้ข้อสรุปที่เฉพาะเจาะจง
  • เครื่องยนต์ผูกมัดถอยหลังมีเป้าหมายที่ตั้งไว้ และเครื่องยนต์พยายามที่จะตอบสนองความต้องการนั้น
  • อัลกอริธึม Rete เป็นอัลกอริธึมการจับคู่รูปแบบที่มีประโยชน์ ซึ่งช่วยให้คุณใช้ระบบกฎการผลิตได้
  • กฎเกณฑ์ง่ายต่อการเข้าใจสำหรับนักพัฒนาและนักวิเคราะห์ธุรกิจ
  • ข้อเสียเปรียบหลักของการใช้ Rules Engine เช่น Drool คือต้องใช้ความพยายามอย่างมากในการเรียนรู้ที่ Developer ต้องการเพื่อที่จะรู้วิธีการเขียนโปรแกรมนี้