У меня есть требование, при котором мне нужно регистрировать изменения данных (не проверяя) и состояния жизненного цикла при инвентаризации.
Технология: Jave, Oracle, Hibernate + JPA
Для данныхизменения, нам дали список элементов данных, которые должны контролироваться.Если элемент изменяется, мы должны уведомить данного стороннего поставщика.То, что я хочу сделать, это сделать эту услугу общей, которую мы можем предоставить любому из наших нынешних и будущих сторонних поставщиков.изменено.
Суть в том, что уровень данных нашего приложения будет использовать аннотацию для каждого из элементов данных.Если этот элемент данных изменился, он поместил бы сообщение в очередь.Затем компонент сообщения прочитает очередь и сделает запись в таблице.
Таблица будет выглядеть примерно так:
Table Name: ATL_CHANGE_TRACKER
Key columns
INVENTORY_ID Inventory Id of the vehicle
SALEEVENT_ITEM_ID SaleEvent item of the vehicle
FIELD_CHANGED_ID Id of the field that got changed or action. Link to subscription
UPDATE_DTM Indicates the date time when change occured.
Для данного инвентаря у нас может быть до 200записей в этой таблице (мониторинг 200 полей во многих таблицах).
Затем демон для данной третьей стороны будет читать из этой таблицы на основе полей, на которые он подписан (это могут быть все поля).Затем он будет читать, что каждая таблица требуется для создания сообщения для отправки третьему лицу.Разъедините поставщика данных и пользователя данных.
Определите список доступных полей / действий
Table Name: ATL_FIELD_ACTION
Key columns
ID
NAME Name of the field/action - Example Color,Make
REC_CRE_TIME_STAMP
REC_CRE_USER_ID
LAST_UPDATE_USER_ID
LAST_UPDATE_TIME_STAMP
Таблица подписки, если сторонняя компания xyz заинтересована в 60поля, 60 полей будут сопоставлены с этой таблицей.
ATL_FIELD_ACTION_SUBSCRIPTION
Key columns
ATL_FIELD_ACTION_ ID ID of the atl_field_action table
CONSUMER 3rd Party Name
FUNCTION Name of the 3rd Party Transmission that it is used for
STATUS
REC_CRE_TIME_STAMP
REC_CRE_USER_ID
LAST_UPDATE_USER_ID
LAST_UPDATE_TIME_STAMP
Вторая часть заключается в том, что в жизненном цикле инвентаря будут выполняться действия, которые также необходимо будет записать.В этом случае, когда состояние инвентаря изменяется, сообщение будет помещено в ту же очередь, и эта запись будет внесена в ту же таблицу.
Опять же, демон будет подписан на эти состояния и соберетте, в которых он заинтересован.
Цель здесь - не заботиться о бизнес-уровне / уровне данных о том, кто хочет получить данные, - только то, что ему нужно предоставить их, чтобы заинтересованные могли их получить.
Интересно, кто-нибудь сделал что-то подобное - какие-то ошибки - с полки - решения с открытым исходным кодом, чтобы сделать это.