Document toolboxDocument toolbox

Cinnamon Reporting Technological Architecture

Goals

Cinnamon Reporting has been newly implemented with the following goals

Goal

Description

Example

Goal

Description

Example

“Web-first”

  • using JavaScript technologies and libraries allows for isomorphic code that can run on the server as well as in the user’s browser

  • chart engine is based on d3.js / vega.js and all charts are rendered exactly the same way for online reports (in the brower) as for PDF reports (on the server)

  • Cinnamon’s reporting logic (segmentations, translations) is written in TypeScript and therefore can be run both on the server and in the browser as well

Scalability

  • using node.js as our server platform allows for scalability

  • our reporting services are designed to run as microservices

    • separating the services for general reporting productions, word/pdf rendering and portal services

    • use of streaming software to decouple services

  • use of caching for all data sources to improve performance

  • PM2 or kubernetes clusters

  • redis streams

  • redis caching

Open source

  • all features are based on open-source libraries (where enterprise-grade is available)

  • only mandatory comercial software is Aspose.Words for PDF-reporting

  • node.js, express.js

  • redis

Independence of data source technologies

  • main access to data sources is via REST API’s

  • preference for document databases as data/document store

  • mongoDB

Overview

 

List of Cinnamon Reporting Services and Components

Service / Component

Description

Technologies

Service / Component

Description

Technologies

Report Production Service

  • Mass-customisation of reports through flexible report types defined on the basis of intelligent, re-useable building blocks & powerful parametrisation

  • Supports business users to manage report types, translations, product/client group parameter profiles, etc. via diverse UI’s

  • Node.js based microservices leveraging vast universe of open source packages:

  • Multiple options for document / object persistency:

 

 

 

  • Code-base in TypeScript allows sharing code between backend and browser:

 

  • Scalability through streaming and caching:

 

Scheduling Service

  • Data-driven report scheduling (based on availability of required data quality in data sources)

  • Can be triggered by external job scheduler

Portal Services

  • User security & session handling

  • User specific report catalog dynamically built from matching report executions

Chart Rendering Service

  • High-end chart visualisations rendered as vector graphics (SVG)

  • Customisable charting library ”machinata”

  • Leveraging best-of-class open source charting engines (d3.js, vega)

 

  • Code-base in JavaScript allows sharing same visualisations between backend and browser

Document Rendering Service

  • High-end document (pdf) rendering based on flexible templates leveraging the full layout power of Microsoft Word

  • Currently supported output formats are Microsoft Word (.docx), Microsoft Excel (.xlsx) and PDF documents

 

  • Java microservice based on Aspose.Words multi-platform word rendering engine

 

Cinnamon Browser Components

Web components for integration into custom portals supporting

  • catalog navigation (along portfolios, report types, reporting dates)

  • report visualisation, printing, full-screen presentations

  • user-defined dashboards showing report excerpts

  • React web components allowing for single page web applications

  • Code-base in TypeScript allows sharing code between backend and browser