บทช่วยสอน 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:
ขั้นตอน 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 เมื่อดาวน์โหลดแล้ว ให้แตกไฟล์ลงในฮาร์ดไดรฟ์ของคุณ
ขั้นตอน 2) ติดตั้งซอฟต์แวร์ใหม่
In Eclipseให้เลือกติดตั้งซอฟต์แวร์ใหม่
ขั้นตอน 3) คลิกที่ปุ่มเพิ่ม
คลิกที่ปุ่มเพิ่มเพื่อเพิ่มซอฟต์แวร์
ขั้นตอน 4) เรียกดูโฟลเดอร์
ในหน้าจอถัดไป คลิกที่ Local และเลือกโฟลเดอร์ “org.drools.updatesite/” จากนั้นคลิก Ok
ขั้นตอน 5) คลิกที่ปุ่มถัดไป
ในหน้าการติดตั้งการแก้ไข ให้คลิกที่ปุ่มถัดไป
ขั้นตอน 6) ยอมรับข้อตกลงใบอนุญาต
ยอมรับข้อตกลงใบอนุญาตแล้วคลิกถัดไป
ขั้นตอน 7) Reboot Eclipse
ซอฟต์แวร์จะทำการดาวน์โหลด และคุณจะถูกขอให้รีบูต Eclipse
ขั้นตอน 8) กระบวนการติดตั้งเสร็จสมบูรณ์
In Windows > เมนูการตั้งค่า คุณจะเห็นตัวเลือก Drools ระบุว่าติดตั้งแล้ว
ตัวอย่างโปรแกรม 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 ต้องการเพื่อที่จะรู้วิธีการเขียนโปรแกรมนี้