Дьявол кроется в деталях. Я смотрю на реализацию событийных источников на существующих приложений общественного питания. У меня есть счет, который может быть связан с компанией, отделом в компании или сотрудником в компании.
Настройка
Вариант использования:
- Компания спонсирует мероприятие и оплатила еду.
- Есть клиенты, заходящие в отдел компании, и они заказали еду.
- Есть кафетерий и работник заказывает еду. Компания платит нам, но все еще нуждается в счете сотрудника.
Модель домена
Invoice
-> invoice Id
-> Status
-> CompanyId
-> DeptId
-> EmployeeId
-> Balance
- Заполнено только название компании (компания, выставившая счет)
- companyId + deptId (отдел счетов)
- companyUd + deptId + employeeId (человек счета)
Таблица отношений
| p_key | invoice_id | Reltn_Table | Reltn_id |
|-------|------------|-------------|----------|
| 1 | 12345 | Company | 245242 |
| 2 | 67890 | Company | 1241243 |
| 3 | 79166 | Dept | 534214 |
| 4 | 792131 | Dept | 412213 |
| 5 | 489965 | Employee | 412323 |
Предположим, что таблица dept и employee так или иначе связана с таблицей компании.
У меня есть другая таблица источников событий с моделью домена как INVOICE .
Таблица хранилищ событий.
| event_id | invoice_id | Event | Payload |
|----------|------------|------------------|---------|
| 1 | 12345 | Invoice_InReview | JSON |
| 2 | 12345 | Invoice_Billed | JSON |
| 3 | 12345 | Invoice_Paid | JSON |
| 4 | 12345 | Invoice_Reversed | JSON |
| 5 | 12345 | Invoice_Paid | JSON |
Служба отдыха иногда передает идентификатор сотрудника, отдела или сотрудника, чтобы применить обновления к счету.
* * ВОПРОС тысяча сорок-девять
Я хотел посмотреть, есть ли способ для хранилища событий обрабатывать сценарии, когда ему не нужно запрашивать таблицу отношений для получения счета-фактуры / счетов-фактур, а затем применять к нему события.
Я изначально склонялся к созданию моментального снимка модели домена, но проблема по-прежнему остается, поскольку команда dept или companyId находится в JSON. Я не могу запустить события извлечения, основанные на этом.
Независимо от того, каким образом я вижу, мне придется позвонить, чтобы получить счет-фактуру / счета-фактуры, прежде чем я смогу применить событие или сделать что-нибудь. Есть ли что-то, чего мне не хватает, что поможет мне избавиться от Реляционной таблицы или это мечта дураков?
Также дополнительный вопрос
SNAPSHOTS сохраняются в той же таблице, что и хранилище событий, правильно? Тип события SNAPSHOT верно? Пожалуйста, поправьте меня, если я ошибаюсь