use snurr::{Eventhandler, Process};
extern crate pretty_env_logger;
#[derive(Debug, Default)]
struct Counter {
count: u32,
}
fn main() -> Result<(), Box<dyn std::error::Error>> {
pretty_env_logger::init();
let bpmn = Process::new("examples/example.bpmn")?;
let mut handler: Eventhandler<Counter> = Eventhandler::default();
handler.add_task("Count 1", |input| {
input.lock().unwrap().count += 1;
None
});
handler.add_gateway("equal to 3", |input| {
let result = if input.lock().unwrap().count == 3 {
"YES"
} else {
"NO"
};
result.into()
});
let pr = bpmn.run(&handler, Counter::default())?;
println!("Result: {:?}", pr.result);
Ok(())
}