ores.workflow.core

Table of Contents

1. Diagram

ores.workflow.core component diagram

Figure 1: ores.workflow.core

2. Summary

ores.workflow.core provides workflow orchestration for ORE Studio. It manages workflow definitions (sequences of steps with preconditions and actions), execution instances (tracking progress and current state), and exposes NATS handlers for workflow management. Workflows coordinate multi-step operations such as report generation pipelines that span multiple services.

3. Inputs

  • NATS request messages for workflow definition CRUD and execution management.
  • PostgreSQL connections to ores_workflow_* tables.

4. Outputs

  • Workflow definition and execution records persisted to the ores_workflow schema.
  • NATS response messages returned to callers.

5. Entry points

  • include/ores.workflow.core/ores.workflow.core.hpp — aggregate include.
  • include/ores.workflow.core/messaging/registrar.hpp — registers handlers.

6. Dependencies

  • ores.workflow.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.
  • 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.workflow.api.lib
    PRIVATE
        ores.database.lib
        ores.utility.lib
        ores.service.lib
        ores.nats.lib
        ores.history.core.lib
        ores.dq.api.lib
        ores.dq.core.lib
        ores.iam.api.lib
        ores.ore.api.lib
        ores.refdata.api.lib
        ores.reporting.api.lib
        ores.telemetry.core.lib
        Boost::boost)

target_link_libraries(${lib_target_name} PRIVATE ores.codec.pch)
target_link_libraries(${tests_target_name}
    PRIVATE
        ${lib_target_name}
        ores.database.lib
        ores.eventing.api.lib
        ores.eventing.core.lib
        ores.nats.lib
        ores.security.lib
        ores.utility.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)