This conformance approach uses a descriptive model (i.e., a pattern of the observed behavior over a certain amount of time) which is not necessarily referring to the control-flow (e.g., it can be based on the social network of handover of work). To create such a model you need to specify the states and the probability of transitioning. Additionally, it is necessary to specify the likelihood of a random walk (i.e., the parameter α):
PDFAreference=...;intmaxCasesToStore=1000;// max expected number of parallel process instancesPDFAConformanceconformance=newPDFAConformance(reference,maxCasesToStore);StreamExecutionEnvironmentenv=StreamExecutionEnvironment.getExecutionEnvironment();env.addSource(source).keyBy(BEvent::getTraceName).flatMap(conformance).addSink(newSinkFunction<SoftConformanceReport>(){publicvoidinvoke(SoftConformanceReportvalue)throwsException{for(StringcaseId:value.keySet()){System.out.println("Case: "+caseId+"\t"+"soft conformance: "+value.get(caseId).getSoftConformance()+"\t"+"mean of probs: "+value.get(caseId).getMeanProbabilities());}};});env.execute();
It is worth highlighting that since each trace can be processed independently from the others, it is possible to increase the parallelism by keying the stream based on the case identifier (BEvent::getTraceName, line 16).
Scientific literature
The techniques implemented in this package are described in: