问题标签 [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.
nhibernate - 我应该使用 NHibernate 映射哪些类?
目前,我们使用 NHibernate 将业务对象映射到数据库表。所述业务对象执行业务规则:如果违反该属性的合同,集合访问器将当场抛出异常。此外,属性强制与其他对象的关系(有时是双向的!)。好吧,每当 NHibernate 从数据库加载对象时(例如,当调用 ISession.Get(id) 时),映射属性的 set 访问器用于将数据放入对象中。
好处是应用程序的中间层强制执行业务逻辑。不好的是数据库没有。有时垃圾会进入数据库。如果垃圾被加载到应用程序中,它就会退出(抛出异常)。有时它显然应该放弃,因为它不能做任何事情,但如果它可以继续工作呢?例如,收集实时报告的管理工具运行不必要的失败风险很高,而不是允许管理员甚至修复(潜在的)问题。
我现在没有一个例子,但在某些情况下,让 NHibernate 使用也强制关系(尤其是双向)的“前门”属性会导致错误。
什么是最好的解决方案?
目前,我将在每个属性的基础上为 NHibernate 创建一个“后门”:
我在 C# 2 中展示了上面的内容(没有默认属性)来演示这如何让我们基本上得到 3 层或视图,等等!虽然这确实有效,但它似乎并不理想,因为它需要 BL 为大型应用程序提供一个(公共)接口,并为数据访问层提供另一个(受保护)接口。
还有一个额外的问题:据我所知,NHibernate 并没有给你一种方法来区分 BL 中的属性名称和实体模型中的属性名称(即查询时使用的名称,例如 via HQL——只要你给 NHibernate 一个属性的名称(字符串)。这成为一个问题,起初,某些属性 Blah 的 BR 没有问题,因此您在 O/R 映射中引用它......但后来,您必须添加一些确实成为问题的 BR,所以那么您必须更改您的 O/R 映射以使用新的 _Blah 属性,该属性会破坏所有使用“Blah”的现有查询(针对字符串进行编程的常见问题)。
有没有人解决过这些问题?!
sql-server - 使用 SQL SERVER 构建业务规则引擎
我需要构建一个业务规则引擎。我使用的是 SQL SERVER 2005。业务规则非常庞大,比如 2000 页。
例如。
等等等等
所以,我认为我们不能只在程序中的 if else 条件中编写所有这些规则。所以,也许我可以创建一个决策表并将该表上的所有条件作为记录。但我不知道该怎么做。
任何人都有任何想法,怎么做?
谢谢
java - 需要基于 Java 的工作流引擎
我正在寻找一个基于 Java 的工作流引擎,它足够强大,可以拥有大部分工作流功能,但实现起来很简单。
诸如根据有权批准状态的人的批准从一种状态转换到另一种状态的功能,如果所有必需的字段/数据都可用,则转换也可以是自动的,单人或多人批准状态,可视化编辑器创建工作流,只有在某些字段具有特定值(如规则)时才会发生转换,向批准者发送通知,一旦获得批准,就会向观察状态的人发送通知。
oracle - 在 Oracle 中执行业务规则
我有一张叫书的桌子。该表有 3 列,即 id、价格和折扣。如果价格大于 200,则折扣应为 20%。在 Book 表中插入数据时,应根据价格值更新折扣值。在 Book 表中插入或更新数据时如何处理?
请提供所有可能的解决方案。我不想执行存储过程。让我们假设当用户在 Book 表中插入/更新数据时,他不执行函数或过程。
请提供解决方案。
drools - 流口水 drl 如何不条件
我正在尝试用 drools drl 语言编写一条规则,我想做类似 !(A && B) 但它似乎不喜欢 ! 运算符或单词不。我正在努力寻找关于流口水的好文档
请看下面的示例代码:
我将不胜感激任何人都不能给我的帮助
提前致谢
agile - 业务规则集成到用户故事
我有一组用户故事和一组业务规则(主要是约束我的合规要求的法律)。在敏捷 SDLC 中,我不确定这些“规则”在我的用户故事中的位置。
例如,像这样的用户故事:
作为一名医生,我想添加患者信息以创建新的患者文件。
和这样的规则:
必须在每位患者的记录中输入以下信息: (a) 患者: (i) 姓名和名字;(ii) 地址;(iii) 出生日期;(iv) 性别;
这两个显然结合在一起,但我怎样才能将它们联系起来呢?作为我的用户故事中的测试验收定义?另一个用户故事?
sql - 如何将存储在表中的 SQL 语句用作另一个语句的一部分?
在我们的 Oracle 数据库中,我们有一个名为 RULES 的表,其中包含一个名为 SQLQUERY 的字段。该字段是一个存储了 SQL 语句的 varchar。PK 是 DM_PROJECT。
存储的典型语句可能是
我想做这样的事情:
这可以做到吗?
(第二个问题:如果存储的查询使用自己的变量,是否可以做到,比如
)
model-view-controller - 在哪里存储值以传输到业务层?
想象一个具有许多属性的假设对象:
伪代码:
现在用户输入值,对象获取它们:
姓名:Shelby Lake
出生日期:6/19/1991
身高:63
GPA:5.6
公民身份:United States
具有所有业务逻辑的层可以验证它:
例如,在这个例子中,它可以抛出一个异常:
好的。但并非用户输入的所有内容都可以“放入”对象中:
姓名:Shelby Lake
出生日期:19 years ago
身高:5'3
GPA:n/a
公民身份:n/a
事实上,我们的用户可以在商业决策中输入更友好的值。同时有全局业务规则决定某些输入何时有效,例如
GPA:(5.6
无效)
GPA:(n/a
有效)
公民身份:(n/a
有效)
公民身份:( 无效)
身高:(tall
无效)
身高:(5'3
有效)
我的问题是,我在哪里存储这些string
值,因为我不能将它们纯粹存储在对象中。他们需要进入业务层,该层知道如何将输入的文本解析为值。
我的第一个想法是改变班级:
这允许将更任意的值发送到业务层:
姓名:出生Shelby Lake
日期自由形式:19 years ago
身高自由形式:5'3
GPA:4.6 公民身份:n/a
业务层可以将自由格式的值转换为规范值,报告任何错误:
但这似乎是一个丑陋的答案,我什至不想考虑。
用业务规则解析用户输入的企业方法是什么?
c++ - 基于规则的设计
我会定期阅读一些离散状态,并将一些规则应用于状态差异我会报告一些错误。规则可以及时更改。
解决此类问题的最佳实践是什么?
谢谢。
validation - 如何以及何时应用业务规则?
假设我有一个服务StateService,它有一个方法ChangeState。
我有业务规则来检查目标状态在域对象当前“状态”中是否有效,我如何在不首先在域对象上设置 toState 的情况下从技术上检查这些规则?首先设置新状态,运行验证,如果一个或多个规则破坏取消设置状态,感觉是错误的。
我想出的一种解决方案是创建一些驱动验证的上下文对象,例如。 ChangeStateContext包含 DomainObject 以及要设置的状态。
另一个相关问题是如何从 ChageState 电话中报告进展情况?
我可以收集所有破坏并抛出异常的验证规则,调用者可以相应地捕获和处理这些规则,或者我可以在 ChangeState 方法上添加返回类型,例如ValidationSummary,其中包含有关破坏规则等的信息。在这些情况下,最佳做法是什么?