Backport generic improvements from Serdica workflow engine to StellaOps: Abstractions: - Add IWorkflowActorRoleResolver interface and NullWorkflowActorRoleResolver default implementation for server-side actor identity resolution - Add expression-based Call overloads to WorkflowFlowBuilder (6 new methods accepting WorkflowExpressionDefinition for payload instead of Func<> factory) - Fix failure handler compilation: preserve empty handlers (0 steps) as empty sequences instead of null, allowing "ignore failure and continue" semantics - Add explanatory comments to WorkflowRegistrationAbstractions for JSON number normalization logic Contracts: - Add NextTasks and WorkflowState to StartWorkflowResponse so callers can see immediate next tasks after starting a workflow - Add WorkflowInstanceId, NextTasks, and WorkflowState to WorkflowTaskCompleteResponse for richer task completion feedback Transport: verified Transport.GraphQL, Transport.Http, Transport.Microservice, and Transport.LegacyRabbit are engine-embedded plugins (no separate directories to add/remove). ElkSharp library confirmed present at src/__Libraries/. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Workflow
Container(s): stellaops-workflow Slot: (compose inline) | Port: 8080 | Consumer Group: workflow Resource Tier: medium
Purpose
The Workflow Engine provides a general-purpose workflow runtime for orchestrating multi-step release and operational processes. It supports workflow definition deployment, runtime execution, signal-driven task transitions, dead-letter handling, and authorization-gated task progression. It is the backbone for release promotion workflows.
API Surface
workflow(via Router) — workflow definition CRUD, instance lifecycle (start/signal/cancel), task queries, dead-letter management, projection queries (/api/workflowprefix)
Storage
PostgreSQL schema workflow (via ConnectionStrings:WorkflowPostgres, WorkflowBackend:Postgres)
Background Workers
- Signal pump hosted service — processes workflow signals from the event bus
- Retention hosted service — cleans up completed workflow instances
WorkflowDefinitionBootstrap— deploys built-in workflow definitions on startup