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/

RTAC - What a library user (aka patron) sees.



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:

  1. Run one of vagrant snapshot module locally, "folio/testing" for example;
  2. 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