Tôi thường cần triển khai một số loại hệ thống quy tắc có thể chỉnh sửa được người dùng - các yêu cầu thường đủ khác để hệ thống tương tự không thể áp dụng trực tiếp, vì vậy tôi thường gặp phải vấn đề tương tự - cách thiết kế hệ thống quy tắcTham khảo/mẹo tốt để thiết kế hệ thống quy tắc?
- là duy trì
- đúng cách cân bằng biểu cảm một cách dễ dàng sử dụng
- có thể dễ dàng mở rộng (nếu/khi tôi nhận được (2) sai).
Tôi nghĩ Hệ thống quy tắc/DSL là cực kỳ có giá trị, nhưng tôi không cảm thấy thoải mái với khả năng thiết kế chúng đúng cách.
Bạn cần cung cấp thông tin/mẹo nào để giúp việc này dễ dàng hơn?
Do tính chất của các vấn đề mà tôi gặp phải, các ngôn ngữ hiện có thường không áp dụng được. (Ví dụ, bạn sẽ không phải yêu cầu người dùng máy tính nói chung phải học python để viết bộ lọc email.) Tương tự, quy tắc ngôn ngữ, chẳng hạn như JESS, chỉ là một phần giải pháp, vì một số giao diện người dùng (đơn giản) hơn cần được xây dựng trên đầu trang của ngôn ngữ quy tắc để những người không lập trình có thể tận dụng nó. Giao diện này lúc nào cũng liên quan đến việc xóa một số tính năng hoặc làm cho các tính năng đó khó sử dụng hơn và rằng process đặt ra cùng các vấn đề được mô tả ở trên.
Chỉnh sửa: Để làm rõ, câu hỏi là về thiết kế một công cụ quy tắc, tôi không tìm kiếm một công cụ quy tắc dựng sẵn. Nếu bạn đề xuất một công cụ quy tắc, vui lòng giải thích cách nó giải quyết câu hỏi về việc đưa ra quyết định thiết kế tốt.
Tôi không chắc mình hiểu khả năng áp dụng của cây biểu thức. Bạn có đề xuất chúng như một khía cạnh của trình thông dịch ngôn ngữ quy tắc hay bạn sử dụng chúng để thể hiện các tùy chọn cho từng quy tắc? Tôi có chút bối rối. – rcreswick