Skip to main content
Skip table of contents

Cinnamon Reporting Technological Architecture

Goals

Cinnamon Reporting has been newly implemented with the following goals

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

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”

by Nerves

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

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

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.