As documented in detail elsewhere, the projects managed by the Foundation fall into four high-level categories:
-
Lichen: A UBL document processing system that sends business documents to the Interlibr for rule discovery and execution. This categories includes web and mobile applications that interact with Lichen document services.
-
XAlgo: A high-level declarative language for specifying rules that operate on hierarchical documents (JSON-like).
-
Interlibr: A compute service that performs rule discovery and execution for using the XAlgo specification.
-
XalgoAuthor: An authoring interface for tables and rules that will be executed by Interlibr.
Contains the Docker and Kubernetes deployment configurations and includes the Ruby/Thor based Interlibr CLI.
This Ruby gem uses Parslet to offer a parser for the Xalgo syntax. The output of the parser is a JSON representation of the Xalgo.
A simplistic UBL parser written in Ruby and Javascript.
This Scala library is a reference implementation of the Xalgo Execution Model. The team refers to this implementation as the naive interpreter.
A storage abstraction layer in Scala used by several of the Scala services.
A service is an independantly running process typically following the micro-service architecture pattern. In Interlibr, services are typically deployed as Docker containers on Kubernetes.
All of the Spark processing performed in Interlibr is written in Scala and compiled to a single JAR.
This Ruby/Sinatra service receives action-oriented requests related to rules and tables that are stored in Github repositories. It can receive notifications from Github to update stored rules and tables. Most of its processing is scheduled as Sidekiq jobs.
This Scala service written with Play and Akka handles all inbound processing requests.
This Scala service written with Play and Akka handles all requests for data stored in the platform.
This Scala service written with Akka process all rule executions requests which are delivered via Kafka queues.
This NodeJS service offers a web socket subscription service that can be using by integrated services to receive notifications of processing events.