datasynth_eval/process_mining/
mod.rs1pub mod event_sequence;
7pub mod variant_analysis;
8
9pub use event_sequence::{EventSequenceAnalysis, EventSequenceAnalyzer, ProcessEventData};
10pub use variant_analysis::{VariantAnalysis, VariantAnalyzer, VariantData};
11
12use serde::{Deserialize, Serialize};
13
14#[derive(Debug, Clone, Serialize, Deserialize)]
16pub struct ProcessMiningEvaluation {
17 pub event_sequence: Option<EventSequenceAnalysis>,
19 pub variants: Option<VariantAnalysis>,
21 pub passes: bool,
23 pub issues: Vec<String>,
25}
26
27impl ProcessMiningEvaluation {
28 pub fn new() -> Self {
30 Self {
31 event_sequence: None,
32 variants: None,
33 passes: true,
34 issues: Vec::new(),
35 }
36 }
37
38 pub fn check_thresholds(&mut self) {
40 self.issues.clear();
41 if let Some(ref es) = self.event_sequence {
42 if !es.passes {
43 self.issues.extend(es.issues.clone());
44 }
45 }
46 if let Some(ref va) = self.variants {
47 if !va.passes {
48 self.issues.extend(va.issues.clone());
49 }
50 }
51 self.passes = self.issues.is_empty();
52 }
53}
54
55impl Default for ProcessMiningEvaluation {
56 fn default() -> Self {
57 Self::new()
58 }
59}