-
Notifications
You must be signed in to change notification settings - Fork 10
Running example
Download from the 4TU datacenter website the real-world event log of the Business Process Intelligence Challenge (BPIC) 2012. Let us consider this log to be saved under the path logs/BPIC2012/financial_log.xes.gz
.
To run MINERful, we locate our command shell in the working directory, and launch run-MINERful.sh
as follows.
./run-MINERful.sh --in-log-file logs/BPIC2012/financial_log.xes.gz --in-log-evt-classifier 'logspec' --support 0.95 --confidence 0.5 --interest-factor 0.125 --prune-with 'hierarchyconflictredundancydouble' --save-as-csv models/bpic2012-declarative-model.csv --save-as-xml models/bpic2012-declarative-model.xml --save-as-json models/bpic2012-declarative-model.json
Alternatively, short names for options can be used:
./run-MINERful.sh -iLF logs/BPIC2012/financial_log.xes.gz -iLClassif 'logspec' -s 0.95 -c 0.5 -i 0.125 -prune 'hierarchyconflictredundancydouble' -CSV models/bpic2012-declarative-model.csv -XML models/bpic2012-declarative-model.xml -JSON models/bpic2012-declarative-model.json
The mandatory --in-log
option locates the input event log. It should be in the XML-based XES format. The --evt-class
option dictates whether to consider as classifiers for events the sole activity names (default), or the pattern specified within the event log itself (in this case, the junction of activity name and lifecycle transition). The default thresholds for support, confidence level and interest factor of the returned constraints are by default 0.95, 0.25, and 0.125, respectively, but can be modified with the --support
, --confidence-level
, and --interest-factor
option. More information on these metrics and how they are computed can be found in the paper at DOI:10.1145/2629447. Some post-processing can be required to polish the returned set of constraints from redundancies or possible internal inconsistencies (the lower the thresholds, the higher their amount). Here we select the most effective and time consuming strategy, that is to say, the double-pass hierarchyconflictredundancydouble
. The --save-as-csv
, save-as-xml
, and save-as-json
state where the CSV, XML, and JSON versions of the discovered constraints should be saved. The CSV file should show something like this:
Constraint | Template | Activation | Target | Support | Confidence level | Interest factor |
---|---|---|---|---|---|---|
AlternatePrecedence(A_PARTLYSUBMITTED+COMPLETE, A_ACCEPTED+COMPLETE) | AlternatePrecedence | A_ACCEPTED+COMPLETE | A_PARTLYSUBMITTED+COMPLETE | 1 | 1 | 0.391 |
AlternatePrecedence(W_Completeren aanvraag+START, A_ACCEPTED+COMPLETE) | AlternatePrecedence | A_ACCEPTED+COMPLETE | W_Completeren aanvraag+START | 1 | 0.563 | 0.22 |
AlternatePrecedence(A_PARTLYSUBMITTED+COMPLETE, A_ACTIVATED+COMPLETE) | AlternatePrecedence | A_ACTIVATED+COMPLETE | A_PARTLYSUBMITTED+COMPLETE | 1 | 1 | 0.172 |
AlternatePrecedence(A_PARTLYSUBMITTED+COMPLETE, A_APPROVED+COMPLETE) | AlternatePrecedence | A_APPROVED+COMPLETE | A_PARTLYSUBMITTED+COMPLETE | 1 | 1 | 0.172 |
AlternatePrecedence(A_PARTLYSUBMITTED+COMPLETE, A_CANCELLED+COMPLETE) | AlternatePrecedence | A_CANCELLED+COMPLETE | A_PARTLYSUBMITTED+COMPLETE | 1 | 1 | 0.214 |
AtMostOne(A_DECLINED+COMPLETE) | AtMostOne | A_DECLINED+COMPLETE | 1 | 0.583 | 0.34 | |
NotSuccession(A_DECLINED+COMPLETE, W_Completeren aanvraag+START) | NotSuccession | A_DECLINED+COMPLETE | W_Completeren aanvraag+START | 1 | 0.563 | 0.328 |
AlternatePrecedence(A_PARTLYSUBMITTED+COMPLETE, A_FINALIZED+COMPLETE) | AlternatePrecedence | A_FINALIZED+COMPLETE | A_PARTLYSUBMITTED+COMPLETE | 1 | 1 | 0.383 |
AlternatePrecedence(W_Completeren aanvraag+START, A_FINALIZED+COMPLETE) | AlternatePrecedence | A_FINALIZED+COMPLETE | W_Completeren aanvraag+START | 1 | 0.563 | 0.216 |
AtMostOne(A_PARTLYSUBMITTED+COMPLETE) | AtMostOne | A_PARTLYSUBMITTED+COMPLETE | 1 | 1 | 1 | |
Succession(A_PREACCEPTED+COMPLETE, W_Completeren aanvraag+COMPLETE) | Succession | A_PREACCEPTED+COMPLETE | W_Completeren aanvraag+COMPLETE | 1 | 0.563 | 0.317 |
CoExistence(A_PREACCEPTED+COMPLETE, W_Completeren aanvraag+SCHEDULE) | CoExistence | A_PREACCEPTED+COMPLETE | W_Completeren aanvraag+SCHEDULE | 1 | 0.563 | 0.317 |
ChainResponse(A_PREACCEPTED+COMPLETE, W_Completeren aanvraag+SCHEDULE) | ChainResponse | A_PREACCEPTED+COMPLETE | W_Completeren aanvraag+SCHEDULE | 1 | 0.563 | 0.317 |
AlternatePrecedence(A_PARTLYSUBMITTED+COMPLETE, A_REGISTERED+COMPLETE) | AlternatePrecedence | A_REGISTERED+COMPLETE | A_PARTLYSUBMITTED+COMPLETE | 1 | 1 | 0.172 |
Init(A_SUBMITTED+COMPLETE) | Init | A_SUBMITTED+COMPLETE | 1 | 1 | 1 | |
ChainSuccession(A_SUBMITTED+COMPLETE, A_PARTLYSUBMITTED+COMPLETE) | ChainSuccession | A_SUBMITTED+COMPLETE | A_PARTLYSUBMITTED+COMPLETE | 1 | 1 | 1 |
AlternatePrecedence(A_PARTLYSUBMITTED+COMPLETE, O_ACCEPTED+COMPLETE) | AlternatePrecedence | O_ACCEPTED+COMPLETE | A_PARTLYSUBMITTED+COMPLETE | 1 | 1 | 0.171 |
Precedence(W_Completeren aanvraag+START, O_CREATED+COMPLETE) | Precedence | O_CREATED+COMPLETE | W_Completeren aanvraag+START | 1 | 0.563 | 0.216 |
Precedence(W_Completeren aanvraag+START, O_SELECTED+COMPLETE) | Precedence | O_SELECTED+COMPLETE | W_Completeren aanvraag+START | 1 | 0.563 | 0.216 |
Precedence(W_Completeren aanvraag+START, O_SENT+COMPLETE) | Precedence | O_SENT+COMPLETE | W_Completeren aanvraag+START | 1 | 0.563 | 0.216 |
Precedence(W_Completeren aanvraag+COMPLETE, O_SENT_BACK+COMPLETE) | Precedence | O_SENT_BACK+COMPLETE | W_Completeren aanvraag+COMPLETE | 1 | 0.563 | 0.14 |
NotChainSuccession(W_Completeren aanvraag+COMPLETE, A_DECLINED+COMPLETE) | NotChainSuccession | W_Completeren aanvraag+COMPLETE | A_DECLINED+COMPLETE | 1 | 0.563 | 0.328 |
Precedence(W_Completeren aanvraag+START, W_Completeren aanvraag+COMPLETE) | Precedence | W_Completeren aanvraag+COMPLETE | W_Completeren aanvraag+START | 1 | 0.563 | 0.317 |
AtMostOne(W_Completeren aanvraag+SCHEDULE) | AtMostOne | W_Completeren aanvraag+SCHEDULE | 1 | 0.563 | 0.317 | |
NotSuccession(W_Completeren aanvraag+START, A_PREACCEPTED+COMPLETE) | NotSuccession | W_Completeren aanvraag+START | A_PREACCEPTED+COMPLETE | 1 | 0.563 | 0.317 |
Response(W_Completeren aanvraag+START, W_Completeren aanvraag+COMPLETE) | Response | W_Completeren aanvraag+START | W_Completeren aanvraag+COMPLETE | 1 | 0.563 | 0.317 |
Precedence(W_Completeren aanvraag+COMPLETE, W_Nabellen offertes+COMPLETE) | Precedence | W_Nabellen offertes+COMPLETE | W_Completeren aanvraag+COMPLETE | 1 | 0.563 | 0.216 |
Precedence(W_Completeren aanvraag+START, W_Nabellen offertes+SCHEDULE) | Precedence | W_Nabellen offertes+SCHEDULE | W_Completeren aanvraag+START | 1 | 0.563 | 0.216 |
Precedence(W_Completeren aanvraag+COMPLETE, W_Nabellen offertes+START) | Precedence | W_Nabellen offertes+START | W_Completeren aanvraag+COMPLETE | 1 | 0.563 | 0.215 |
Precedence(W_Completeren aanvraag+COMPLETE, W_Valideren aanvraag+COMPLETE) | Precedence | W_Valideren aanvraag+COMPLETE | W_Completeren aanvraag+COMPLETE | 1 | 0.563 | 0.138 |
Precedence(W_Completeren aanvraag+COMPLETE, W_Valideren aanvraag+SCHEDULE) | Precedence | W_Valideren aanvraag+SCHEDULE | W_Completeren aanvraag+COMPLETE | 1 | 0.563 | 0.14 |
Precedence(W_Completeren aanvraag+COMPLETE, W_Valideren aanvraag+START) | Precedence | W_Valideren aanvraag+START | W_Completeren aanvraag+COMPLETE | 1 | 0.563 | 0.138 |
The JSON version of the model would look like follows:
{
"name": "Process model discovered out of financial_log.xes.gz",
"tasks": ["W_Completeren aanvraag+COMPLETE", "W_Beoordelen fraude+START", "A_PARTLYSUBMITTED+COMPLETE", "A_PREACCEPTED+COMPLETE", "W_Completeren aanvraag+START", "O_SENT_BACK+COMPLETE", "O_SENT+COMPLETE", "A_ACTIVATED+COMPLETE", "W_Nabellen incomplete dossiers+START", "O_CANCELLED+COMPLETE", "A_SUBMITTED+COMPLETE", "O_SELECTED+COMPLETE", "W_Afhandelen leads+SCHEDULE", "A_REGISTERED+COMPLETE", "W_Nabellen offertes+SCHEDULE", "W_Nabellen offertes+COMPLETE", "A_DECLINED+COMPLETE", "W_Nabellen incomplete dossiers+SCHEDULE", "W_Beoordelen fraude+COMPLETE", "W_Wijzigen contractgegevens+SCHEDULE", "O_CREATED+COMPLETE", "W_Valideren aanvraag+SCHEDULE", "O_ACCEPTED+COMPLETE", "W_Afhandelen leads+COMPLETE", "A_ACCEPTED+COMPLETE", "A_APPROVED+COMPLETE", "A_CANCELLED+COMPLETE", "W_Valideren aanvraag+START", "W_Afhandelen leads+START", "W_Valideren aanvraag+COMPLETE", "W_Nabellen offertes+START", "A_FINALIZED+COMPLETE", "W_Beoordelen fraude+SCHEDULE", "W_Completeren aanvraag+SCHEDULE", "W_Nabellen incomplete dossiers+COMPLETE", "O_DECLINED+COMPLETE"],
"constraints": [{
"template": "Precedence",
"parameters": [
["W_Completeren aanvraag+COMPLETE"],
["W_Valideren aanvraag+COMPLETE"]
],
"support": 1.0,
"confidence": 0.5629250401161459,
"interestFactor": 0.13803212758712555
},
{
"template": "Precedence",
"parameters": [
["W_Completeren aanvraag+START"],
["O_CREATED+COMPLETE"]
],
"support": 1.0,
"confidence": 0.5628486284098724,
"interestFactor": 0.21568624371326583
},
{
"template": "Precedence",
"parameters": [
["W_Completeren aanvraag+COMPLETE"],
["W_Nabellen offertes+START"]
],
"support": 1.0,
"confidence": 0.5629250401161459,
"interestFactor": 0.2153283984734031
},
{
"template": "Precedence",
"parameters": [
["W_Completeren aanvraag+START"],
["W_Nabellen offertes+SCHEDULE"]
],
"support": 1.0,
"confidence": 0.5628486284098724,
"interestFactor": 0.21568624371326583
},
{
"template": "NotSuccession",
"parameters": [
["W_Completeren aanvraag+START"],
["A_PREACCEPTED+COMPLETE"]
],
"support": 1.0,
"confidence": 0.5628486284098724,
"interestFactor": 0.31684158672694507
},
{
"template": "AlternatePrecedence",
"parameters": [
["A_PARTLYSUBMITTED+COMPLETE"],
["A_CANCELLED+COMPLETE"]
],
"support": 1.0,
"confidence": 1.0,
"interestFactor": 0.21448765950943682
},
{
"template": "AlternatePrecedence",
"parameters": [
["W_Completeren aanvraag+START"],
["A_FINALIZED+COMPLETE"]
],
"support": 1.0,
"confidence": 0.5628486284098724,
"interestFactor": 0.21568624371326583
},
{
"template": "AtMostOne",
"parameters": [
["W_Completeren aanvraag+SCHEDULE"]
],
"support": 0.9996943531749064,
"confidence": 0.5627529838648687,
"interestFactor": 0.316787746017612
},
{
"template": "Precedence",
"parameters": [
["W_Completeren aanvraag+COMPLETE"],
["O_SENT_BACK+COMPLETE"]
],
"support": 1.0,
"confidence": 0.5629250401161459,
"interestFactor": 0.13996776041399392
},
{
"template": "NotChainSuccession",
"parameters": [
["W_Completeren aanvraag+COMPLETE"],
["A_DECLINED+COMPLETE"]
],
"support": 1.0,
"confidence": 0.5629250401161459,
"interestFactor": 0.32841236962533604
},
{
"template": "Precedence",
"parameters": [
["W_Completeren aanvraag+START"],
["W_Completeren aanvraag+COMPLETE"]
],
"support": 0.9999582759627822,
"confidence": 0.5628251440927526,
"interestFactor": 0.31682836681678833
},
{
"template": "CoExistence",
"parameters": [
["A_PREACCEPTED+COMPLETE"],
["W_Completeren aanvraag+SCHEDULE"]
],
"support": 1.0,
"confidence": 0.5629250401161459,
"interestFactor": 0.31688460078976444
},
{
"template": "Init",
"parameters": [
["A_SUBMITTED+COMPLETE"]
],
"support": 1.0,
"confidence": 1.0,
"interestFactor": 1.0
},
{
"template": "AlternatePrecedence",
"parameters": [
["A_PARTLYSUBMITTED+COMPLETE"],
["A_ACTIVATED+COMPLETE"]
],
"support": 1.0,
"confidence": 1.0,
"interestFactor": 0.17162069229005883
},
{
"template": "AtMostOne",
"parameters": [
["A_PARTLYSUBMITTED+COMPLETE"]
],
"support": 1.0,
"confidence": 1.0,
"interestFactor": 1.0
},
{
"template": "ChainResponse",
"parameters": [
["A_PREACCEPTED+COMPLETE"],
["W_Completeren aanvraag+SCHEDULE"]
],
"support": 1.0,
"confidence": 0.5629250401161459,
"interestFactor": 0.31688460078976444
},
{
"template": "Precedence",
"parameters": [
["W_Completeren aanvraag+COMPLETE"],
["W_Nabellen offertes+COMPLETE"]
],
"support": 1.0,
"confidence": 0.5629250401161459,
"interestFactor": 0.21554346878749955
},
{
"template": "AlternatePrecedence",
"parameters": [
["A_PARTLYSUBMITTED+COMPLETE"],
["O_ACCEPTED+COMPLETE"]
],
"support": 1.0,
"confidence": 1.0,
"interestFactor": 0.1713914571712386
},
{
"template": "Precedence",
"parameters": [
["W_Completeren aanvraag+START"],
["O_SELECTED+COMPLETE"]
],
"support": 1.0,
"confidence": 0.5628486284098724,
"interestFactor": 0.21568624371326583
},
{
"template": "NotSuccession",
"parameters": [
["A_DECLINED+COMPLETE"],
["W_Completeren aanvraag+START"]
],
"support": 1.0,
"confidence": 0.5628486284098724,
"interestFactor": 0.3283677907778234
},
{
"template": "Precedence",
"parameters": [
["W_Completeren aanvraag+COMPLETE"],
["W_Valideren aanvraag+START"]
],
"support": 1.0,
"confidence": 0.5629250401161459,
"interestFactor": 0.13798911352430626
},
{
"template": "ChainSuccession",
"parameters": [
["A_SUBMITTED+COMPLETE"],
["A_PARTLYSUBMITTED+COMPLETE"]
],
"support": 1.0,
"confidence": 1.0,
"interestFactor": 1.0
},
{
"template": "AlternatePrecedence",
"parameters": [
["A_PARTLYSUBMITTED+COMPLETE"],
["A_APPROVED+COMPLETE"]
],
"support": 1.0,
"confidence": 1.0,
"interestFactor": 0.17162069229005883
},
{
"template": "AlternatePrecedence",
"parameters": [
["A_PARTLYSUBMITTED+COMPLETE"],
["A_FINALIZED+COMPLETE"]
],
"support": 1.0,
"confidence": 1.0,
"interestFactor": 0.3832047069611064
},
{
"template": "AlternatePrecedence",
"parameters": [
["A_PARTLYSUBMITTED+COMPLETE"],
["A_REGISTERED+COMPLETE"]
],
"support": 1.0,
"confidence": 1.0,
"interestFactor": 0.17162069229005883
},
{
"template": "AtMostOne",
"parameters": [
["A_DECLINED+COMPLETE"]
],
"support": 1.0,
"confidence": 0.5834033773974172,
"interestFactor": 0.34035950075871324
},
{
"template": "AlternatePrecedence",
"parameters": [
["W_Completeren aanvraag+START"],
["A_ACCEPTED+COMPLETE"]
],
"support": 1.0,
"confidence": 0.5628486284098724,
"interestFactor": 0.2199010496721691
},
{
"template": "Response",
"parameters": [
["W_Completeren aanvraag+START"],
["W_Completeren aanvraag+COMPLETE"]
],
"support": 1.0,
"confidence": 0.5628486284098724,
"interestFactor": 0.31684158672694507
},
{
"template": "AlternatePrecedence",
"parameters": [
["A_PARTLYSUBMITTED+COMPLETE"],
["A_ACCEPTED+COMPLETE"]
],
"support": 1.0,
"confidence": 1.0,
"interestFactor": 0.3906930541758997
},
{
"template": "Precedence",
"parameters": [
["W_Completeren aanvraag+COMPLETE"],
["W_Valideren aanvraag+SCHEDULE"]
],
"support": 1.0,
"confidence": 0.5629250401161459,
"interestFactor": 0.13996776041399392
},
{
"template": "Succession",
"parameters": [
["A_PREACCEPTED+COMPLETE"],
["W_Completeren aanvraag+COMPLETE"]
],
"support": 1.0,
"confidence": 0.5629250401161459,
"interestFactor": 0.31688460078976444
},
{
"template": "Precedence",
"parameters": [
["W_Completeren aanvraag+START"],
["O_SENT+COMPLETE"]
],
"support": 1.0,
"confidence": 0.5628486284098724,
"interestFactor": 0.21568624371326583
}
]
}
To speed up the post-processing, other techniques than hierarchyconflictredundancydouble
(say, hierarchyconflictredundancy
, or just hierarchy
, the default) can be used. However, this implies less accuracy in the detection (and removal) of the redundant constraints. Generally, the mining per se is very fast. The post-processing takes most of the computation time.
To filter out constraints, the thresholds for support, confidence level and interest factor can be increased. Mind however that the confidence level, and even more the interest factor, are rather sensitive to small changes (so, a slight increase may induce many constraints to be cut out). In this running example we kept thresholds quite low so as to show a number of different constraints.