EventSourcing для агрегатов, которые полагаются на другие агрегаты - PullRequest
0 голосов
/ 22 декабря 2018

В настоящее время я работаю над календарной системой, написанной в стиле EventSource.В настоящее время я борюсь с тем, как создать событие, которое создает множество небольших событий, и как сохранить другие события таким образом, чтобы их можно было воспроизвести.

Например, я могу вызвать CreateReminderScheduleкоторый затем запускает построение множества меньших событий, таких как CreateReminder.

{
  id:1
  description: "Clean room",
  weekdays:[5]
  start: 01.12.2018,
  end: 01.12.2018
  type: CREATEREMINDERSCHEDULE
}

Это затем создаст множество агрегатов CreateReminder с разными идентификаторами, чтобы вы могли редактировать меньшие, то есть

{
  id:2
  description: "Clean room"
  date: 07.12.2018
  type: CREATEREMINDER
  scheduleId: 1
}

Так что для меня одна проблема - когда я повторяю все события, createReminderSchedule затем повторяет триггер createReminderEvents, что означает, что у меня будет больше напоминаний, чем необходимо во время воспроизведения.

Является ли ответ удалить меньшие события и простобольшое событие create со списком всех идентификаторов напоминаний внутри события, например:

{
  id:1
  description: "Clean room",
  weekdays:[5]
  start: 01.12.2018,
  end: 01.12.2018
  type: CREATEREMINDERSCHEDULE
  reminderIds:[2,3,4,5,...]
}

Но если я сделаю это, то у меня не будет базового события для всех моих агрегатов напоминаний.

Обратите внимание, что напоминания должны знать о расписании напоминаний, чтобы я мог позже изменить расписание напоминаний, чтобы обновить все напоминания, связанные с этим напоминанием

1 Ответ

0 голосов
/ 07 января 2019

Возможно, вы путаете события с командами.У вас может быть команда, которая обрабатывается для создания ваших напоминаний (в форме событий, т.е. ReminderCreated), которая затем применяется к вашему агрегату для создания ваших объектов-напоминаний.Это состояние воссоздается таким же образом каждый раз, когда вы воспроизводите свои события из его источника.

...