技术堆栈:.NET
问题陈述:应用程序有许多业务规则,现有规则的任何更改或新规则的添加都需要整个发布周期(对代码进行修改,然后进行测试和部署)。
要求[硬按]:业务用户应该能够使用GUI动态指定业务规则
探索了选项:
.Net堆栈开源业务规则引擎(如SRE,Drools.NET,NxBRE) - 大多数都不活跃。
在数据库中添加规则并为用户提供添加/编辑相同的GUI,虽然这似乎最有希望我不是动态sql的粉丝,因为sql注入的原因和可能的性能影响更不用说缺乏单元测试覆盖范围和可预见的维护问题。
WF - 没有探索,但AFAIK没有运行时构建器。
购买商业规则引擎不是一种选择
要求是在线系统,欢迎任何建议。
答案 0 :(得分:0)
我已经使用特殊表(在Postgres中)尝试了业务规则
CREATE TABLE acces_to_tables
(
rule_name name,
table_name name,
field_name name,
field_acc_value integer,
is_write boolean
)
和通用功能:
create_access_temp_view(table_name name, in_write_access boolean)
在调用SELECT,INSERT,UPDATE或DELETE之前,为当前用户生成TEMP VIEW到数据库表,其中包含来自acces_to_tables的限制条件。
TEMP VIEW不是一种常用的解决方案,但工作速度非常快。