问题标签 [business-logic]

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 回答
442 浏览

business-logic - 作为 BA 学习 JD Edwards 工具

如果有人帮助我,那就太好了。我是 BA/BPM。我有商业知识,但没有通用编程语言的编码经验。为了我的利益和轻松,我通常会了解公司使用的基本技术,例如 DB2、Oracle 等。我的公司正在计划与 JD Edwards 合作,但我没有为此工作,但有兴趣学习。我没有接触过它。

解决此问题的最佳方法是什么。我在 Oracle 网站上看过几个版本。- 至于我可以下载哪个版本来熟悉它(较低的更好学习,但如果结构有重大变化或我需要记住的东西)。- 作为初学者,这将是一本好书/文档。最终用户和业务端。- 谁是最好的方法例如。对于 cognos,我安装了单机,在数据库中创建了一个表格,直到我发布报告以了解事情是如何工作的。一旦我有了概览,业务/逻辑是我工作的主要内容,所以这是我大部分时间都在玩的地方。

我知道这很长,但是指向正确方向的指针就足够了。

0 投票
1 回答
259 浏览

.net - 在 LINQ 中实现与子集合相关的业务规则的最优雅方法是什么?

我的数据库中有两个表:

这些表具有一对多(WikiUser)的关系。

我将如何在我的 LINQ 实体类中实现以下业务规则:

“一个 Wiki 必须只有一个所有者?”

我尝试如下更新表格:

这会强制执行约束,但如果我从 Wiki 的 WikiUser 集合中删除所有者的 WikiUser 记录,我会收到一个丑陋的 SqlException。这似乎很难在 UI 中捕获和处理。

有没有办法在生成 SqlException 之前执行此检查?构建数据库的更好方法?一种捕获 SqlException 并将其转换为更有用的方法的方法?

编辑:如果可能,我希望将验证规则保留在 LINQ 实体类中。

编辑2:关于我的具体情况的更多细节。

在我的应用程序中,用户应该能够从 Wiki 中删除用户。他们应该能够删除任何用户,除了当前被标记为 Wiki 的“所有者”的用户(一个 Wiki 必须始终只有一个所有者)。

在我的控制逻辑中,我想使用这样的东西:

并将任何违反的规则转移到 UI 层。

我不想做的是:

我也不是特别想将代码移动到我的存储库(因为没有任何指示不使用本机 Remove 函数),所以我也不想要这样的代码:

这是可以接受的:

但这会捕获太多错误:

我也不想明确调用业务规则检查(尽管它可能变得必要):

0 投票
5 回答
689 浏览

c# - 业务对象中的 ID 是否应该是只读的?

在我看来,业务对象的 ID 字段应该是只读的(公共获取和私有集),因为根据定义,ID 永远不会改变(因为它唯一地标识了数据库中的一条记录)。

当您创建一个新对象(尚未设置 ID)时,这会产生一个问题,例如通过一个存储过程将其保存在数据库中,该过程返回新创建的 ID,那么如果读取了 ID 属性,您如何将其存储回对象中-只要?

例子:

如果该属性是只读的,Save 方法(实际上连接到数据库以保存新员工)如何更新 Employee 对象中的 EmployeeId 属性(这应该是因为一旦创建,EmployeeId 就永远不会改变)。

看起来 Id 应该可以由 DAL 写入,并且对于世界其他地方是只读的。如果 DAL 类和业务对象类位于不同的程序集中,您将如何实现这一点?

我不想在 Employee 类中创建 Save 方法,因为这个类应该与数据库无关。

0 投票
4 回答
2381 浏览

asp.net-mvc - 如何在 ASP.NET MVC 和实体框架中扩展模型?

在我的第一个 ASP.NET MVC 应用程序中,模型是表和类之间的简单 O/R 映射,由实体框架管理。

现在我想给这个骨架加点肉,并为生成的类介绍业务方法。在 ASP.NET MVC(使用实体框架)中推荐的方法是什么?我最喜欢的是也可以在服务层中使用的解决方案,没有 ASP.NET MVC 引用,因此相同的域逻辑也可以在桌面客户端中重用。

从技术上讲,我认为即使需要刷新 O/R 类,也应该可以以保留额外业务逻辑的方式扩展生成的类。(然而,这更像是一个与实体框架相关的问题。)

编辑:非常感谢您的贡献,以及有关下一版本实体框架(4.0)的信息。构建两组类,一组是自动生成的,用于表示持久层中的数据,另一组用于实际的业务逻辑,这听起来很有趣。

0 投票
5 回答
428 浏览

sms - SMS - 如何避免破产?

我正在编写一个需要用户输入他们的手机号码的新网站,我面临的问题是我需要确保用户实际上是所有者(或者在这种情况下,可以访问)手机号码。

我想出的解决方案是,在提交号码后,我向他们发送带有令牌的短信,并要求用户在我的网站上输入令牌,就像谷歌日历一样。但是我的预算很有限,我需要确保用户 A 不会提交 100,000 个手机号码,如果发生这种情况,我很快就会停业,因为每发送一条 SMS 都要花费我大约 0.10 美元。

到目前为止,我提出了以下解决方案:

  • 使用验证码(让一些用户远离,并且仍然容易受到手动注册的影响)
  • 限制给定 IP 地址请求的令牌数量(动态 IP、代理等)
  • 限制为给定手机号码发送的令牌数量(用户可以为所有可用号码请求令牌,当真实用户尝试请求合法令牌时,他的号码将被阻止)

这些解决方案都不是完美的,你建议我如何解决这个问题?

0 投票
5 回答
13686 浏览

javascript - 根据用户选择启用和禁用单选按钮

我正在寻找编写 jQuery 来仅启用单选按钮,具体取决于当前根据某些业务逻辑选择了哪些单选按钮。

基本上有 3 组 3 个单选按钮,最终看起来像(我很抱歉这个示例 HTML 很冗长,但希望这能说明我的意思):

棘手的地方在于确定显示哪些单选按钮以及启用哪些单选按钮所需的逻辑。用户必须从每个组中选择一个选项,但不能从一个组到另一个组重复相同的选择。

理想情况下,当用户访问该页面时,所有单选按钮都可用但未选中。

如果用户首先选择(例如)第三组中的选项二,则脚本应禁用第一组和第二组中的选项二。如果用户随后选择了第二组中的选项三,那么它应该只启用第一组中的选项一,依此类推。

任何帮助将非常非常感谢。我会发布我一直在尝试编写的 jQuery 来解决这个问题,但我认为我一直没有很好地解决这个问题,并且希望得到任何帮助来解决这个问题。谢谢!

0 投票
3 回答
1577 浏览

.net - 动态业务规则架构

我正在.NET 中创建一个工资单应用程序。要求之一是考勤和扣分规则应最大限度地动态和灵活。用户应该能够定义自己的规则,每个员工都将被绑定到一个考勤规则。

一种解决方案是即时编译 C# 代码,其中每个考勤规则的代码都存储在数据库中并在运行时编译,但这不是最优雅的解决方案,因为规则只能由技术人员阅读/理解,代码的性能和可读性也不会是最好的。

我想知道是否有解决方案\架构模式允许我定义和应用出勤规则并根据它们计算扣除额,而无需编写脚本或动态编译 C# 代码。

0 投票
3 回答
815 浏览

e-commerce - 税务引擎示例

我们为 Mac 创建销售点软件,并正在寻求改进我们的税务引擎。现在很简单,税收由名称、代码和税率组成,可以单独应用于每个产品。虽然这对某些人来说已经足够了,但我们有很多请求来处理更高级的情况。一些例子是美国市/县销售税、加拿大复合(堆叠)税、法国生态税和纽约市奢侈品税。

我们已经确定了这些税收的大部分特征,并且倾向于一种基于规则引擎的实施。我们不必支持所有情况,但我们希望能够在需要时对其进行扩展(以避免再次重写)。

我们正在寻找以前构建过类似东西的人的建议,或者尝试以优雅的方式解决相同问题的项目示例。

0 投票
2 回答
438 浏览

java - 多个值对象上的业务逻辑 - 在哪里放置循环?

...以及如何最好地处理对视图层的成功/失败反馈。

选项是:

或者

假设我们想要一个以一致的方式接收成功/错误反馈的视图层(即来自对值对象的单个或多个操作),最好的方法是什么?

澄清:

在视图层处理业务逻辑调用引发的多种异常类型是代码繁重的,并且还会导致维护问题(引入了表示层不知道的新异常)。业务逻辑调用处理多个值对象上的错误并“打包”它们以便视图以一致的方式处理似乎更好。

0 投票
8 回答
1554 浏览

error-handling - 在多层架构中执行批量操作时处理错误和反馈

假设您有一个可以跨多个对象执行某些操作的业务逻辑方法。也许您想调用一个彩票号码挑选网络服务,为从列表中选择的每个人调用一次。在 Java 中,代码可能如下所示:

请注意,彩票号码 Web 服务可能会产生副作用,例如记录此人已请求彩票号码(可能会向他们的帐户收费),因此即使 Web 服务调用对一个人失败,也可能对其他人成功。此信息(彩票号码)将需要反馈到更高级别(视图)。

如果这是发生单个操作的情况,则业务逻辑方法可以返回单个值(例如,彩票号码)或抛出带有任何失败细节的异常。但是对于批量操作,有可能一些操作成功而一些操作失败。

这似乎是许多应用程序中都会出现的一种问题,应该有一种干净的方法来处理它。那么,将这种类型的信息从业务逻辑层反馈到应用程序中的另一层(如视图)的最佳方式是什么,最好是以可重用于不同类型的数据和操作的通用方式?