问题标签 [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.
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 中搜索什么关键字。谁能建议我应该使用什么技术来解决这个问题?或者只是指向我一些网站或书籍?提前致谢。
c# - 动态业务规则
我正在创建一个界面,用户可以在其中在运行时从特定于域的对象构建自己的业务规则,将这些规则保存在数据库中,然后由应用程序使用。其中一些是复杂的谓词,而另一些则需要在看起来相当复杂的关系中组合域对象。到目前为止,我已经研究了 GoF、eval 的动态和 CodeDom。有人对应该使用什么有建议吗?
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)来验证一个属性吗?
regex - 正则表达式和非技术用户
鉴于:
- 您有一些可以修改的键值数据
- 通过对数据应用过滤器来完成修改。控制更改内容的过滤器由非技术人员创建
- 过滤器是使用正则表达式设置的。描述为过滤器一部分的规则示例可能是“如果键与某个正则表达式匹配,则将值替换为其他值”
你会怎么做:
如果过滤器要由无法创建正则表达式的业务人员生成,您会让他们以什么形式提交可以轻松转换为正则表达式的输入?
business-rules - 实施企业级规则引擎时的前五个挑战是什么?
我已根据我的知识编制了列表,但希望使用此社区输入来丰富和优先考虑它。我知道拥有一个集中的规则存储库本身是有争议的,但我们可以有单独的问题。
- 业务用户使用平台编写规则的适应性[定义、分类、决定可能在规则存储库中运行的规则]
- 易于从不同应用程序调用和使用规则
- 规则可移植性- [RIF(规则交换格式)重要性?]
- 规则维护– BRMS [业务规则管理系统]
- 规则引擎性能- [多少、多快和多可靠]
drools - Drools 收集效率
我有 2 个相同类型的集合,集合中的每个对象都是 id 的键。我的目标是在两个集合中找到相同的对象,然后将一个字段相互比较。如果它们不是同一个字段,则存储差异。
我的问题是性能,对于每个规则,我都会重新扫描同一对象的集合。如果对象匹配然后运行所有字段验证而不是多次在集合中查找项目,有没有办法?
事实代码:
流口水代码:
c# - 尝试实现有问题的 DecimalAboveThresholdAttribute
我正在尝试实现类似于 IntegerAboveThresholdAttribute 的东西,除了它应该使用小数。
这是我将其用作 BusinessException 的实现
但是,我收到一条错误消息,指出属性必须是属性参数类型的常量表达式、typeof 表达式或数组创建表达式。我想知道是否有可能解决这个问题,如果没有,是否可以做类似的事情?
这是 DecimalAboveThresholdAttribute 的源代码:
}
我也想知道我是否也可以使用 DateTimes 来做到这一点。
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#
java - 我可以创建一个从另一个规则文件导入规则的规则文件吗?
我如何(并且可以)将 Drools 规则或函数导入另一个 Drools 规则文件?
drools - 如何在地图中的 Drools 规则之间共享数据?
我有一个规则,它接受Map()
事实,然后为这张地图设置很多元素。在执行其他规则时,我希望能够在其他地方使用此地图。我在 Drools 中读到了全局变量,但似乎它们不应该用于此目的。现在我将此映射作为私有属性保存在 Java 类中,以便它可以将所有数据保存在 Web 应用程序上下文中,但这会增加我的内存占用。我知道这听起来可能很奇怪,但是 Drools 规则中是否有任何与 Java 静态字段的类比?
提前致谢!