技术栈:.NET
问题陈述:应用程序有很多业务规则,现有规则的任何更改或新规则的添加都需要整个发布周期(修改代码,然后进行测试和部署)。
要求 [Hard pressed]:业务用户应该能够使用 GUI 动态指定业务规则
探索的选项:
- MS BRE,但与 Biztalk 捆绑在一起
.Net 堆栈开源业务规则引擎(如 SRE、Drools.NET、NxBRE)——其中大部分不活跃。
在数据库中添加规则并为用户提供一个 GUI 来添加/编辑相同的规则,尽管这看起来最有前途我不喜欢动态 sql,因为 sql 注入(inject)和可能的性能影响,更不用说缺少单元测试了覆盖范围和可预见的维护问题。
WF – 未探索但 AFAIK 没有运行时构建器。
购买商业规则引擎不是一种选择
要求是在线系统,欢迎任何建议。
最佳答案
我已经用特殊表(在 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 之前为当前用户生成具有来自 acces_to_tables 限制条件的数据库表的 TEMP VIEW。
TEMP VIEW 不是通常的解决方案,但工作速度非常快。
关于数据库驱动业务规则引擎,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40583908/