1use actflow::{ChannelEvent, ChannelOptions, EngineBuilder, WorkflowModel};
2
3fn main() {
4 let engine = EngineBuilder::new().build().unwrap();
5
6 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 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}