Asset Workflow Boundaries
Summary
The workflow integration is an HTTP request/response and callback boundary, not an event boundary. It is documented here to keep it clearly separated from the asset event model.
Audience
Engineering, integration, QA, architecture, and security reviewers.
Reference Content
Not an event
Asset approval workflow interactions are HTTP calls, not integration events. No workflow-related integration contract is produced or consumed by asset-service. This section exists so the boundary is not mistaken for eventing.
Outbound: starting a workflow
When workflow approval is enabled, WorkflowServiceClient (a typed HttpClient) calls the workflow service to start an instance, propagating tenant headers (TenantId, TenantKey, UserId, UserEmail) so the instance is created under the same tenant. A failure surfaces as a non-started result rather than an event.
Feature flag
Workflow approval is off by default. Program.cs reads ASSET_APPROVAL_USE_WORKFLOW (or the equivalent options section). When disabled, a NullWorkflowClient is registered and no workflow calls are made.
Inbound: workflow callback
The workflow service signals decisions back to asset-service via an HTTP callback endpoint (documented in the API section), not via an event the asset service subscribes to. A successful approval callback drives the aggregate to issue the asset, which in turn raises AssetAssignedDomainEvent and produces an AssetAssigned event through the normal outbox path. A rejection drives AssetRejectedDomainEvent.
So workflow interactions can trigger asset events indirectly, but the workflow leg itself is HTTP, not eventing.
Public-safety note
Service base addresses, headers values, and credentials are intentionally excluded.
Source References
microservices/src/asset-service/Infrastructure/WorkflowServiceClient.csmicroservices/src/asset-service/Program.csmicroservices/src/asset-service/Domain/Asset/Asset.cs
Related Articles
See Also
Keywords
- Workflow boundary
- HTTP callback
- Not an event
Revision Information
- Status: Draft
- Last reviewed: 2026-07-17
- Review cycle: Quarterly