问题标签 [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 投票
2 回答
6579 浏览

java - Drools - 在规则条件或结果中做复杂的事情

在我的公司,我们计划在几个项目中使用 Drools 和 BRE。现在我们试图定义一些最佳实践。

我的问题是在规则条件/结果中应该做什么和不应该做什么。鉴于我们可以直接编写 Java 或调用方法(例如 From a Global object in the Working Memory)。

例子。给定一个评估通用对象(例如人)的规则,将属性设置为 true。现在,只能为进入数据库并获取该信息的对象定义该特定属性。所以我们有两种实现方式:

备选方案 A:

  • 转到数据库并获取对象属性(真/假,代码)
  • 将对象插入工作内存
  • 评估规则

备选方案 B:

  • 插入具有连接到数据库的方法的全局对象并检查给定对象的属性。
  • 将对象插入到工作内存中进行评估
  • 在规则中,调用全局对象并执行对数据库的访问

其中哪个被认为更好?我真的很喜欢 A,但有时 B 更直接,但是如果引发数据库中的异常之类的会发生什么?

我已经在 Packt Publishing 的 Drools 5.0 书中看到了替代 B 的实现,但是他们只是在模拟,他们根本没有谈论访问数据库的实际含义。

谢谢,

0 投票
1 回答
479 浏览

asp.net-mvc - 对于 MVC 应用程序,我的业务规则验证是否应该在视图模型和/或控制器中复制?

我的 MVC 应用程序有一个定义良好的域模型,每个模型都执行自己的业务规则检查。

我的问题是业务规则是否也应该在视图模型或控制器中复制,还是应该只允许模型生成验证错误?

让我们假设我们正在讨论的验证不能在客户端完成,并且比可以通过向视图模型属性添加验证属性来完成的简单字段验证更复杂。

允许模型处理所有验证的问题在于,它生成的错误消息可能不适合与其耦合的特定视图,例如,字段名称可能不正确。此外,我需要使用视图模型属性名称而不是域模型中的属性名称将错误添加到 ModelState。

向视图模型/控制器添加相同的业务规则验证的问题是明显的重复维护问题,这意味着我的域模型中的验证真的不应该产生任何错误,这使得它有点毫无意义。

人们通常如何处理这个问题?

0 投票
1 回答
168 浏览

ruby-on-rails - 邮件过滤器,例如 Ruby on Rails 中的功能

对于我的新项目,我需要一个像邮件过滤器这样的功能。将有一组具有相关操作的规则。当用户提交请求时,需要通过这些规则进行验证。如果这些规则中的任何一个匹配,则应触发相应的操作(或者,应使用更多属性更新模型)。就像邮件过滤器一样。

而且,这些规则将是用户特定的并存储为 ActiveRecord 模型。

现有宝石的任何指针?!

我的 ROR 版本是 2.3.8

0 投票
10 回答
153024 浏览

design-patterns - MVC 中的业务逻辑

我有两个问题:

Q1。“业务逻辑”到底在 MVC 模式中的什么位置?我对模型和控制器感到困惑。

Q2。“业务逻辑”和“业务规则”一样吗?如果不是,有什么区别?

如果你能用一个小例子来解释,那就太好了。

0 投票
2 回答
585 浏览

java - 按项目在 XML 文件中的顺序对 Java 列表/地图进行排序

我要做的是按照项目在 XML 文件中的顺序对 Java List 或 Map 进行排序。

例如

我有一个函数名称列表,如下所示:

  1. 功能一
  2. 功能三
  3. 功能二

XML 文件如下所示:

所以我想对列表进行排序,以便函数名称如下:

  1. 功能一
  2. 功能二
  3. 功能三

现在我也尝试对变量执行此操作,因此大约有 500 多个独特的“项目”。

有谁知道我该怎么做?现在对于确定排序顺序的文件不必是 XML,它只是我最常使用的文件,它可以是任何可以完成工作的文件。

在此先感谢您的时间。

0 投票
1 回答
649 浏览

ruby-on-rails - 如何在 Rails 中实现业务规则?

我有一组需要强制执行的业务规则,例如:

  1. 如果 current_user 不是“admin”,则不允许并给出消息“restricted access”
  2. 如果问题已被回答,则不允许另一个答案并给出消息“问题已被回答”

现在,所有这些基本上都是:“如果 X 为假,则 Y 消息”。

所以,我做了这个方法:

应该这样称呼:

但是,我得到syntax error, unexpected tASSOC (SyntaxError)(1==1)(1==2)散列键的错误。

如何将真/假值放入哈希键中?

另外,我不禁想到以前有人可能已经解决了这个“规则”问题,有什么线索吗?

更新

固定的。有时 Ruby 让我感到沮丧。调用应该是这样的:

看起来有点难看但有效

0 投票
1 回答
144 浏览

frameworks - 业务规则引擎 - 离散选择建模

问候,

我目前正在寻找一个可用于开发系统的框架,该系统将根据用户提供的一系列响应以封闭式调查格式找到最佳选择。

我们公司提供多种服务计划,该系统背后的理念是用户可以回答问题(文本格式),这些答案可以映射到最符合客户需求的服务计划。每个服务计划都有几个属性,这些属性会随着时间而变化,因此我们正在寻找一种灵活的解决方案。

业务规则引擎会是解决此类问题的适当框架吗?

谢谢你!

0 投票
1 回答
876 浏览

biztalk - 可以在规则/策略的条件中使用自定义类吗?

我是第一次开始使用 Biztalk 2010。

我查看了这篇文章 ( http://www.codeproject.com/KB/biztalk/BRE.aspx ) 以针对条件触发自定义操作,但似乎在操作中使用了属性,而不是条件。动作可以引用接受非原始类型作为参数(例如自定义类等)的 .NET 方法吗?

0 投票
1 回答
896 浏览

dynamic - 开发人员如何让业务用户定义应用程序逻辑?

我正在开发一个新的工作应用程序,一位经理正在推动业务规则管理系统 (BRMS) 和工作流管理系统的概念,我正在尝试找出集成这些类型的最佳方法工具。

关于这些类型的系统,我不知道我不知道什么,所以我正在尝试获取其他的观点和信息。

经理正在寻找的是业务用户无需开发人员时间(或最少的开发人员时间)即可更改业务规则或流程的能力。

当我考虑如何将 BRMS 融入代码时,我更容易理解它。这非常简单,我可以看到逻辑如何完全驻留在应用程序之外。由于我对这些类型的系统没有做太多工作,因此我将不胜感激有关与 .NET 集成的优质产品的任何信息,或有关体验的信息。(我们正在研究 InRule、Blaze Advisor 和 ILOG 规则)

我不太确定的是工作流程部分。

Workflow Foundation 对我来说很有意义,因为它是一个已知的、已定义的工作流,它集成到应用程序代码中,但经理并不是在寻找一个基础,他想要一个让业务用户定义和更新工作流的工具。任何允许最终用户动态创建工作流的系统对我来说都没有多大意义。

我被要求将WorkflowGen视为工作流引擎的一个示例。对我来说,它看起来像是完全独立的,除非开发人员编写 .NET 代码来与后端系统交互。

我可以理解一个允许用户定义特定的、有限的操作的工作流系统,例如“给某某发送电子邮件”和“要求某某批准”,但我不知道应该如何动态定义应用程序的工作流系统flow 可以集成到应用程序中,甚至我刚刚描述的更简单的系统可以如何显示和更新后端数据。

我正在推动用例,以便我可以更好地了解我的经理在将这些类型的逻辑移到应用程序代码之外寻找什么,但与此同时,我很感激任何人在这些类型的系统上提供的任何信息。正如我所说,我不知道我不知道什么,我们的业务用户似乎认为我们的新应用程序应该支持这些类型的工具。我想确保由于我缺乏知识而限制了我们的功能。

感谢您提供任何信息或建议。

0 投票
1 回答
658 浏览

asp.net-mvc - 用户输入验证和业务对象验证混淆

我正试图将注意力集中在验证用户输入和验证业务对象上。假设我正在使用 Customer 对象。它具有以下属性:CustomerId、FirstName 和 LastName。FirstName 和 LastName 为必填项,长度不能超过 50 个字符。

我正在使用 ASP.NET MVC 3。我也在试验 Fluent Validation(但不必是这个验证框架)。

当我在 Create customer 视图中时,我将视图传递给 CustomerViewModel:

在 CustomerViewModelValidator 中,我如上所述设置了验证所需的规则。这一切都在视图上验证得很好。现在我有一个问题。在我的应用程序中,我有一个服务层,在这里我想应用所有应用程序逻辑。假设我想保存一个新客户,那么我将在 CustomerService 中有一个 Save customer 方法,它调用 CustomerRepository 的 Save 方法。

我可能有另一个应用程序(上述 Web 应用程序除外)将使用我的服务层。所以这意味着如果创建了一个客户对象,我将不得不验证一个客户对象。出现以下问题:

  • 我是否还需要验证 CustomerService 中的 Customer 对象以检查 FirstName 和 LastName?
  • 创建一个新的验证器类来验证 Customer 类会更好吗?还是我应该分享它?
  • 我还需要验证 CustomerId 吗?我的意思是它应该大于零,但是我将如何验证 ID 为 0 的新客户?

如果有人可以对此分享一些见解/文章,将不胜感激。

我也想添加一些业务规则,这会在哪里?我在哪里以及如何实施业务规则?