Допустим, для клиента был создан счет-фактура. Это конкретное событие будет выглядеть примерно так:
invoice.raised {
"id": "4dbcff82-6f35-4155-9aec-f8185c1f932f",
"total": "50.00",
"description": "Order 01133",
"customer_id": "c2206843-414d-454f-9894-57c6b11b9c00"
}
Это довольно простой пример, и он относится к совокупности клиентов, к которой принадлежит счет.
Сложность проявляется, когда я хочу создать представление «Счета» и хочу вставить имя клиента в счет. Я мог бы сделать две вещи: добавить в исходное событие имя клиента или загрузить представление «Клиенты», чтобы узнать, какое это имя, когда я создаю представление «Счета». Теперь это не очень сложный пример, но в некоторых случаях становится почти неуправляемым обогащать события, поскольку я получаю множество свойств различных агрегатов, скопированных в событие, которое очень специфично для какого-то другого агрегата.
Есть ли общепринятый способ справиться с этим, помимо обогащения событий? Поскольку теперь каждый раз, когда возникает событие invoice.cancelled, мне также придется снова включать сумму счета, чтобы я мог, например, обновить представление «Клиенты», указав новый баланс.