#[derive(Debug, Clone)]
pub enum EngineEvent {
ProcessStarted(payloads::ProcessStarted),
TokenArrived(payloads::TokenArrived),
TokenCompleted(payloads::TokenCompleted),
UserTaskCreated(payloads::UserTaskCreated),
UserTaskCompleted(payloads::UserTaskCompleted),
TimerFired(payloads::TimerFired),
TimerScheduled(payloads::TimerScheduled),
TokenFailed(payloads::TokenFailed),
SagaStarted(payloads::SagaStarted),
SagaCompleted(payloads::SagaCompleted),
ProcessCompleted(payloads::ProcessCompleted),
}
pub mod payloads {
use std::collections::HashMap;
#[derive(Debug, Clone)]
pub struct ProcessStarted {
pub process_id: String,
pub instance_id: String,
}
#[derive(Debug, Clone)]
pub struct TokenArrived {
pub instance_id: String,
pub token_id: String,
pub node_id: String,
}
#[derive(Debug, Clone)]
pub struct TokenCompleted {
pub instance_id: String,
pub token_id: String,
}
#[derive(Debug, Clone)]
pub struct UserTaskCreated {
pub instance_id: String,
pub node_id: String,
}
#[derive(Debug, Clone)]
pub struct UserTaskCompleted {
pub task_id: String,
pub instance_id: String,
pub node_id: String,
pub variables: HashMap<String, String>,
}
#[derive(Debug, Clone)]
pub struct TimerFired {
pub timer_id: String,
pub token_id: String,
}
#[derive(Debug, Clone)]
pub struct TimerScheduled {
pub timer_id: String,
pub instance_id: String,
pub token_id: String,
pub node_id: String,
pub fire_at: u64,
}
#[derive(Debug, Clone)]
pub struct TokenFailed {
pub instance_id: String,
pub token_id: String,
pub node_id: String,
pub reason: String,
}
#[derive(Debug, Clone)]
pub struct SagaStarted {
pub instance_id: String,
pub token_id: String,
pub node_id: String,
}
#[derive(Debug, Clone)]
pub struct SagaCompleted {
pub instance_id: String,
pub token_id: String,
pub node_id: String,
}
#[derive(Debug, Clone)]
pub struct ProcessCompleted {
pub instance_id: String,
}
}