Skip to content

How Neops operates

Neops separates data management from workflow execution. The CMS is the source of truth for entity data, while the workflow engine orchestrates changes as workflows and persists execution state. Workers run the actual function blocks and communicate through the blackboard, which is the engine's job queue.

The blackboard is implemented inside the workflow engine (database tables + REST endpoints). Workers poll it for jobs and push results back.

Core components

  • User: Reads entity data and triggers workflows.
  • neops-cms: Stores entities and exposes them via APIs.
  • neops-workflow-engine: Orchestrates workflows and manages execution state.
  • neops-blackboard: The job queue used by the engine and workers.
  • neops-worker: Executes function blocks and reports results.
  • database: Persists workflow executions, jobs, and results.

Overview: Read path (User ↔ CMS)

sequenceDiagram
    actor User
    participant CMS as neops-cms

    User->>CMS: Read entities & facts
    CMS-->>User: Entity data

Overview: Write path (Workflow execution)

sequenceDiagram
    actor User
    participant CMS as neops-cms
    participant Engine as neops-workflow-engine

    User->>Engine: Execute workflow
    Engine->>CMS: Acquire entities & lock
    CMS-->>Engine: Locked entity data
    Engine->>CMS: Apply entity updates

Execution flow (Engine, Blackboard, Worker)

sequenceDiagram
    actor User
    participant CMS as neops-cms
    participant Engine as neops-workflow-engine
    participant BB as neops-blackboard
    participant Worker as neops-worker

    User->>CMS: Read entities & facts
    CMS-->>User: Entity data

    User->>Engine: Create/update workflows<br/>Execute workflow
    Engine->>CMS: Acquire entities & lock
    CMS-->>Engine: Locked entity data
    Engine->>BB: Create jobs for steps

    Worker->>BB: Poll for jobs
    BB-->>Worker: Assign job
    Worker->>BB: Push results

    BB-->>Engine: Job results
    Engine->>CMS: Apply entity updates

See also