问题标签 [business-rules]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
347 浏览

business-rules - 业务层如何解耦流程

我面临一个问题,对于某些业务流程,调用业务对象和方法的顺序可能会经常更改。所以我想出了类似于下面的东西:(对不起,我无法发布图片......,我试图在下面的文字中表达它们)

业务对象: Object1、Object2

方法: M1、M2、M3、M4

进程: P1 (M1 > M2 > M3), P2 (M2 > M3 > if M3 return true then M4 else end)

在这种情况下,我使用的是 .NET 3.5。我创建了一些类来表示进程,其中包含我提到的那些序列。有用。但问题是每次流程更改时我都需要编译。如果我可以通过某种 XML 配置它会更好。

我听说过 jBPM for Java、Workflow Foundation for .NET,但不确定它们是否符合我的需求,或者它们是否会矫枉过正。我什至不知道在 Google 中搜索什么关键字。谁能建议我应该使用什么技术来解决这个问题?或者只是指向我一些网站或书籍?提前致谢。

0 投票
4 回答
5064 浏览

c# - 动态业务规则

我正在创建一个界面,用户可以在其中在运行时从特定于域的对象构建自己的业务规则,将这些规则保存在数据库中,然后由应用程序使用。其中一些是复杂的谓词,而另一些则需要在看起来相当复杂的关系中组合域对象。到目前为止,我已经研究了 GoF、eval 的动态和 CodeDom。有人对应该使用什么有建议吗?

0 投票
2 回答
7296 浏览

c# - 使用自定义规则进行动态验证

我已经使用 .Net 语言 4 年了。我使用 WCF 开发 3 层和 5 层应用程序,用于 Web 应用程序的 ASP.NET 和用于 Windows 应用程序的 C#。每次我开始一个项目时,业务规则和验证都是一个问题。

我应该在哪里放置自定义验证规则(按钮单击事件、页面加载或在我的类中的 setter/getter 中)?

如果一个项目很大并且只有一个字段而不是 5 个字符应该是 7 个字符 - 为什么要重建整个项目(或业务类项目)?

我想如果我有一个包含自定义规则的文件,那么当需要更改时,我可以简单地在其中放置一个新规则。我在互联网上阅读了一些为此目的提供基于 XML 的文件的文章,但这似乎有问题,因为:

  • XML 文件中没有 Intellisense 和错误很难找到
  • 我们必须编写自定义 XML 解析器
  • 由于此方法需要多次转换,因此非常慢

我的问题:

是否有使用 .NET 方法(反射、表达式树、Lambda 表达式、动态、DLL 的运行时创建等)的设计模式或其他任何方法来使用自定义规则进行动态验证?


编辑 1)

属性呢?我们可以将它们与反射到自定义验证一起使用吗?我们可以使用这种方法根据另一个属性(例如 P1 应该是 P2+1)来验证一个属性吗?

0 投票
2 回答
240 浏览

regex - 正则表达式和非技术用户

鉴于:

  • 您有一些可以修改的键值数据
  • 通过对数据应用过滤器来完成修改。控制更改内容的过滤器由非技术人员创建
  • 过滤器是使用正则表达式设置的。描述为过滤器一部分的规则示例可能是“如果键与某个正则表达式匹配,则将值替换为其他值”

你会怎么做:

如果过滤器要由无法创建正则表达式的业务人员生成,您会让他们以什么形式提交可以轻松转换为正则表达式的输入?

0 投票
1 回答
396 浏览

business-rules - 实施企业级规则引擎时的前五个挑战是什么?

我已根据我的知识编制了列表,但希望使用此社区输入来丰富和优先考虑它。我知道拥有一个集中的规则存储库本身是有争议的,但我们可以有单独的问题。

  1. 业务用户使用平台编写规则的适应性[定义、分类、决定可能在规则存储库中运行的规则]
  2. 易于从不同应用程序调用和使用规则
  3. 规则可移植性- [RIF(规则交换格式)重要性?]
  4. 规则维护– BRMS [业务规则管理系统]
  5. 规则引擎性能- [多少、多快和多可靠]
0 投票
1 回答
853 浏览

drools - Drools 收集效率

我有 2 个相同类型的集合,集合中的每个对象都是 id 的键。我的目标是在两个集合中找到相同的对象,然后将一个字段相互比较。如果它们不是同一个字段,则存储差异。

我的问题是性能,对于每个规则,我都会重新扫描同一对象的集合。如果对象匹配然后运行所有字段验证而不是多次在集合中查找项目,有没有办法?

事实代码:

流口水代码:

0 投票
1 回答
69 浏览

c# - 尝试实现有问题的 DecimalAboveThresholdAttribute

我正在尝试实现类似于 IntegerAboveThresholdAttribute 的东西,除了它应该使用小数。

这是我将其用作 BusinessException 的实现

但是,我收到一条错误消息,指出属性必须是属性参数类型的常量表达式、typeof 表达式或数组创建表达式。我想知道是否有可能解决这个问题,如果没有,是否可以做类似的事情?

这是 DecimalAboveThresholdAttribute 的源代码:

}

我也想知道我是否也可以使用 DateTimes 来做到这一点。

0 投票
3 回答
740 浏览

c# - 寻找使用评估引擎构建“TestMaker”(问题和响应)应用程序的技巧

我正在做一个新项目。我最好的比喻是心理评估测试制造商。

方面#1。 最终业务用户需要创建测试问题。有问题类型。以及在适用时对问题的可能回答。

例子:

所以我需要能够创建问题,他们的问题类型,以及一些问题,可能的答案。

这里:

数字 1 是“真或假”的已知类型。

数字 2 是“单选/多选”的已知类型,最终业务用户将创建可能的响应。

数字 3 是一种已知类型的“整数”。最终用户(进行评估的人)基本上可以输入任何整数值。

数字 4 是一种已知类型的“十进制”。与整数相同。

方面#2。 最终业务用户需要评估此人的反应。并为一组响应分配一些标量值。

例子:

如果有人回应:

一些精神科专家发现,如果有人回答上述问题,那么你患抑郁症的风险比正常人高 85%。(其中 85% 是最终业务用户(精神病医生)可以作为参数输入的数字。

因此,方面#2 是通过某人的反应,并确定结果。

必须设置“响应网格”,以便它按优先级排序顺序通过(部分或全部)可能性,然后在满足所有条件后(在单行上),以结果退出。

像这样:

找到匹配项后,您将退出百分比。如果找不到匹配项,则转到下一条规则。

此外,使用这个心理评估模拟示例运行,我不需要定义每个排列。很多心理评估问题并没有实际使用,它们只是“绒毛”。所以在我上面的网格中,我故意省略了问题#4。它与结果无关。

也可以是“这个人有没有认真对待这件事?” 评估网格:

(鞋码 >= 20 并且口袋里有大笔钱的可能性非常低,因此您可能没有认真对待心理测试。)

如果没有找到规则(在我的真实应用程序中,而不是这个模型中),我会抛出异常或者只是不在乎。我不需要默认或失败规则。在上面,红色和黄色是“令人担忧”的最喜欢的颜色。如果您最喜欢的颜色是黑色或白色,那么它与您的抑郁风险因素无关。

我过去使用过业务规则引擎。(例如 InRule)。它们非常昂贵,而且不在预算之内。

BizTalk 业务规则框架是一种可能。不是可取的,但可能的。

我对任何规则引擎的问题是“词汇”(我对业务规则引擎的经验有限,请注意)是基于对象的,具有静态属性。

这将很容易创建业务规则。

但在我的情况下,测试由(动态)问题和(动态)响应组成,而不是预先确定的属性。

所以我想我正在寻找一些想法来调查如何解决这个问题。

我知道我可以相当快地构建一个“TestMaker”应用程序。

最大的问题是将问题和(可能的响应)整合到“评估规则”中。

感谢您的任何提示。

技术:DotNet 4.0 Framework Sql Server 2008 后端数据库 VS2010 Pro, C#

0 投票
2 回答
1339 浏览

java - 我可以创建一个从另一个规则文件导入规则的规则文件吗?

我如何(并且可以)将 Drools 规则或函数导入另一个 Drools 规则文件?

0 投票
1 回答
1045 浏览

drools - 如何在地图中的 Drools 规则之间共享数据?

我有一个规则,它接受Map()事实,然后为这张地图设置很多元素。在执行其他规则时,我希望能够在其他地方使用此地图。我在 Drools 中读到了全局变量,但似乎它们不应该用于此目的。现在我将此映射作为私有属性保存在 Java 类中,以便它可以将所有数据保存在 Web 应用程序上下文中,但这会增加我的内存占用。我知道这听起来可能很奇怪,但是 Drools 规则中是否有任何与 Java 静态字段的类比?

提前致谢!