2008-09-15 27 views
6

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?

  1. là duy trì
  2. đúng cách cân bằng biểu cảm một cách dễ dàng sử dụng
  3. 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.

Trả lời

0

Một điều tôi đã tìm thấy là việc có thể để xác định quy tắc như cây biểu hiện làm cho thực hiện quá nhiều đơn giản hơn. Như bạn đã đề cập một cách chính xác, các yêu cầu từ dự án đến dự án rất khác nhau mà bạn chỉ phải thực hiện lại mỗi lần. Cây biểu hiện kết hợp với một cái gì đó giống như mô hình khách truy cập làm cho một khuôn khổ biểu cảm rất (không có ý định chơi chữ) có thể dễ dàng mở rộng. Và bạn có thể dễ dàng đặt một GUI rất năng động lên trên các cây biểu đạt đáp ứng khía cạnh đó của yêu cầu của bạn.

Hy vọng rằng điều này không có vẻ như tôi đang nói rằng tất cả mọi thứ trông giống như một móng tay với búa của tôi bởi vì đó không phải là trường hợp ... nó chỉ là trong kinh nghiệm của tôi, điều này đã có ích hơn một lần :-)

+0

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

0

Trước hết, thông thường, không nên để người dùng cuối xác định các quy tắc. Đó là bởi vì họ không có nền tảng phát triển và có thể chỉ cần viết "mã" mà đi vào vòng lặp vô hạn hoặc làm những điều kỳ lạ khác.

Vì vậy, hoặc hệ thống phải bảo vệ chống lại loại hành vi đó (do đó làm cho nó trở nên phức tạp hơn), chấp nhận khả năng đó hoặc không cho phép người dùng cuối thực hiện việc này.

Nếu bạn đang làm việc với .NET thì thật dễ dàng tạo DSL của riêng bạn bằng cách mở rộng trình biên dịch Boo (tức là với Rhino.DSL bạn có thể có DSL đơn giản với một lớp).

2

Chúng tôi đã có một bản giới thiệu trong nhà của công cụ này bởi nó là nhà cung cấp: http://www.rulearts.com/rulexpress.php

Là một công ty, chúng tôi có rất nhiều kinh nghiệm với các công cụ cai trị (ví dụ Cleverpath Aion), nhưng các công cụ chủ yếu phát triển theo định hướng. Công cụ này (rulexpress) là định hướng kinh doanh của mọi người. Nó không phải là một công cụ quy tắc. Nhưng nó có thể xuất tất cả dữ liệu trong xml (do đó về cơ bản bất kỳ định dạng nào bạn thích), và đây là thứ mà chúng tôi sẽ xem xét làm đầu vào cho một công cụ quy tắc thực, ví dụ: Windows Workflow Foundation (không phải là một trong những công cụ quy tắc lớn hơn/tốt hơn, nhưng vẫn còn).

Công cụ này trông khá tốt, một số thứ tôi chưa bao giờ thấy trong bất kỳ công cụ định hướng nhà phát triển nào.

Ngoài ra còn có một số công cụ để quản lý quy tắc được xây dựng xung quanh WF, nếu đó là công cụ quy tắc bạn chọn, hãy xem InRule.


Edited sau khi câu hỏi ban đầu đã được làm rõ: Mặc dù tôi đã dabbled trong này một thời gian dài trước (viết một chút ngôn ngữ trong javacc), tôi sẽ xem xét việc này một thời gian đầu tư xấu bây giờ. Nhận xét của tôi ở trên cùng tinh thần: lấy một công cụ quy tắc đơn giản, một giao diện người dùng đơn giản (thương mại) giúp người dùng doanh nghiệp dễ dàng duy trì và chỉ đầu tư thời gian để kết hợp cả hai.

Các vấn đề liên quan