...
Role |
---|
...
Person |
---|
...
Circulation Audit logs of all actions filtered by a patron and/or an item with additional filters.
Circulation supports interaction with PubSub. So we can use it for logging of actions. The following approach can be applied:
1) Interceptor generates event for some action and send it to PubSub;
2) Listener handles these events and saves it in storage;
3) Client retrieves logs from Logs Storage.
Drawio | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
LogRecord
LogRecord is the main entity for saving/retrieving log info:
...
DB structure
DB should contain table for each logged object. This will improve performance by reducing the size of the table.
Tables: loans, fees_fines, item_blocks, patron_blocks, manual_blocks, requests, notices
Table structure: jsonb.
HL Flow Design
Flow description:
LogRecord saving:
1) LogUtils provides inline handler that construct event message with request (optional), response (mandatory), metadata (TBD). This handler is built into the logic of each method that handles a specific business process.
2) LogUtils sends event to PubSub/Kafka.
3) LogListener listening to the event bus and gets event.
4) LogRecordResolver determines type of record, extracts needed information, populates LogRecord and saves record to DB.
LogRecord retrieving:
1) Client makes call to LogsService /audit-data/logs with CQL query and shows result.
...
Comments | ||
---|---|---|
Solution Architect | ||
Java Lead | ||
UI Lead | ||
Product Owner | Stephanie Buck |
Page Tree | ||
---|---|---|
|