การประเมินโค้ดแบบไดนามิกใน Java - เคลฟเวอร์หรือเลอะเทอะ?
ฉันกำลังพยายามสร้างเฟรมเวิร์ก ACL ที่ยืดหยุ่นใน Java สำหรับแอปพลิเคชันของฉัน กรอบ ACL หลายคนที่ถูกสร้างขึ้นในรายการที่อนุญาตของกฎที่กฎอยู่ในรูปแบบของการใช้: การกระทำ: ทรัพยากร ตัวอย่างเช่น, "JOHN สามารถดูทรัพยากร FOOBAR-1" "MARY สามารถดูทรัพยากร FOOBAR-1" "MARY สามารถแก้ไขทรัพยากร FOOBAR-1" สิ่งนี้เป็นสิ่งที่น่าสนใจเนื่องจากกฎสามารถทำให้เป็นอนุกรม / คงอยู่กับฐานข้อมูลได้อย่างง่ายดาย แต่แอปพลิเคชันของฉันมีตรรกะทางธุรกิจที่ซับซ้อน ตัวอย่างเช่น, "ผู้ใช้ทุกคนในแผนก 1 ที่มีอาวุโสกว่า 5 ปีสามารถดูทรัพยากร FOOBAR-1 ไม่ได้รับอนุญาต" "ผู้ใช้ทุกคนในแผนก 2 หากวันที่หลังวันที่ 15/15/2016 สามารถดูทรัพยากร FOOBAR-2 ไม่ได้รับอนุญาต" เมื่อคิดเป็นครั้งแรกมันจะเป็นฝันร้ายที่จะสร้างโครงสร้างของฐานข้อมูลที่สามารถจัดการกับกฎที่ซับซ้อนเช่นนี้ ดังนั้นดูเหมือนว่าฉันจะต้อง "อบ" พวกเขาลงในใบสมัครที่รวบรวมการประเมินพวกเขาสำหรับผู้ใช้แต่ละคนและจากนั้นผลิตเจ้าของ: การกระทำ:กฎทรัพยากรเป็นผลมาจากการประเมินผล ฉันต้องการหลีกเลี่ยงการอบตรรกะในแอปพลิเคชันที่รวบรวม ดังนั้นฉันคิดของการเป็นตัวแทนของการปกครองในรูปแบบของคำกริยา : การกระทำ: ทรัพยากรที่สรุปคือการแสดงออกบูลที่กำหนดว่าผู้ใช้ที่ได้รับอนุญาต เพรดิเคตจะเป็นสตริงของนิพจน์ …