ความสัมพันธ์ระหว่างเอ็นจิน Business Rules และภาษาการเขียนโปรแกรมข้อ จำกัด


20

ถ้ามีคนดูคู่มือ Drools หรือบางทีอาจจะเป็นกฎเก่า ๆ ภาพหนึ่งในมูลค่าเพิ่มของพวกเขาก็คือการไขปริศนาเช่น Puzzle Miss Manners (คู่มือของ Drools) ตอนนี้ปริศนาดังกล่าวได้รับการพัฒนาและแก้ไขตามธรรมชาติโดยใช้ภาษาโปรล็อกหรือภาษาโปรแกรมข้อ จำกัด ล่าสุดและสงสัยว่าทำไมทุกคนจะใช้ Drools เพื่อจุดประสงค์นี้ มูลค่าเพิ่มที่ Prolog และ CPL ให้ไว้ในกรณีนี้คือความสามารถในการกำหนดตัวไขปริศนาตามชุดของตรรกะและเพื่อค้นหาพื้นที่ของการแก้ปัญหาโดยอัตโนมัติ (โดย CPL มีประสิทธิภาพมากกว่าในแง่นี้) แต่มูลค่าเพิ่มของผลิตภัณฑ์เช่น Drools คืออะไร (ฉันหมายถึงนอกเหนือจากเสียงระฆังและเสียงนกหวีดแห่งการถ่ายเช่นไฟล์ Excel และแปลเป็นชุดของกฎ)

โดยเฉพาะอย่างยิ่ง Prolog ใช้การค้นหาย้อนรอย CLP ใช้การค้นหาย้อนรอยด้วยการเผยแพร่ข้อ จำกัด และดังนั้นแทนที่จะค้นหาเพื่อพูดผลิตภัณฑ์คาร์ทีเซียนทั้งหมดของช่องว่างสำหรับตัวแปรแต่ละตัวจะตัดส่วนที่มีขนาดใหญ่ของพื้นที่ผลิตภัณฑ์นี้ สิ่งนี้ทำให้พวกเขามีประสิทธิภาพและมีประโยชน์ ทั้ง Prolog และ CLP ถูกกล่าวถึงอย่างพอเพียงในวรรณกรรม

ในขณะที่มันเป็นที่ชัดเจนว่าอัลกอริทึม Rete แคชชุดของกฎในรูปแบบของโครงสร้างข้อมูลบางอย่าง (เพื่อความเข้าใจของฉัน) ทำให้มันมีประสิทธิภาพมากขึ้นในการประเมินผลลัพธ์ถ้าบางอินพุตมีการเปลี่ยนแปลง และการให้หมายถึงการปรับปรุงโครงสร้างข้อมูลนี้อย่างสมบูรณ์แบบเพื่อการเปลี่ยนแปลงที่เพิ่มขึ้นมันเป็นเรื่องยาก (สำหรับฉัน) ที่จะเข้าใจแนวคิดพื้นฐานและยิ่งกว่านั้นคือความสมบูรณ์ของมัน (เมื่อเทียบกับ Prolog? to CLP) น่าเสียดายที่มันยากที่จะหาแหล่งอ้างอิงที่ดีที่ดูอัลกอริธึม Rete ในบริบทที่กว้างขึ้นนี้

เอกสารของ Drools ไม่น่าเป็นไปได้มากนักในแง่นี้ สิ่งที่ฉันพบมากที่สุดคือ "อัลกอริทึม Rete, อัลกอริทึม Leaps และลูกหลานของมันเช่น Drools 'Reteoo (และ Leaps) ให้วิธีที่มีประสิทธิภาพมากในการจับคู่รูปแบบกฎกับข้อมูลออบเจ็กต์โดเมนของคุณ ไม่เปลี่ยนแปลงทั้งหมด (เนื่องจากกฎของเครื่องมือสามารถจดจำการแข่งขันที่ผ่านมาได้) อัลกอริธึมเหล่านี้พิสูจน์การต่อสู้แล้ว " มีประสิทธิภาพมาก - เทียบกับอะไร พิสูจน์แล้วจากการต่อสู้ - มีจุดหนึ่งที่แอปพลิเคชันโลกแห่งความจริงได้หรือไม่?

ฉันจะซาบซึ้งถ้ามีใครสามารถเพิ่มความสว่างให้กับเรื่องนี้หรือให้การอ้างอิงที่ถูกต้อง


1
คำถามนี้ค่อนข้างกว้างและไม่ได้ 'อยู่' ที่นี่จริงๆ ...

3
ฉันกลัวว่าสำหรับcstheory.stackexchange.comมันก็เป็น "อุตสาหกรรมที่มุ่งเน้น" .. สิ่งที่ฉันสนใจจริงๆคืออะไรจุดพื้นฐานเกี่ยวกับเอ็นจิ้นกฎเกณฑ์ทางธุรกิจและทำไมการใช้มันจึงเป็นประโยชน์มากกว่าการใช้ Prolog หรือ CLP หากคุณมีข้อเสนอแนะสำหรับสถานที่ที่ดีกว่าในการโพสต์มันฉันยินดีที่จะได้ยินมัน

คำตอบ:


7

ฉันคิดว่าข้อโต้แย้งสำหรับระบบกฎเกณฑ์ทางธุรกิจเชิงพาณิชย์จำนวนมากที่ใช้เอ็นจิ้นการโยงล่วงหน้า (เช่น Drools) กับการโยงย้อนกลับ (Prolog) คือ "โปรแกรมเมอร์โจ" หลายคนถูกใช้เพื่อจัดการกับตรรกะ IF / THEN / ELSE ง่ายต่อการตลาดเพื่อมวลชน ฉันไม่คิดว่าบุญทางเทคนิคเกี่ยวข้องกับมัน

ฉันโพสต์สิ่งนี้เป็นวิกิชุมชนเพราะเป็นความเห็นที่ค่อนข้างมีสีของฉันและไม่ใช่คำตอบที่แท้จริง


4

Drools เพิ่งเพิ่มการโยงย้อนหลังเข้ากับภาษา drl ได้อย่างลงตัว ดังนั้นตอนนี้คุณจะได้รับประโยชน์จากทั้งสองคำ

มันยังไม่ได้มีคุณสมบัติทั้งหมดของการเปิดฉากตัวอย่างเช่นไม่มีการ 'ตัด' แต่มันเป็นผลรวมและต้นไม้ต้นไม้ผลจะทำงานตามที่คนคาดหวังกล่าวคือการสนับสนุนอย่างเต็มที่สำหรับการปิดการขนส่ง และฟีเจอร์จะยังคงเติบโตเช่นการสนับสนุนการแท็บการตัดการรวมเข้าด้วยกันในนิพจน์

คุณสามารถใช้กฎ "เคียวรี" ย้อนกลับหรือย้อนกลับแยกกันหรือใช้ร่วมกัน โดยที่กฎการเกิดปฏิกิริยาสามารถเข้าร่วมกับผลลัพธ์ของแบบสอบถาม

สิ่งหนึ่งที่เราเพิ่มเข้าไปคือการสืบค้นของเราสามารถปรากฏให้เห็นอย่างเต็มที่ในรูปแบบของปฏิกิริยา ดังนั้นคุณสามารถเรียกคิวรีการปิด Transititve และมันจะยังคงเปิดอยู่ในลักษณะที่เป็นปฏิกิริยาและตอบสนองต่อการเปลี่ยนแปลงในข้อมูลภาคพื้นดินที่ต่ำกว่า - โดยไม่ต้องสำรวจแบบสอบถามอีกครั้ง

ดูส่วนใหม่ & สำคัญสำหรับการเพิ่ม "การโยงย้อนกลับ" เมื่อ: http://blog.athico.com/2012/05/drools-540final-released.html

ดังนั้นฉันคิดว่าคำถามของคุณจะพูดได้ดีขึ้นทำไมคุณถึงต้องการใช้สิ่งอื่นเมื่อคุณมีระบบการคิดเหตุผลแบบลูกผสมเช่น Drools? http://blog.athico.com/2012/05/drools-54-artificial-intelligence.html


3

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

การเปลี่ยนกฎระหว่างรันไทม์เป็นวิธีที่ใช้งานได้ง่ายในการใช้งานโปรแกรม Drools และรองรับ ฉันเชื่อว่าอารัมภบทอาจมีระบบที่คล้ายกัน แต่นี่ไม่มี AFAIK กฎเหล่านี้หรือกฎที่แก้ไขจะอยู่ที่ไหน ยืนยันใน db ของโปรแกรมหรือไม่ เมื่อรีสตาร์ทกฎเหล่านี้จะหายไป เราจะยืนยันพวกเขาไปยังฐานข้อมูลที่ใช้ร่วมกันแล้วยืนยันพวกเขาลงในโปรแกรมตามความจำเป็น? ภาษาอารัมภบทอาจใช้งานได้ แต่ Drools ได้รวมเข้ากับสแต็กแอปพลิเคชันระดับองค์กรอยู่แล้วเหตุใดจึงทำให้ตัวคุณบ้า (ยกเว้นความสนุก)


"ฉันเห็นด้วยกับคุณว่า Prolog มีประสิทธิภาพมากกว่า Drools แต่ฉันคิดว่า Drools ดึงดูดลูกค้าองค์กรเนื่องจากเครื่องมือและการผนวกรวมที่ยอดเยี่ยม Drools มีกับแอปพลิเคชันระดับองค์กรอื่น ๆ ที่เป็นที่นิยม"

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


2
@MarkProctor โดยทั่วไปสิ่งที่คัดค้านซึ่งตรงข้ามกับการแก้ไขโดยทั่วไปควรกระทำผ่านการแสดงความคิดเห็นและ (อาจ) downvoting ซึ่งตรงข้ามกับการแก้ไขเนื้อหาของคำตอบของคนอื่น
Charles Duffy

2

Drools เริ่มต้นโดยอยู่บนพื้นฐานของคลิป CLIPS เป็นระบบการผลิตที่เก่ากว่าและระบบการผลิตทั้งหมดเป็นระบบการส่งต่อ มีงานวิจัยมากมายเกี่ยวกับ Rete "มืดมน" เนื่องจากผู้ริเริ่มลงเอยด้วยการไปทำงานให้กับ บริษัท ที่มีทรัพย์สินทางปัญญา Rete เวอร์ชัน 3 นั้นเป็นของคนที่ทำคะแนน FICOดังนั้นใช่มันคือ "การพิสูจน์การต่อสู้"

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.