The Gawati architecture is described in this document.
Gawati is composed of 2 different applications which have different audiences in mind.
- The Gawati Portal - this is a public facing portal system that allows searching and accessing legal documents
- The Gawati Data Input System - which is a back-office application that allows managing and inputting legal documents which are presented by the Portal.
Gawati Portal System¶
The Gawati Portal is composed of different application components which are indicated below in the diagram.
The Portal System has its own dependencies which need to be installed before it can be used:
- gawati-portal-ui - the UI web front-end
- gawati-portal-fe - the back-end service for the UI
- gawati profiles system - see below Gawati Profiles System which has its own dependencies
- gawati-data - the Database service component
- gawati-portal-publisher - this is a subsystem component that allows publishing data onto the portal that has been received from the Gawati Editor System.
- gawati-portal-qprocessor - this is a subsystem component that allows receiving data from the Gawati Editor System.
Gawati Editor System¶
While the Gawati Portal System system provided access to documents, the documents are published onto the Portal via the Gawati Editor System described here.
The Editor System is composed of different application components which are indicated below in the diagram.
Functionally, the data input system looks like as below:
The Gawati Editor system has been concieved as an offline / online data entry system which can be used to publish information onto the Gawati Portal System even if offline. This is to cater for scenarios where data input is being done from places where internet connectivity is not always stable.
The Gawati Editor system uses a message-queue based architecture to support such a functionality.
Architecture in Depth¶
The Editor System follows the same basic architecture as that of the Portal system, and provides a browser based experience for adding and managing documents:
- gawati-editor-ui - which is the front-end client which provides the UI and UX for the editor system. It encompasses a dashboard, a workflow and a form based system to manage content (see gawati-editor-ui ).
- gawati-editor-fe - which provides front-end services that the
gawati-editor-uican interact with.
- gawati-client-data - which provides back-end services that are primarily used for getting data in and out of the XML database. The front-end
gawati-editor-uiclient does not access this directly but accesses this service via
gawati-editor-fewhich acts an authentication proxy for these services.
In addition to these there are some supporting services which are required by the editor system, that provide functional support for various other services:
Full text extraction - a lot of content in Gawati is PDF based. We extract the full text of the PDF document as XML and make that searchable by integrating it with the main metadata search. This full-text extraction is provided by a separated full-text extraction service. (See pd2xml-service)
Automatic Tagging - a document whose full text has been extract can be automatically tagged by a specialized service which uses a trained legal model to identify and generate tags based on the document’s content. (see gawati-tagit).
Digital Signatures - Document packages in Gawati can be digitally signed and published. This digital signature functionality is provided on the back of 2 services:
- package signature service: this accepts a gawati document as a gawati package and a private key to sign the document, and returns the signed document. (See gawati-package-sign). This service also allows validating a document based on its public key.
- digital signature interaction service: this is intended (and recommended) to be run on the
host computersigning the document.(See gawati-digisign-fe). For more information how digital signatures work in Gawati see About Digital Signatures.
- Asynchronous Publication - The gawati editor system uses an asynchronous publication mechanism to move documents from the Editor System on to the Gawati Portal System. For more information on this see About Publication. On the editor system end the expected services:
- RabbitMQ - this is an enterprise grade Message Queue system which we just use out of the box for its message queue capabilities.
- Editor QProcessor - this is a specialized service that runs as a background process in the Editor system and periodically scanes the message queue for publication events. It transmits documents which are to be published onto the portal system. (See Editor QProcessor).
Gawati Profiles System¶
The Gawati Profiles System allows authenticated users in the Gawati system to have user profiles.
The profiles system is technically composed of two main components:
The profiles system does not provide authentication or a user directory on its own, for that it simply integrates with authentication and user directory services provided by KeyCloak (see inst-prerequisites).
The profiles system integrates with the portal system (see Gawati Portal System) using KeyCloak single-sign-on (SSO) if the user logs into the profiles system, they are transparently logged into the portal. The Profiles system allows storing extended user information e.g. in the portal users can save their favourite searches. In the user interface it may appear as if it is the portal that is providing this information in reality this served by the profiles service.