ores.reporting.core

Table of Contents

1. Diagram

ores.reporting.core component diagram

Figure 1: ores.reporting.core

2. Summary

ores.reporting.core manages the report lifecycle in ORE Studio: report-type definitions (e.g., NPV cube, trade cashflows, XVA), parameterised report definitions, execution instances with concurrency policies, and run history. It exposes NATS handlers for report CRUD and triggering ORE risk runs, and persists all report metadata to the ores_reporting schema.

3. Inputs

  • NATS request messages for report-type, definition, and instance management.
  • PostgreSQL connections to ores_reporting_* tables.
  • ORE risk-engine invocations triggered by the scheduler or client requests.

4. Outputs

  • Report-definition and run-instance records persisted to the ores_reporting schema.
  • ORE output files (NPV cube, cashflows) made available to UI clients.
  • NATS response messages returned to callers.

5. Entry points

  • include/ores.reporting.core/ores.reporting.core.hpp — aggregate include.
  • include/ores.reporting.core/messaging/registrar.hpp — registers all NATS handlers with the service host.
  • include/ores.reporting.core/service/ — per-entity service headers.

6. Dependencies

  • ores.reporting.api — shared domain types and NATS protocol schemas.
  • ores.dq — ORM base classes and persistence infrastructure.
  • ores.iam.core — identity and authorisation context.
  • soci — SQL ORM for PostgreSQL persistence.
  • nats.c — NATS messaging client.

7. Build dependencies

What the shared profile cannot know, declared here rather than hand-edited into the generated build file. Each block is spliced into its generated file after the profile's baseline.

8. See also

9. Test dependencies

The suites link what the profile cannot know about.

target_link_libraries(${lib_target_name}
    PUBLIC
        ores.reporting.api.lib
        ores.database.lib
        ores.logging.lib
        ores.nats.lib
        ores.scheduler.api.lib
        ores.service.lib
    PRIVATE
        ores.compute.api.lib
        ores.diff.lib
        ores.dq.api.lib
        ores.history.core.lib
        ores.iam.api.lib
        ores.iam.client.lib
        ores.marketdata.api.lib
        ores.ore.core.lib
        ores.platform.lib
        ores.storage.api.lib
        ores.storage.core.lib
        ores.trading.api.lib
        ores.utility.lib
        ores.workflow.core.lib
        ores.security.lib
        faker-cxx::faker-cxx
        libfort::fort
        Boost::boost
        Boost::json)
target_link_libraries(${tests_target_name}
    PRIVATE
        ${lib_target_name}
        ores.ore.core.lib
        ores.reporting.service.lib
        ores.inbox.api.lib
        ores.inbox.core.lib
        ores.refdata.api.lib
        ores.iam.api.lib
        ores.iam.core.lib
        ores.eventing.core.lib
        ores.nats.lib
        ores.refdata.core.lib
        ores.scheduler.core.lib
        ores.storage.api.lib
        ores.storage.core.lib
        ores.utility.lib
        ores.workflow.core.lib
        ores.testing.lib
        ores.logging.lib
        Catch2::Catch2
        faker-cxx::faker-cxx
        ores.openssl_cleanup
        Threads::Threads)

Emacs 29.3 (Org mode 9.6.15)