Skip to content
Claudio Di Ciccio edited this page Apr 4, 2019 · 9 revisions

A 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
    }
  ]
}

Considerations

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.