- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试为我的公司建模一个日程安排应用程序,可以使用一些建议。如果合适,我想遵循域驱动设计。
该域由一个 Show 对象组成,它代表一个贸易展览、展览或 session ,我们可能会在其中推广我们的产品。它具有开始和结束日期和时间、议程、演讲者名单、地点等。可以通过 Show 完成很多工作,例如分配演讲者、注册与会者、取消等。
我们通常作为一个或多个营销事件的一部分参加展会。事件也有开始和结束日期和其他信息,以及我们将为该事件参加的节目列表。我们可能会在一个给定的展会上推广多个事件。
节目可以从事件中添加或删除,当节目被取消时,它必须从与其关联的任何事件中删除。
我的第一个想法是拥有一个 Schedule 聚合根,其中包含一个 Campaign 实体列表,其中包含一个 Show 对象列表。但我需要一种访问独立节目的方法 - 一个节目可以与多个事件相关联。
看看我的用例,我正在开发一个 Silverlight 客户端(但也可能会移动)。主视图将是一个日历类型的 UI(如 Outlook),将每个 Show 显示为约会。还有侧边栏显示即将到来的节目、当前事件和具有后续任务的节目。当我双击任何这些 View 中的项目时,显示详细信息会显示在子窗口中。
关于如何在我的应用程序代码中对这个域建模有什么建议吗?
最佳答案
But I need a way to access stand-alone Shows - and a Show can be associated with more than one Campaign.
与其尝试将所有内容都放在 Schedule 聚合根(当您随意谈论域时,该术语不会出现在您的语言中),不如尝试使用 2 个聚合根 - Show 和 Campaign。
A Campaign also has start and end dates and other information as well as a list of Shows we will be attending for that Campaign.
Campaign 可能没有必要保留对 Show 的引用。如果节目知道它推广的事件,那么在您要显示事件信息时就足以找到它。
Shows can be added or removed from Campaigns and when a Show is cancelled, it must be removed from any Campaigns it was associated with.
No, it should not .
节目应该被标记为已取消,如果有必要,事件会隐藏它。
我会从类似 this 的内容开始.
It was only due to my attempt to be concise that Schedule was not introduced until I started discussing the model. In fact, the Schedule is the whole point of the app. The Schedule represents all of the Shows.
很可能有要求在您的领域模型中引入时间表的要求。但是因为我还没有听到它(或者对你的领域不够了解),我只会将我的应用程序命名为 Scheduler。或者 Scheduler bounded context,如果应用程序不仅仅是关于安排节目和事件的话。
Also, in the customers' minds the Show doesn't necessarily know about the Campaigns. In all of our discussions, they only ever referred to assigning Shows to Campaigns.
如果 Show 必须存在于“独立版本”中,则它是一个聚合根(将其下推到 Schedule 下不会改变任何事情,这只会增加一个抽象层。Show 仍将独立于 Campaigns)。如果需要弄清楚在“独立版本”中被视为关联的 Campaign/s Show,应该有关联 Show->Campaigns。尽管它可能感觉与域有点矛盾,但您可以将其视为一种牺牲。
我们用清晰的原始想法来交换表达自己的能力(Uncertainty principle 在这里可以用作一个很好的类比)。毕竟 - 我们无法完全彻底地捕获心智模型。
Logically I agree with your point but I would also want to ensure that there was only ever one instance of the Campaign shared by all Shows that has been assigned to it.
您应该稍微关注领域对象的生命周期。
对象的构造和重建之间存在巨大差异。通常,Campaign 只会构建一次,之后 - 它只会从数据存储中重建。如果您确保同一事件的不同实例(从域的角度来看)不能保存两次 - 通常这就足够了。
This is what led me to my original thought that Campaign was the root but doing so ignores the reality that there will be Shows that are not part of a Campaign.
是的......你是对的。
关于oop - 使用 DDD 建模时间表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8300849/
我有以下格式的一些数据: 薪水 代码及时 1690 09:03:00 1690 09:13:00 1690 09:07:00 1691 08:48:00 1691 08:52:00 1691 08:5
在基于 jsp 和 servelet 的 Web 应用程序中实现类似 cron 的调度程序的最佳方法是什么?使用“定时器服务”遇到了一个选项。任何其他替代方案或对计时器服务的任何评论? 提前致谢 沙米
好吧,我对 MySQL 和数据库总体来说还很陌生。我想在一段时间后对数据库进行更新。让我解释一下。 所以为了练习,我正在用 php 构建一个游戏,在这个游戏中你将能够升级东西。比如说一栋建筑,从1级升
我想为每个用户创建一个典型的学校时间表。 最终产品应如下所示: +----+---------+---------+-----------+----------+--------+ | h | Mo
我的表格: timetable +----+---------+-------+--------+---------+---------+------+ | id | user_id | s_day
我的网站涉及安排重复类(class)和事件。目前,我已经使用 php 和 javascript 构建了一个表,该表逐个时间段扫描我的 mysql 数据库,每天查看是否有安排的事件或时间段是否空闲。 它
我有一个关于日程安排的问题。我需要为约会制作一个时间表生成器。这是目前的情况。 P1 与 P2 有约会 A。 P3和P4有个约会B。 等等…… 预约 A 大约需要 15 分钟 B约需40分钟 (时长视
我有一个配置如下的 celery 时间表: CELERYBEAT_SCHEDULE = { "runs-every-30-seconds": { "task": "tasks.
我想在“每个月的最后一天 10:15”和“每个月的第一个星期日”运行 spring scheduler 作业 - 我在下面尝试过 - 但它在初始化 spring 上下文时出错: org.springf
如何在运行时检查 openmp 计划? 我使用并行循环和运行时计划编译我的代码 #pragma omp parallel for schedule(runtime) collapse(2) for(j
我已经制作了一个 Android 应用程序,并且它已成功编译,没有任何错误。但是当我在 Android 手机中运行应用程序时,它不会显示所需的输出。 这是我的 MainActivity.java: p
经过一天的痛苦,我终于将数据放入了日程安排事件中。 我现在尝试在单击事件时设置事件,它使用数据变量加载新页面。 这是 xhtml 还有 Java public void redirec
我正在使用 Primefaces Schedule 组件在我的网络应用程序中呈现事件。但我需要对他耍点小花招。对于每个呈现的事件,我需要显示一个包含事件详细信息的工具提示。使用 window.onlo
我想设置一个 crontab 表达式,每 20 分钟启动一次作业,并且它将按照时间表运行 周一至周五上午 7 点至 30 点至晚上 8 点,周六上午 7 点至 30 点至下午 4 点 到目前为止我有以
这是我根据用户输入创建表格的代码: const err = "the valid input is a number between 5 and 20, please refresh your pag
有没有办法在 HighCharts 中制作与此类似的时间线/时间表? https://developers.google.com/chart/interactive/docs/gallery/time
在关于 AES key 表的教程中,我看到 key 表的操作(旋转、rcon、s-box)应用于一个 4 字节的字。你能解释一下这个字从哪里来吗?我明白我从 128 位长的 key 中提取它。 key
SQL Server 作业/时间表 - 美国与英国夏令时调整 我们有一个基于英国的服务器,它需要在 16:30(美国中部时间 - 这可能看起来很奇怪,但这是因为一些数据的可用性)运行 SQL 代理作业
我有一个 quartz 作业,每天下午 3 点(服务器时间)运行。我想做的是让它在下午 3 点运行,但针对美国的每个时区。 quartz 作业会触发一封电子邮件给我的用户,我希望每个人都能在他们的时间
我想以一种非常简单的方式展示电视指南时间线,但我对此真的很陌生,所以我希望有人可以帮助我,我不想要太复杂的东西,而且我已经在网络上搜索并且我发现非常复杂的时间线,有很多我真的不需要的功能,我只想显示当
我是一名优秀的程序员,十分优秀!