บทช่วยสอน Drools: ระบบกฎเกณฑ์ Archiแผนผังและไดอะแกรม

⚡ สรุปอย่างชาญฉลาด

Drools เป็นระบบจัดการกฎทางธุรกิจแบบโอเพนซอร์สที่เขียนด้วยภาษาโปรแกรม Java ซึ่งเป็นการแยกตรรกะทางธุรกิจออกจากโค้ดแอปพลิเคชัน เอกสารนี้อธิบายกฎต่างๆ อัลกอริทึม Rete สถาปัตยกรรมและส่วนประกอบของ Drools Eclipse การตั้งค่าปลั๊กอิน และตัวอย่างกฎ "Hello World"

  • ⚙️ คำจำกัดความหลัก: น้ำลายไหลคือ Javaระบบ BRMS ที่ใช้ Rete pattern matching algorithm ในการประมวลผลกฎทางธุรกิจ
  • 📜 โครงสร้างของกฎ: กฎจะทำงานในรูปแบบ "เมื่อ...แล้ว" โดยจะดำเนินการก็ต่อเมื่อเงื่อนไขตรงกับข้อเท็จจริงในหน่วยความจำใช้งานเท่านั้น
  • 🏗️ Archiเทคเจอร์: กฎต่างๆ จะถูกโหลดเข้าไปในฐานข้อมูลกฎ ข้อเท็จจริงจะถูกป้อนเข้าไปในหน่วยความจำใช้งาน และกลไกจะทำการจับคู่และเรียกใช้ตามวาระที่กำหนดไว้
  • 🔌 Eclipse การติดตั้ง: ปลั๊กอิน Drools จะติดตั้งใน Eclipse ผ่านไฟล์ ZIP ของ jBPM และหน้าต่างติดตั้งซอฟต์แวร์ใหม่
  • 🔄 โหมดการเชื่อมต่อ: Drools สนับสนุนการคิดแบบชี้นำจากข้อเท็จจริงไปสู่ข้อสรุป และการคิดแบบชี้นำย้อนกลับจากเป้าหมายไปสู่ข้อเท็จจริง

บทช่วยสอนเรื่องน้ำลายไหล

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) ข้อเท็จจริงจะถูกบันทึกไว้ในหน่วยความจำใช้งาน ซึ่งต่อมาอาจมีการแก้ไขหรือปรับเปลี่ยนได้tracเท็ด

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

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

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

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

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

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

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

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

เพิ่มปลั๊กอิน 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 ไม่ใช่วิธีการที่ปลอดภัยในการแก้ไขปัญหา
  • จำเป็นต้องเข้าใจการทำงานของกลไกการกำหนดกฎเกณฑ์เพื่อใช้หน่วยความจำมากขึ้น
  • มีกฎเกณฑ์มากมายสำหรับการแตกสาขาที่ซับซ้อน

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

คำถามที่พบบ่อย

ใช่แล้ว Drools เผยแพร่ภายใต้ Apache License 2.0 และเป็นซอฟต์แวร์โอเพนซอร์สฟรีโดยสมบูรณ์ สามารถทำงานได้บน JVM ทุกประเภท และมีให้ใช้งานผ่าน Maven Central Repository เพื่อการรวมเข้ากับโปรเจ็กต์ได้อย่างง่ายดาย

กฎของ Drools เขียนด้วย DRL (Drools Rule Language) ซึ่งเป็นไวยากรณ์เชิงประกาศที่อิงตามโครงสร้าง when-then นอกจากนี้ กฎยังสามารถเขียนโดยใช้ตารางการตัดสินใจ โมเดล DMN หรือภาษาเฉพาะโดเมนสำหรับผู้ใช้ทางธุรกิจได้อีกด้วย

กลไกการสร้างกฎ (Rule Engine) แยกตรรกะออกเป็นกฎที่ดูแลรักษาง่าย ซึ่งสามารถเปลี่ยนแปลงได้โดยไม่ต้องปรับใช้แอปพลิเคชันใหม่ ในขณะที่ตรรกะ if-else ที่เขียนแบบตายตัวนั้นกระจัดกระจายอยู่ทั่วโค้ดเบส อัปเดตได้ยากกว่า และไม่สามารถรองรับการขยายตัวได้ดีเมื่อจำนวนเงื่อนไขเพิ่มขึ้น

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

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

สรุปโพสต์นี้ด้วย: