Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Each module is a separate application serving a specific role. There are several roles in project:

Frontend modules

-- TBD

модули собираются в бандлы (package) из которых формируется frontend module (ui bundle)

React + FOLIO frontend is built as an SPA application based on React.js.

There are component frameworks located at: https://github.com/folio-org/stripes + and https://github.com/folio-org/stripes-core

Each UI module implements its own functionality. At build/package time all modules are packed to packages and a single frontend budle is created.

Backend modules

OKAPI

OKAPI is a central gateway in FOLIO project. It also encapsulates following services

  • API gateway
    • UI accesses OKAPI API which is exposed as a public API
    • all internal modules communicate via OKAPI API (no direct communication via HTTP(s) between modules)
  • service registry / discovery - all modules, excluding UI, publish their descriptors using OKAPI API to be available within the system)
  • security / access control - all requests passing through OKAPI has a security token assigned and checked to have corresponding permissions
  • tenant management - OKAPI controls when a database of a particular module (including a per-tenant databases) have to be upgraded for next version
  • dependency management - each module descriptor published has a set of dependencies included. OKAPI checks all those dependencies and also checks for existing circular dependencies in tree.
  • API gateway - all modules communicate through OKAPI API, there's no direct interaction (internal + external - сделать две строчки)

Business logic

Business logic modules are usually a Java applications, encapsulating data transformation, enriching, calculation - everything required to implement a business process.

Business logic modules are not commonly using their own database connection, but using "Storage modules" to persist information.

Storage

These modules are dedicated to provide an API for persistence layer of FOLIO. They usually expose CQL-type API to access database objects. Modules are mostly implemented using RAML descriptors.

Storage modules are not meant to have any type of business logic and must serve exclusively for storage purposes.

Edge

Edge modules are services to provide API for integration of third-party systems with FOLIO platform. Those modules are set up to be accessed from 'external' networks and not using OKAPI as a gateway in front of them.

For access control purposes they use their own mechanisms.

Sample interaction diagram

Source

Image Added