Core domain models: WorkflowInstance, ExecutionPointer, WorkflowDefinition, WorkflowStep, Event, EventSubscription, ScheduledCommand, ExecutionError, LifecycleEvent, PollEndpointConfig. All serde-serializable. Provider traits: PersistenceProvider (composite of WorkflowRepository, EventRepository, SubscriptionRepository, ScheduledCommandRepository), DistributedLockProvider, QueueProvider, SearchIndex, LifecyclePublisher, WorkflowMiddleware, StepMiddleware, WorkflowRegistry. StepBody trait with StepExecutionContext for workflow step implementations. WorkflowData marker trait (blanket impl for Serialize + DeserializeOwned).
10 lines
264 B
Rust
10 lines
264 B
Rust
use async_trait::async_trait;
|
|
|
|
use crate::models::LifecycleEvent;
|
|
|
|
/// Publishes lifecycle events for workflow state transitions.
|
|
#[async_trait]
|
|
pub trait LifecyclePublisher: Send + Sync {
|
|
async fn publish(&self, event: LifecycleEvent) -> crate::Result<()>;
|
|
}
|