我简直无法想象这些东西的真正含义。实践。那么,这个业务逻辑到底是什么?它如何适合应用程序?我知道这些是在领域模型中作为方法实现的,但是这些方法可能是什么,它们在应用程序中可能在哪里使用?
#1 楼
CRUD是缩写,代表创建,读取,更新和删除。这些是您可以对数据库元组执行的四个基本操作。但是,业务应用程序除了创建,读取,更新和删除数据库记录外,还有更多的东西。让我们从一些基本定义开始,然后看几个例子,看看这些定义如何映射到这些例子,以及它们如何映射。映射到实际软件。
业务逻辑或域逻辑是程序的一部分,它编码确定确定如何创建,存储和更改数据的真实业务规则。它规定了业务对象之间如何交互,并规定了访问和更新业务对象的途径和方法。
业务规则描述了适用于组织的操作,定义和约束。这些操作共同构成一个过程;每个企业都使用这些流程来形成完成任务的系统。
现在,让我们来看一些示例。
将钱从一个支票帐户转移到另一个支票帐户
首先,您需要什么?知道(输入)吗?
进行转帐的人的身份
要转帐的金额
源支票帐号
目标支票帐号数字
必须使用哪些“业务规则”?
发出请求的人必须有权这样做。
交易必须是原子性的。
如果交易额超过一定金额,则交易可能需要向政府报告。
“原子性”是指交易必须完全成功或必须完全成功失败。您不能进行以下交易:从一个账户中取出钱而没有到达另一个账户(钱消失),或者将钱存入一个账户,但不从另一个账户中借记(钱神奇地从任何地方出现)。 >从Amazon订购商品。
您需要了解什么?
订购者的身份
发货信息
计费信息
付款方式
要运送的每种物品的数量和数量
如何运送(过夜,慢船或超级救星)
州税率
下订单后会发生什么?
从库存中提取物品
手头上的数量借记
物品被包装用于装运
缺货的项目被补购
低于最低数量的项目被订购
是一两批?
打印发票/运输清单,并与订单一起放置
..etc。
#2 楼
CRUD只是应用程序执行的创建,读取,更新,删除操作。在某种程度上,错误跟踪器也是CRUD应用程序。创建错误,读取(显示)错误,更新错误,甚至删除它们。
但是,错误跟踪器不仅仅具有CRUD。 br />不允许开发人员标记已验证或已关闭的错误-那就是QA工作的一部分。因此,其中有一些代码可确保没有QA角色的人无法将错误标记为已关闭或已验证。
除项目经理外,其他任何人都无法真正删除错误。
在为了将错误标记为“测试我”,必须针对该错误至少提交一次代码。
只有处于“关闭”状态的错误才可以移至“重新打开”状态
分配给该错误的开发人员无法将其从“代码审查”移至“代码审查完成”。
质量保证,开发人员只能看到分配给他们的项目中的错误。
实现上述内容的代码是应用程序的业务逻辑。
工作流的限制,或者谁可以在CRUD中执行各种操作。这些就是将一个CRUD应用程序与另一个CRUD应用程序区分开的原因。它们是您需要使业务实际说明应用程序如何工作的部分。它有多合乎逻辑...嗯,在项目经理的耳边,最好是用啤酒来讨论。但这就是业务逻辑。
当然,有可能编写没有角色,可以修改和查看所有内容的“纯” CRUD应用程序-但这是例外,而不是规则。
业务逻辑是您正在编写到程序中以处理给定业务规则的逻辑。
当您开始进入业务规则时,这往往比Crud本身或业务逻辑要高。这往往是您从与业务部门合作的业务分析师那里获得的东西。
在此示例中,考虑一个程序,该程序确定如何在商店的退货柜台处理退货。
如果收货时间等于或超过90天,仅在商店中可以提供信用额度
如果收据的使用期限不足90天,则将收据用于购买的标书上的信用额度记入信用额度(信用卡上返还信用卡,现金返还现金,在商店中返还现金)除非有支票,否则请使用现金。
这些是一些业务规则。它们不涉及应用程序的CRUD部分。
使用业务规则时,您通常会发现它们是用规则引擎(例如Windows Workflow Foundation Rules Engine)编写的,而不是编写的系统中的原始代码。
意识到逻辑/规则的区别是术语之一,并且可以整夜争论不休(最好再喝一杯啤酒)。尽管这不是很常见的区别,但是两者可以相互融合。
#3 楼
其他答案是正确的。还有一个想法……业务逻辑是可移植的
如果要用另一种编程语言重新实现软件项目,请说从Turbo Pascal迁移到Java,业务逻辑和业务规则是新旧项目的共同点。
编程语言会有所不同。源代码将完全不同。这些工具(IDE,编译器等)可能完全不同。用户界面可能会完全重组或具有不同的外观。该文档可能会有所不同。但是,两个项目的目的,完成的工作的最终结果/完成的目标将是相同的。
#4 楼
业务逻辑基本上包括两大类:验证和流。业务逻辑说,数量1必须大于或等于数量2-例如,要购买的商品数量必须小于或等于库存商品数量。在一个应用程序中,业务人员会说这是一个业务规则,因此您编写代码以强制执行此业务逻辑(验证)。另一个应用程序将说,如果订购的商品数量大于库存的商品数量,则接受订单,然后为差额加20%自己下订单,因此您将编写此业务逻辑(流程) 。
CRUD只是简单地获取和存储数据并对其进行更改。业务逻辑确定您对数据进行的处理以及对数据进行的转换。您的客户将来是否出生于某个地理区域(年龄在5岁以下)(当地人/游客的折扣)。 CRUD很简单,要知道孩子只有在日历年中与孩子同住超过一半的时间(而不仅仅是六个月),才能获得孩子税收抵免,这更加复杂。
评论
我喜欢这些定义,但是在示例中,我想念您在业务逻辑与业务规则之间做出的区分。
–jdv-Jan de Vaan
2014年3月31日17:51
业务逻辑是指代码。业务规则是指业务。
–罗伯特·哈维(Robert Harvey)
2014年3月31日17:52
好。但是,为什么将“交易必须是原子的”标记为业务规则?对于业务规则,我听起来有点低级。
–jdv-Jan de Vaan
2014年3月31日在17:56
@jdv:您想得太多了。柜员会只完成那笔交易的一半吗?
–罗伯特·哈维(Robert Harvey)
2014年3月31日在17:59
@jdv事务是原子的,这是一个基本要求,需要确保,并且与最终状态有关。
–bdutta74
2014年4月1日在2:45