问题标签 [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 回答
1261 浏览

xml - 您可以从 Spring.NET XML 中的对象复制属性或构造函数参数值吗?

我相信我在几个月前遇到了这个问题,但现在我很难找到答案。也许有人可以将我指向文档中的正确部分?

使用Sprint.NET,我将远程 XML 文件组合到单个应用程序上下文中,其中引擎对象与业务规则对象是分开的。问题是一些业务规则是值,而不是对象,引擎 xml 中的<property><constructor-arg>节点需要它们:

引用另一个对象的属性(使用expression属性而不是value?)或者一些专门的名称/值列表(例如 Spring 的 to 版本<appsettings>,无论是什么)都可以工作。

0 投票
9 回答
26632 浏览

architecture - 什么是领域逻辑?

什么是领域逻辑?域逻辑的维基百科页面重定向到业务逻辑。它们是同一件事吗?如果不是,它们有何不同?

0 投票
5 回答
1968 浏览

xslt - 使用 XSLT 处理业务规则?

我的一位同事提到 XSLT 的一个用途是处理业务规则。他提到有些系统允许用户以某种文本格式编写业务规则,然后程序使用 XSLT 处理文本并在应用程序运行时应用规则。

有人可以为我解释一下这个问题吗?

谢谢!

0 投票
3 回答
271 浏览

html - 您认为模板代表了将表示逻辑与业务逻辑分离的最佳方式吗?

我认为大多数模板引擎对于设计师和前端开发人员来说很难使用,而让程序员承担维护它们的负担。

在设计师更新 html 模型后频繁更新模板是一场噩梦,因为您的模板不再与原始 html 兼容。

我有这个问题很长时间了,最​​近我有了一个想法,但我不知道我是不是在重新发明一些东西,或者是否存在更好的东西。

所以,我问你是否找到了解决这个问题的更好的解决方案,如果有,是哪一个?

0 投票
17 回答
21139 浏览

stored-procedures - 存储过程中支持/反对业务逻辑的参数

支持和反对存储过程中的业务逻辑的论据是什么?

0 投票
2 回答
3000 浏览

java - 打破业务逻辑和数据层似乎重叠的最佳设计?

我正在构建一个 MVC Web 应用程序(使用 Spring MVC 框架),我对设计特定区域的最佳方式感到有些困惑。

应用程序必须与一系列 Web 服务进行交互,这些 Web 服务的设计并没有那么大,并且它们本身并没有提供太多抽象 - 基本上每个创建/更新/检索/删除操作都有一个 Web 服务方法每个“数据类型”,除此之外没有太多的 API。Web 服务客户端需要知道调用哪些方法以及调用顺序,以便能够创建它需要的数据——换句话说,没有基于“事务”的方法。

例如,简单地创建一个新用户帐户需要调用总共七种不同的 Web 服务方法来设置必要表中的所有记录(一条user记录、为该用户添加正确privileges的、设置用户的billing详细信息等) .

我正在努力寻找将其抽象化并将其封装在我们的应用程序中的最佳方法。大多数应用程序都遵循标准流程:

在我的应用程序中,我使用自己的一组“域对象”来表示和抽象 Web 服务 WSDL 中定义的数据类型,这样我的域逻辑不依赖于 Web 服务类型,因此我们可以抽象和隐藏我们喜欢的任何细节。

我正在寻找一些意见是设计我上面作为示例提到的“用户创建过程”的最佳方式。正如我所提到的,创建“普通用户”的过程涉及调用七种不同的 Web 服务,但这只是用户的一种“类型”——我们必须能够创建几种不同类型的用户,每一种都需要不同的要调用的 Web 服务。

目前我只设计了这个“普通用户”的创建,作为一个概念证明——我有一个域对象User,一个UserDao接口,它有和的方法getUser(name)createUser(User)以及一个WebServiceUserDao实现UserDao方法并知道如何调用上述内容的接口——提到了七种网络服务方法。该createUser()方法由 a 调用UserCreationService,这是我的业务/服务级别类,而该类又由SignupController.

但是为了扩展这个逻辑以便能够创建不同的用户类型(它们User.getType()由:

  1. 为每个“用户类型”创建一个UserDao实现,因此创建每个“用户类型”的逻辑可以封装在它自己的类中,让UserCreationService决定UserDao使用哪个?这将对应于 1 个服务类:许多 DAO。
  2. 我是否应该将它们UserDao分成更小的部分,一个对应于需要在 Web 服务/数据库中创建的每个“记录”,即使我的整个应用程序不需要了解这些单独类型中的每一个?然后UserCreationService对各种不同的“用户类型”有不同的实现?换句话说,即使我不需要相应的或域对象,该策略也会有 a PrivilegesDao、 a等。这将是许多服务类:许多 DAO。BillingPlanDaoPrivilegeBillingPlan
  3. 包含所有需要为每个“用户类型”调用 Web 服务的逻辑WebServiceUserDao?这将具有一个非常复杂的类的缺点(并且 PMD 已经在抱怨圈复杂性),但是所有这些逻辑都将封装在一个类中,并且从整体 API 的角度来看可能会导致更少的复杂性。

我对这个应用程序的一个目标是确保如果我们必须更改数据持久性的细节,我们需要做的就是更改 DAO 实现——如果我们必须开始与不同的计费系统交互,除了在 DAO 级别之外,我不希望应用程序的任何部分发生更改。

有什么意见吗?当“业务逻辑”和“数据访问逻辑”似乎重叠时,您在决定在哪里分解它们时使用什么样的策略?

0 投票
4 回答
425 浏览

asp.net - 如何在网站中提供多种搜索功能?

我正在开发一个 Web 应用程序,其中我具有以下类型的搜索功能;

  • 普通搜索:用户将在其中输入搜索关键字以搜索记录。
  • 流行:这不是一种搜索,它会显示网站上的流行记录,就像 digg 和其他社交书签网站一样。
  • 最近:在此我在我的网站中显示最近添加的记录。
  • 城市搜索:在这里,我向用户显示城市名称,例如“德里”、“孟买”等,当用户单击此链接时,将显示该特定城市的所有记录。
  • 标签搜索:与城市搜索相同,我有标签链接,当用户单击标签时,所有标有该标签的记录都将显示给用户。
  • 字母搜索:与城市和标签相同,此功能还具有诸如“A”、“B”、....等字母的链接,当用户单击任何字母链接时,所有以该特定字母开头的记录都将显示给用户

现在,我的问题是我必须向用户提供上面列出的搜索,但我无法决定我将使用一个页面 (result.aspx) 来显示所有搜索记录,我将使用查询字符串,用户正在使用哪个搜索以及我必须向用户显示哪些数据。例如,假设我正在搜索 city、delhi 和 tag delhi-hotels,那么两者的 url 将是:

对于城市: www.example.com/result.aspx ?search_type=city&city_name=delhi

对于标签: www.example.com/result.aspx ?search_type=tag&tag_name=delhi-hotels

对于普通搜索: www.example.com/result.aspx ?search_type=normal&q=delhi+hotels+and+bar&filter=hotlsOnly

现在,我觉得使用单个页面进行所有搜索的想法很混乱。所以我想到了一些更干净的想法,它对所有类型的搜索使用单独的页面作为

对于城市: www.example.com/city.aspx ?name=delhi

对于标签: www.example.com/tag.aspx ?name=delhi-hotels

对于普通搜索: www.example.com/result.aspx ?q=delhi+hotels+and+bar&filter=hotlsOnly

最近: www.example.com/recent.aspx

对于流行: www.example.com/popular.aspx

我的新想法更清晰,它明确地告诉用户哪个页面是做什么的,它也让他知道他现在在哪里,他现在看到了什么记录。但是这个新想法有一个问题,如果我必须更改搜索结果显示中的任何内容,那么我必须在所有页面中一一进行更改,我认为这个问题的解决方案也是,即在转发器下使用用户控制控件,我将把我的所有值一一传递给用户控件,以便为每条记录呈现 HTML。

新的想法一切都很好,但我仍然无法决定我必须去哪一个,谁能告诉我你对这个问题的想法。

我想实现一个易于维护、SEO 友好(为我的网站提供良好排名)、用户友好(易于使用和用户理解)的想法

谢谢。

0 投票
4 回答
3648 浏览

domain-driven-design - 处理贫血域模型的技术

我已经阅读了一些关于贫血域模型和关注点分离的问题。在贫血的域对象上执行/附加域逻辑的最佳技术是什么?在我的工作中,我们有一个非常贫乏的模型,我们目前正在使用“帮助器”类来在域对象上执行数据库/业务逻辑。例如:

当应用程序需要进行购买时,它会创建 StoreHelper,并调用域对象上的方法。对我来说,客户/产品知道如何将自己保存到存储库是有意义的,但您可能不希望域对象上的 Save() 方法。对于像 Customer.Purchase(Product) 这样的方法也很有意义,但这会将域逻辑放在实体上。

以下是我遇到的一些技术,不确定哪些是好/坏:

  1. Customer 和 Product 继承自“Entity”类,该类以通用方式提供基本的 CRUD 操作(可能使用 ORM)。
    • 优点:每个数据对象都会自动获取 CRUD 操作,但随后会绑定到数据库/ORM
    • 缺点:这并没有解决对象上的业务操作问题,并且还将所有域对象绑定到可能不合适的基本实体
  2. 使用帮助类来处理 CRUD 操作和业务逻辑
    • 将 DAO 用于“纯数据库”操作是否有意义,而将业务助手用于更特定于业务的操作是否有意义?
    • 为此使用非静态或静态辅助类更好吗?
    • 优点:领域对象不依赖于任何数据库/业务逻辑(完全贫乏)
    • 缺点:不是很面向对象,在应用程序代码中使用助手不是很自然(看起来像 C 代码)
  3. 使用 Double Dispatch 技术,其中实体具有保存到任意存储库的方法
    • 优点:更好的关注点分离
    • 缺点:实体附加了一些额外的逻辑(尽管它是解耦的)
  4. 在 C# 3.0 中,您可以使用扩展方法将 CRUD/业务方法附加到域对象而不接触它
    • 这是一种有效的方法吗?什么是优点/缺点?
  5. 其他技术?

处理此问题的最佳技术是什么?我对 DDD 很陌生(我正在阅读 Evans 的书——所以也许这会让我大开眼界)

0 投票
14 回答
1377 浏览

c# - 业务验证逻辑代码异味

考虑以下代码:

即当in的值OurProperty发生OurBusinessObject变化时,如果该值无效,则设置为默认值。这种模式让我觉得代码有异味,但这里的其他人(在我的雇主那里)不同意。你怎么认为?

编辑添加:我被要求添加解释为什么这被认为是好的。这个想法是,业务对象可以验证自己的属性,并在验证失败的情况下设置干净的默认值,而不是让业务对象的生产者验证数据。此外,人们认为,如果验证规则发生变化,业务对象生产者将不必更改其逻辑,因为业务对象将负责验证和清理数据。

0 投票
3 回答
6902 浏览

sas - ytd 报告和 12 mtd 有什么区别?

12 mtd , 12 mtd rolling 和 ytd 计算有什么区别