Skip to end of banner
Go to start of banner

Circulation Audit logs

Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 13 Next »


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.


LogRecord

LogRecord is the main entity for saving/retrieving log info:

FieldTypeDefaultRequiredNote
eventIdUUIDNY
userIdUUIDNN
itemIdUUIDNN
ObjectStringNNenum: Fee/Fine, Item Block, Loan, Manual Block, Notice, Patron Block, Request
ActionStringNN
DateDateTimeNN
ServicePointIdUUIDNN
SourceStringNN
DescriptionStringNN


DB structure

DB should contain table for each logged object. This will improve performance by reducing the size of the table.

Tables: loans, feesFines, itemBlocks, patronBlocks, manualBlocks, requests, notices


Typical table structure:

iduseritemactiondateservicePointsourcedescriptionlinkTonotes
..............................

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.





Open questions

  • No labels