Skip to main content

acts_next/model/
mod.rs

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    /// trigger when task created
47    #[default]
48    Created,
49
50    /// trigger when task completed
51    Completed,
52
53    /// before act executing
54    BeforeUpdate,
55
56    /// trigger when act to update the state
57    /// based on Step node
58    Updated,
59
60    /// trigger when step move to next
61    /// based on Workflow node
62    Step,
63}