Skip to main content

temporalio_client/
workflow_status.rs

1use temporalio_common::protos::temporal::api::enums::v1::WorkflowExecutionStatus as ProtoWorkflowExecutionStatus;
2
3/// The lifecycle status of a workflow execution.
4#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
5#[non_exhaustive]
6pub enum WorkflowExecutionStatus {
7    /// No status was specified.
8    Unspecified,
9    /// The workflow is running.
10    Running,
11    /// The workflow completed successfully.
12    Completed,
13    /// The workflow failed.
14    Failed,
15    /// The workflow was canceled.
16    Canceled,
17    /// The workflow was terminated.
18    Terminated,
19    /// The workflow continued as new.
20    ContinuedAsNew,
21    /// The workflow timed out.
22    TimedOut,
23    /// The workflow is paused.
24    Paused,
25    /// A status introduced by a newer server or API version.
26    Unknown,
27}
28
29impl WorkflowExecutionStatus {
30    pub(crate) fn from_raw(value: i32) -> Self {
31        match ProtoWorkflowExecutionStatus::try_from(value) {
32            Ok(ProtoWorkflowExecutionStatus::Unspecified) => Self::Unspecified,
33            Ok(ProtoWorkflowExecutionStatus::Running) => Self::Running,
34            Ok(ProtoWorkflowExecutionStatus::Completed) => Self::Completed,
35            Ok(ProtoWorkflowExecutionStatus::Failed) => Self::Failed,
36            Ok(ProtoWorkflowExecutionStatus::Canceled) => Self::Canceled,
37            Ok(ProtoWorkflowExecutionStatus::Terminated) => Self::Terminated,
38            Ok(ProtoWorkflowExecutionStatus::ContinuedAsNew) => Self::ContinuedAsNew,
39            Ok(ProtoWorkflowExecutionStatus::TimedOut) => Self::TimedOut,
40            Ok(ProtoWorkflowExecutionStatus::Paused) => Self::Paused,
41            Err(_) => Self::Unknown,
42        }
43    }
44}
45
46impl From<ProtoWorkflowExecutionStatus> for WorkflowExecutionStatus {
47    fn from(value: ProtoWorkflowExecutionStatus) -> Self {
48        Self::from_raw(value as i32)
49    }
50}