Versions Compared

Key

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

...

...

...

...

...

...

...

Component

...

Diagram

...

External Components

Info

The external components that inQuiry needs to function (libraries or services)

Name of the component

What does it do?

Why it is needed?

Knowlg : ePub Player

Unused - To be removed from QuML Editor

Responsible for playing Epubs and can pass on the player events to container as detailed hereNA

inQuiry is not using it, there is a tight dependency from Resource Library

This needs to be made as optional dependency in Resource Library as it is planned to be used by Knowlg.

Action Item

  •  Remove the tight dependency of ePub Player in Resource Library [IQ-413]

Knowlg : PDF Player

Unused - To be removed from QuML Editor

Responsible for playing PDFs and can pass on the player events to container as detailed hereNA

inQuiry is not using it, there is a tight dependency from Resource Library

This needs to be made as optional dependency in Resource Library as it is planned to be used by Knowlg.

Action Item

  •  Remove the tight dependency of PDF Player in Resource Library [IQ-413]

Knowlg : Video Player

Unused - To be removed from QuML Editor

Responsible for playing Video contents as detailed hereNA

inQuiry is not using it, there is a tight dependency from Resource Library

This needs to be made as optional dependency in Resource Library as it is planned to be used by Knowlg.

Action Item

  •  Remove the tight dependency of Video Player in Resource Library [IQ-413]

Knowlg : Knowlg Services (API)

Responsible for providing services related to,

  • content-service

  • taxonomy-service

  • search-service

  • learning-service

  • data-pipeline

This encapsulates the following service offerings,

  • Asset create / upload

  • Composite search

  • Framework APIs

  • Channel

  • These services are used for:

    • Creating and uploading assets such as images, videos

    • Composite search of questions

    • Getting Framework and Channel data

    • Getting Form Configuration (Object category definition)

    inQuiry service provides the functionality of managing questions and questions sets. However the creation of question and question sets require additional services that are provided by Knowlg Services.

    Knowlg : Graph Engine (aka Ontology Engine)

    Info

    This can be replaced as Knowlg Core (has : platform-core, ontology-engine, platform-modules)

    Graph-engine acts as an interface between databases and service moduleThis . It encapsulates all the calls to the underling data stores (Neo4J, Cassandra, Redis, etc).

    This is available as library for consumption and code need not be repeated in modules that needs to access the underlying data store.

    The Knowledge Platform uses the Graph engine to communicate with Neo4j. The Graph engine expects schema definitions for each object type. It validates the data object with the object definition during various CRUD operations.

    Knowlg : Platform Telemetry (platform-telemetry)

    This is used by the inQuiry API services to sent send the telemetry events

    This encapsulates the functionalities capturing the telemetry events.

    Sunbird to Obsrv service which stores all the event data.

    Telemetry events data provides insights on how the system is being used.

    ED : Client Services

    Typescript Library used to create API calls with Sunbird Environment. Includes necessary typescript code to do search, content read, corresponding data models of the platform are available.

    https://github.com/Sunbird-Ed/sunbird-client-services

    In order to facilitate Adopters to connect with Sunbird System. Typescript based library to connect with APIs. It can facilitate the adopters with readily available data models.

    inQuiry is using this client services only for making the telemetry API calls. This is reused across different building blocks. Helps with wrapper services which otherwise will have to be written by different parties.

    Sunbird Telemetry : Telemetry SDK

    Info

    This is a dependency for Sunbird : Client Services

    An open specification for recording and measuring statistical data from real-world use of digital apps & platforms. Details here

    The objective of telemetry is to assist in product, application or service development, modification or security. It works as a framework. Telemetry enables automatic collection of data from real-world, real-time use. Details here

    Sunbird ED: sbSB-stylesStyles

    Core Styling of Sunbird Products are present in this repository. CSS implementation for containers, grids.

    https://github.com/Sunbird-Ed/sb-styles

    Consists of Basic Styles which are commonly used across Consumption Clients.

    Obsrv : Services

    Info

    The telemetry service is passing the telemetry events to Obsrv.

    Sunbird Obsrv is a combination of various tools which provide the capabilities such as streaming, processing and storage of telemetry data and deriving reporting insights from the data.

    Sunbird Obsrv comprises several pluggable tools and microservies that come together to enable observability features on any platform/solution.

    No direct API calls from front-end clients or inQuiry micro service. The telemetry service is passing the telemetry events to Obsrv through a series of data-pipelines.

    Knowlg : Platform DB Extensions

    Info

    Neo4J plugin

    Synch Neo4J data to Elastic Search

    https://github.com/Sunbird-Knowlg/knowledge-platform-db-extensions

    The data that is stored in Graph DB (Neo4J) needs to be made available in ElasticSearch for search functionalities.

    High Level flow goes like,

    • Write all Neo4J transactions to log files (in a particular format)

    • Logstash picks up this files and sends to Kafka

    • Kafka Consumer (a flink job) reads the message and writes to Elastic Search

    Internal Components

    Info

    The internal components that inQuiry needs to function (that is owned and operated by inQuiry)

    Name of the component

    What does it do?

    Tech Stack

    Why it is needed?

    inQuiry : QuML Editor

    Question set editor is a tool offered by inQuiry to help you kickstart your creation of Question Banks

    https://inquiry.sunbird.org/learn/capabilities-1

    Angular / HTML5 / CSS

    This is used for creating the question banks.

    Editor is available as Angular Library and Web Component.

    Web component for the usage in an framework agnostic fashion.

    Benefits of using Angular,

    • TypeScript

    • Declarative UI

    • PWA and SPA

    • Simplified MVC Pattern

    • Modular Structure

    • Code Consistency and Easy Testing

    inQuiry : QuML Player

    Question set player is a player provided by inQuiry to create engaging & inclusive experiences for end users consuming the question sets.

    Angular / HTML5 / CSS

    This is used for playing the questions from question banks

    Web component for the usage in an framework agnostic fashion.

    Benefits of using Angular,

    • TypeScript

    • Declarative UI

    • PWA and SPA

    • Simplified MVC Pattern

    • Modular Structure

    • Code Consistency and Easy Testing

    inQuiry : Resource Library

    Provides reusable UI and functionality for,

    • Searching questions based on taxonomy

    • Adding Question to QuestionSet from Question Library

    https://github.com/Sunbird-inQuiry/sunbird-resource-library

    Angular / HTML5 / CSS

    Reusable library for,

    • Searching questions based on taxonomy

    • Adding Question to QuestionSet from Question Library

    Action Item

    inQuiry : inQuiry Services (API)

    Question and Question set service is a micro-service which provides APIs to manage the lifecycle and workflows of creation and consumption of question & question set objects.

    Play Framework

    Scala

    It enables the question(s) and question set(s) creation, review and publishing process.

    The existing monolith (Spring MVC) was migrated to micro services using Play Framework with the benefits of,

    • Easy to build web applications with Java & Scala

    • Proven in production

    • Scale predictably

    • Non-blocking I/O

    • Built on Akka

    • Solid & fast

    inQuiry : QuML Specification

    Question Markup Language (​QuML in short) is a specification for storage, rendering and distribution of Questions and Tests

    JSON

    QuML defines a standard format for representation of questions, tests and their results, supporting the exchange of this material between authoring and delivery systems, repositories and other e-learning systems.

    References