simple/
main.rs

1use actflow::{ChannelEvent, ChannelOptions, EngineBuilder, WorkflowModel};
2
3fn main() {
4    let engine = EngineBuilder::new().build().unwrap();
5
6    // Launch the engine
7    engine.launch();
8
9    let text = include_str!("./workflow.json");
10
11    let workflow_model = WorkflowModel::from_json(text).unwrap();
12
13    let process = engine.build_workflow_process(&workflow_model).unwrap();
14    let pid = process.id();
15
16    ChannelEvent::channel(engine.channel(), ChannelOptions::with_pid(pid.to_owned())).on_complete(move |pid| {
17        println!("Workflow completed, pid: {}", pid);
18    });
19
20    ChannelEvent::channel(engine.channel(), ChannelOptions::with_pid(pid.to_owned())).on_error(move |e| {
21        println!("Workflow failed: {:?}", e);
22    });
23
24    // Start the workflow process
25    process.start();
26
27    loop {
28        if process.is_complete() {
29            break;
30        }
31        std::thread::sleep(std::time::Duration::from_millis(100));
32    }
33
34    let outputs: serde_json::Value = process.get_outputs().into();
35    println!("Outputs: {:#?}", outputs);
36}