RTAC - Real Time Availability Checking
The purpose of this page is to provide a documentation support and a high level overview of RTAC modules for a new developer, provide tips and tricks, necessary links, etc., etc.
The business value of RTAC
RTAC stands for Real Time Availability Checking. It allows a library user (aka patron) to know the location and availability/checkout status of an item (e.g. book, DVD, etc.) that s/he may want to check out when s/he is search the library's catalog or discovery service. The below screenshot is a RTAC example of what a library user (aka patron) sees when searching for a book. RTAC must provide location and availability/checkout status details quickly. In addition, periodicals (i.e. magazines, journals) should typically display holdings information tied to an instance record while non-periodicals (i.e. books, dvd) should display item level information tied to an instance record. Example - Chalmers - http://www.lib.chalmers.se/en/search/
Summary of module interactions
The publicly accessible module EDGE-RTAC, which communicates with MOD-RTAC, which in turn belong to Folio infrastructure. EDGE-RTAC doesn't know anything about tenant but instead has API key that grants access to Folio. Below is the common diagram of this interaction:
Pic. 1. Simple diagram of communication between RTAC and Folio infrastructure.
Non-functional requirement:
There was some response-time related requirements to RTAC module. Initially response time was quite high, below is the link to performance measurement:
PTF -RTAC Workflow Test Report (Fameflower)
Supposed response time should be no more than 5 sec., but in fact it was about 15 sec. as can be seen from the report above. After some architectural improvements release in the of Q3 2020 scope, response time was dramatically reduced. To conclude - recently performance was significantly improved. New performance measurement will be planned in near future.
Q3 2020 (Honeysuckle) enhancements:
In this scope one of RTAC module was completely rewritten according to the architectural decision from the link below:
https://folio-org.atlassian.net/wiki/display/DD/RTAC+%28RTAC+%7C+Holdings%29+performance+improvement
A new streaming API was created in mod-inventory-storage: https://s3.amazonaws.com/foliodocs/api/mod-inventory-storage/inventory-hierarchy.html#inventory_hierarchy_items_and_holdings_post. Both mod-rtac and mod-oai-pmh are using this API mainly to address performance issues in both modules.
Below are link with new batching API introduced. There should be 2 get by single instance id endpoints, 1 legacy, 1 replacement for it and a new batch API in mod-rtac:
rtac:
https://s3.amazonaws.com/foliodocs/api/mod-rtac/rtac.html
https://s3.amazonaws.com/foliodocs/api/mod-rtac/rtac-batch.html#
edge:
https://s3.amazonaws.com/foliodocs/api/edge-rtac/edge-rtac.html
Technical overview:
The EDGE-RTAC as other EDGE modules depends on EDGE-COMMON module. This main responsibility of the module is processing API key and getting Folio token.
Local run and configuration of EDGE-RTAC module:
- Run one of vagrant snapshot module locally, "folio/testing" for example;
- Run edge-rtac in IntellyJ IDEA with configuration described below:
Links:
General info about structure of EDGE modules: Edge APIs#edge-rtac
GitHub repository link of MOD-RTAC: https://github.com/folio-org/mod-rtac
JIRA issue tracker page of MOD-RTAC: https://folio-org.atlassian.net/secure/RapidBoard.jspa?rapidView=146&projectKey=MODRTAC
GitHub repository link for EDGE-RTAC: https://github.com/folio-org/edge-rtac
JIRA issue tracker page of EDGE-RTAC: https://issues.folio.org/secure/RapidBoard.jspa?rapidView=146&projectKey=EDGRTAC
GitHub repository link for EDGE-Common: https://github.com/folio-org/edge-common
JIRA issue tracker page of EDGE-Common: https://issues.folio.org/secure/RapidBoard.jspa?rapidView=146&projectKey=EDGCOMMON
RTAC Features: https://folio-org.atlassian.net/secure/RapidBoard.jspa?rapidView=172&quickFilter=970
Working notes:
- Developer has a solid understanding of the repos
- Developer has an understanding of architecture
- Developer has a solid understanding of the environments for testing
- Who to contact for questions or validate technical approach Khalilah Gambrell - PO. Craig McNally Matt Reno
- Understand the business need
- Documentation should support a smooth handoff from one developer to another