1mod act;
2mod branch;
3mod info;
4mod output;
5mod step;
6mod vars;
7mod workflow;
8
9#[cfg(test)]
10mod tests;
11
12pub use act::{Act, Catch, Retry, Timeout, TimeoutLimit};
13pub use branch::Branch;
14pub use info::{EventInfo, MessageInfo, ModelInfo, PackageInfo, ProcInfo, TaskInfo};
15pub use output::{Output, OutputType, Outputs};
16pub use step::Step;
17pub use vars::Vars;
18pub use workflow::Workflow;
19
20use serde::{Deserialize, Serialize};
21pub trait ModelBase {
22 fn id(&self) -> &str;
23}
24
25pub trait StmtBuild<T> {
26 fn add(self, s: T) -> Self;
27 fn with<F: Fn(T) -> T>(self, build: F) -> Self
28 where
29 T: Default;
30}
31
32#[derive(
33 Serialize,
34 Deserialize,
35 Debug,
36 Clone,
37 Copy,
38 Default,
39 PartialEq,
40 strum::AsRefStr,
41 strum::EnumString,
42)]
43#[serde(rename_all = "snake_case")]
44#[strum(serialize_all = "snake_case")]
45pub enum ActEvent {
46 #[default]
48 Created,
49
50 Completed,
52
53 BeforeUpdate,
55
56 Updated,
59
60 Step,
63}