首页
学习
活动
专区
圈层
工具
发布

提醒- DDD
EN

Stack Overflow用户
提问于 2020-01-14 09:16:35
回答 1查看 244关注 0票数 1

即使域模型中没有状态更改,业务提醒是否可以建模为域事件?

为了前夫。

发送通知给客户,您的密码将在这样和那样的日期过期?

向客户发送电子邮件,要求您及时缴纳会费,否则罚款将被收取(缴费提示)

(我们通常在截止日期之前发出这些提醒)

EN

回答 1

Stack Overflow用户

发布于 2020-01-14 11:55:30

发送提醒服务。发送了一个ApplicationService提醒这一事实可以被捕获为一个DomainEvent,但是实际发送提醒要么是一个,要么是一个DomainService,这取决于您的应用程序。

应该在到期前的特定时间点调用SendReminderService,因此您将需要一个作业计划程序,它可以在特定的时间间隔内调用服务,也可以发送SendReminderForTodayCommand.

您可以通过显式添加提醒的概念并在发送提醒时生成事件来对此进行建模。您还需要一个ScheduleReminderService.

在密码示例中,您可以在用户注册和更改密码时调度提醒

下面是一个例子:

代码语言:javascript
复制
public class Reminder : Entity {

    public Details ReninderDetails { get; private set; }
    public Date SendAt { get; private set; }
    public bool WasSent { get; private set; }

    public void MarkAsSent() {

        WasSent = true;
        AddEvent(new ReminderSent(ReninderDetails));
    }
}

public class ScheduleReminderService {

    public void ScheduleReminder(Date remindAt) {

        var reminder = Reminder.ForDate(RremindAt);

        ReminderRepository.Add(reminder);
    }
}

public class SendRemindersService {

    public void SendReminders() {

        var reminders = ReminderRepository.GetScheduledReminders(Date.Today);

        foreach(var reminder in reminders) {          

            SendReminder(reminder);

            reminder.MarkAsSent();

            ReminderRepository.Save(reminder);
        }
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59730667

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档