Where did I go wrong? Explaining errors in process models
-
Upload
dirk-fahland -
Category
Data & Analytics
-
view
347 -
download
6
description
Transcript of Where did I go wrong? Explaining errors in process models
![Page 1: Where did I go wrong? Explaining errors in process models](https://reader034.fdocuments.in/reader034/viewer/2022052315/547e4569b4795984508b4aea/html5/thumbnails/1.jpg)
Where did I go wrong? Explaining errors in process models
Niels Lohmann @nlohmann
Dirk Fahland @dfahland
![Page 2: Where did I go wrong? Explaining errors in process models](https://reader034.fdocuments.in/reader034/viewer/2022052315/547e4569b4795984508b4aea/html5/thumbnails/2.jpg)
Verification of processes and services
2
process model
property
verification
technique
diagnostic
information
![Page 3: Where did I go wrong? Explaining errors in process models](https://reader034.fdocuments.in/reader034/viewer/2022052315/547e4569b4795984508b4aea/html5/thumbnails/3.jpg)
Verification of processes and services
3
verification
technique
diagnostic
information
BPMN
Soundness
domain-specific high-quality
![Page 4: Where did I go wrong? Explaining errors in process models](https://reader034.fdocuments.in/reader034/viewer/2022052315/547e4569b4795984508b4aea/html5/thumbnails/4.jpg)
domain-specific
Verification of processes and services
4
CMMN Declare
WS-BPEL
WS-Policy
EPC
BPMN
YAWL Object Life-Cycles GSM
Rules
Soundness
Security Compliance
Conformance to …
diagnostic
information
verification
technique
domain-specific high-quality
-moving target
-domain-specific approaches too specific to follow
![Page 5: Where did I go wrong? Explaining errors in process models](https://reader034.fdocuments.in/reader034/viewer/2022052315/547e4569b4795984508b4aea/html5/thumbnails/5.jpg)
Verification of processes and services
5
CMMN Declare
WS-BPEL
WS-Policy
EPC
BPMN
YAWL Object Life-Cycles GSM
Rules
Soundness
Security Compliance
Conformance to …
diagnostic
information
verification
technique
high-quality general purpose
![Page 6: Where did I go wrong? Explaining errors in process models](https://reader034.fdocuments.in/reader034/viewer/2022052315/547e4569b4795984508b4aea/html5/thumbnails/6.jpg)
Model checking
general purpose verification approach:
1. formalize model and specification*
2. push a button 6
* can be hidden from the user
![Page 7: Where did I go wrong? Explaining errors in process models](https://reader034.fdocuments.in/reader034/viewer/2022052315/547e4569b4795984508b4aea/html5/thumbnails/7.jpg)
Effectiveness and efficiency -model checking works in reality
- successful applications in many domains
-very fast: “verify while you model”
7
![Page 8: Where did I go wrong? Explaining errors in process models](https://reader034.fdocuments.in/reader034/viewer/2022052315/547e4569b4795984508b4aea/html5/thumbnails/8.jpg)
Diagnosis
- in case of error: outputs target state and produce a witness path
- describes how target state can be reached
- operational semantics: can be simulated
8
witness path
target state
![Page 9: Where did I go wrong? Explaining errors in process models](https://reader034.fdocuments.in/reader034/viewer/2022052315/547e4569b4795984508b4aea/html5/thumbnails/9.jpg)
Diagnosis: the bad
PATH process.s00000823##s00006200.inputCriterion.s00001053 fork.s00001071.activate.s00001072 fork.s00001071.fire.s00001078 merge.s00001061.activate.s00001065 merge.s00001061.fire.s00001069 callToTask.s00006202.inputCriterion.s00001053 callToTask.s00006202.outputCriterion.s00001055 callToTask.s00006211.inputCriterion.s00001053 callToTask.s00006211.outputCriterion.s00001055 callToTask.s00006209.inputCriterion.s00001053 callToTask.s00006209.outputCriterion.s00001055 decision.s00001158.activate.s00001072 decision.s00001158.fire.s00001075 merge.s00001160.activate.s00001064 merge.s00001160.fire.s00001069 callToTask.s00006203.inputCriterion.s00001053 callToTask.s00006203.outputCriterion.s00001055 callToTask.s00006214.inputCriterion.s00001053 callToTask.s00006214.outputCriterion.s00001055 callToTask.s00006213.inputCriterion.s00001053 callToTask.s00006213.outputCriterion.s00001055 decision.s00001840.activate.s00001072 decision.s00001840.fire.s00001075 callToTask.s00006201.inputCriterion.s00001053 callToTask.s00006201.outputCriterion.s00001055 decision.s00001123.activate.s00001072 decision.s00001123.fire.s00001075 merge.s00001161.activate.s00001064 merge.s00001161.fire.s00001069 callToTask.s00006208.inputCriterion.s00001053 callToTask.s00006208.outputCriterion.s00001055
decision.s00001157.activate.s00001072 decision.s00001157.fire.s00001073 fork.s00001071.fire.s00001073 merge.s00001061.activate.s00001064 join.s00001163.activate.s00001062 merge.s00001061.fire.s00001069 join.s00001163.activate.s00001064 merge.s00001162.activate.s00001062 merge.s00001162.fire.s00001069 callToTask.s00006210.inputCriterion.s00001053 callToTask.s00006210.outputCriterion.s00001055 decision.s00001159.activate.s00001072 decision.s00001159.fire.s00001073 join.s00001163.activate.s00001065 join.s00001163.fire.s00001069 fork.s00001071.fire.s00001075 merge.s00001160.activate.s00001065 callToTask.s00006207.inputCriterion.s00001053 merge.s00001160.fire.s00001069 callToTask.s00006207.outputCriterion.s00001055 callToTask.s00006203.inputCriterion.s00001053 decision.s00001126.activate.s00001072 callToTask.s00006203.outputCriterion.s00001055 decision.s00001126.fire.s00001073 callToTask.s00006214.inputCriterion.s00001053 callToTask.s00006202.inputCriterion.s00001053 callToTask.s00006202.outputCriterion.s00001055 callToTask.s00006211.inputCriterion.s00001053 callToTask.s00006211.outputCriterion.s00001055 callToTask.s00006209.inputCriterion.s00001053 callToTask.s00006209.outputCriterion.s00001055
decision.s00001158.activate.s00001072 decision.s00001158.fire.s00001075 callToTask.s00006214.outputCriterion.s00001055 callToTask.s00006213.inputCriterion.s00001053 callToTask.s00006213.outputCriterion.s00001055 decision.s00001840.activate.s00001072 decision.s00001840.fire.s00001075 callToTask.s00006201.inputCriterion.s00001053 callToTask.s00006201.outputCriterion.s00001055 decision.s00001123.activate.s00001072 decision.s00001123.fire.s00001073 callToTask.s00006204.inputCriterion.s00001053 callToTask.s00006204.outputCriterion.s00001055 callToTask.s00003714.inputCriterion.s00001053 callToTask.s00003714.outputCriterion.s00001055 callToTask.s00006215.inputCriterion.s00001053 callToTask.s00006215.outputCriterion.s00001055 callToTask.s00006206.inputCriterion.s00001053 join.s00001163.activate.s00001064 callToTask.s00006206.outputCriterion.s00001055 callToTask.s00006205.inputCriterion.s00001053 callToTask.s00006205.outputCriterion.s00001055 merge.s00001161.activate.s00001062 merge.s00001161.fire.s00001069 callToTask.s00006208.inputCriterion.s00001053 callToTask.s00006208.outputCriterion.s00001055 decision.s00001157.activate.s00001072 decision.s00001157.fire.s00001073 join.s00001163.activate.s00001062 callToTask.s00006212.inputCriterion.s00001053 callToTask.s00006212.outputCriterion.s00001055
merge.s00001162.activate.s00001064 merge.s00001162.fire.s00001069 callToTask.s00006210.inputCriterion.s00001053 callToTask.s00006210.outputCriterion.s00001055 decision.s00001159.activate.s00001072 decision.s00001159.fire.s00001073 join.s00001163.activate.s00001065 join.s00001163.fire.s00001069 callToTask.s00006207.inputCriterion.s00001053 callToTask.s00006207.outputCriterion.s00001055 decision.s00001126.activate.s00001072 decision.s00001126.fire.s00001073 STATE decision.s00001126.output.s00001054 : 2
- paths can become very long
- length correlates with size of the model
- reports all events equally: disregarding importance
![Page 10: Where did I go wrong? Explaining errors in process models](https://reader034.fdocuments.in/reader034/viewer/2022052315/547e4569b4795984508b4aea/html5/thumbnails/10.jpg)
This talk: better diagnosis
PATH process.s00000823##s00006200.inputCriterion.s00001053 fork.s00001071.activate.s00001072 fork.s00001071.fire.s00001078 merge.s00001061.activate.s00001065 merge.s00001061.fire.s00001069 callToTask.s00006202.inputCriterion.s00001053 callToTask.s00006202.outputCriterion.s00001055 callToTask.s00006211.inputCriterion.s00001053 callToTask.s00006211.outputCriterion.s00001055 callToTask.s00006209.inputCriterion.s00001053 callToTask.s00006209.outputCriterion.s00001055 decision.s00001158.activate.s00001072 decision.s00001158.fire.s00001075 merge.s00001160.activate.s00001064 merge.s00001160.fire.s00001069 callToTask.s00006203.inputCriterion.s00001053 callToTask.s00006203.outputCriterion.s00001055 callToTask.s00006214.inputCriterion.s00001053 callToTask.s00006214.outputCriterion.s00001055 callToTask.s00006213.inputCriterion.s00001053 callToTask.s00006213.outputCriterion.s00001055 decision.s00001840.activate.s00001072 decision.s00001840.fire.s00001075 callToTask.s00006201.inputCriterion.s00001053 callToTask.s00006201.outputCriterion.s00001055 decision.s00001123.activate.s00001072 decision.s00001123.fire.s00001075 merge.s00001161.activate.s00001064 merge.s00001161.fire.s00001069 callToTask.s00006208.inputCriterion.s00001053 callToTask.s00006208.outputCriterion.s00001055
decision.s00001157.activate.s00001072 decision.s00001157.fire.s00001073 fork.s00001071.fire.s00001073 merge.s00001061.activate.s00001064 join.s00001163.activate.s00001062 merge.s00001061.fire.s00001069 join.s00001163.activate.s00001064 merge.s00001162.activate.s00001062 merge.s00001162.fire.s00001069 callToTask.s00006210.inputCriterion.s00001053 callToTask.s00006210.outputCriterion.s00001055 decision.s00001159.activate.s00001072 decision.s00001159.fire.s00001073 join.s00001163.activate.s00001065 join.s00001163.fire.s00001069 fork.s00001071.fire.s00001075 merge.s00001160.activate.s00001065 callToTask.s00006207.inputCriterion.s00001053 merge.s00001160.fire.s00001069 callToTask.s00006207.outputCriterion.s00001055 callToTask.s00006203.inputCriterion.s00001053 decision.s00001126.activate.s00001072 callToTask.s00006203.outputCriterion.s00001055 decision.s00001126.fire.s00001073 callToTask.s00006214.inputCriterion.s00001053 callToTask.s00006202.inputCriterion.s00001053 callToTask.s00006202.outputCriterion.s00001055 callToTask.s00006211.inputCriterion.s00001053 callToTask.s00006211.outputCriterion.s00001055 callToTask.s00006209.inputCriterion.s00001053 callToTask.s00006209.outputCriterion.s00001055
decision.s00001158.activate.s00001072 decision.s00001158.fire.s00001075 callToTask.s00006214.outputCriterion.s00001055 callToTask.s00006213.inputCriterion.s00001053 callToTask.s00006213.outputCriterion.s00001055 decision.s00001840.activate.s00001072 decision.s00001840.fire.s00001075 callToTask.s00006201.inputCriterion.s00001053 callToTask.s00006201.outputCriterion.s00001055 decision.s00001123.activate.s00001072 decision.s00001123.fire.s00001073 callToTask.s00006204.inputCriterion.s00001053 callToTask.s00006204.outputCriterion.s00001055 callToTask.s00003714.inputCriterion.s00001053 callToTask.s00003714.outputCriterion.s00001055 callToTask.s00006215.inputCriterion.s00001053 callToTask.s00006215.outputCriterion.s00001055 callToTask.s00006206.inputCriterion.s00001053 join.s00001163.activate.s00001064 callToTask.s00006206.outputCriterion.s00001055 callToTask.s00006205.inputCriterion.s00001053 callToTask.s00006205.outputCriterion.s00001055 merge.s00001161.activate.s00001062 merge.s00001161.fire.s00001069 callToTask.s00006208.inputCriterion.s00001053 callToTask.s00006208.outputCriterion.s00001055 decision.s00001157.activate.s00001072 decision.s00001157.fire.s00001073 join.s00001163.activate.s00001062 callToTask.s00006212.inputCriterion.s00001053 callToTask.s00006212.outputCriterion.s00001055
merge.s00001162.activate.s00001064 merge.s00001162.fire.s00001069 callToTask.s00006210.inputCriterion.s00001053 callToTask.s00006210.outputCriterion.s00001055 decision.s00001159.activate.s00001072 decision.s00001159.fire.s00001073 join.s00001163.activate.s00001065 join.s00001163.fire.s00001069 callToTask.s00006207.inputCriterion.s00001053 callToTask.s00006207.outputCriterion.s00001055 decision.s00001126.activate.s00001072 decision.s00001126.fire.s00001073 STATE decision.s00001126.output.s00001054 : 2
![Page 11: Where did I go wrong? Explaining errors in process models](https://reader034.fdocuments.in/reader034/viewer/2022052315/547e4569b4795984508b4aea/html5/thumbnails/11.jpg)
This talk: better diagnosis
path essential
path distill
Why useless?
![Page 12: Where did I go wrong? Explaining errors in process models](https://reader034.fdocuments.in/reader034/viewer/2022052315/547e4569b4795984508b4aea/html5/thumbnails/12.jpg)
Reasons for useless paths
12
detours
depth-first search
indisputable parts
bootstrapping
interleavings
concurrency
![Page 13: Where did I go wrong? Explaining errors in process models](https://reader034.fdocuments.in/reader034/viewer/2022052315/547e4569b4795984508b4aea/html5/thumbnails/13.jpg)
Running example
13
lack of synchronization
![Page 14: Where did I go wrong? Explaining errors in process models](https://reader034.fdocuments.in/reader034/viewer/2022052315/547e4569b4795984508b4aea/html5/thumbnails/14.jpg)
Reduction: obvious parts - classify transitions
-only report points of alternative continuations*
14
* XOR-gateways, events, exceptions, …
assume progress of flow
![Page 15: Where did I go wrong? Explaining errors in process models](https://reader034.fdocuments.in/reader034/viewer/2022052315/547e4569b4795984508b4aea/html5/thumbnails/15.jpg)
Reduction: obvious parts
15
t1 t2 t9 t10 t11 t12 t14 t8 t2 t3 t4 t5
“down” “down” “up”
![Page 16: Where did I go wrong? Explaining errors in process models](https://reader034.fdocuments.in/reader034/viewer/2022052315/547e4569b4795984508b4aea/html5/thumbnails/16.jpg)
Non-obvious “core” of a path ≈ 10-25%
16
![Page 17: Where did I go wrong? Explaining errors in process models](https://reader034.fdocuments.in/reader034/viewer/2022052315/547e4569b4795984508b4aea/html5/thumbnails/17.jpg)
Reduction: spurious decisions
- can be found by model checking
- results: 50%-80% spurious, occasionally no reduction (timeout) 17
p1
p3
p2
p4
p5
p6 p1
p3
p5
p6
genuine decision spurious decision
= irrelevant for outcome
![Page 18: Where did I go wrong? Explaining errors in process models](https://reader034.fdocuments.in/reader034/viewer/2022052315/547e4569b4795984508b4aea/html5/thumbnails/18.jpg)
Reasons for useless paths
18
detours
depth-first search
indisputable parts
bootstrapping
interleavings
concurrency
![Page 19: Where did I go wrong? Explaining errors in process models](https://reader034.fdocuments.in/reader034/viewer/2022052315/547e4569b4795984508b4aea/html5/thumbnails/19.jpg)
Reduction: unorder steps
- idea: show independence of steps ( partially ordered runs)
-makes synchronization points (milestones) explicit 19
independent steps many paths to same goal state
order of steps irrelevant
![Page 20: Where did I go wrong? Explaining errors in process models](https://reader034.fdocuments.in/reader034/viewer/2022052315/547e4569b4795984508b4aea/html5/thumbnails/20.jpg)
Reduction: unorder steps
20
t1 t2 t9 t10 t11 t12 t14 t8 t2 t3 t4 t5
t9 t14 t3
![Page 21: Where did I go wrong? Explaining errors in process models](https://reader034.fdocuments.in/reader034/viewer/2022052315/547e4569b4795984508b4aea/html5/thumbnails/21.jpg)
More aid: preserve reference points
21
t1 t2 t9 t10 t11 t12 t14 t8 t2 t3 t4 t5
t9 t14 t3
p1
p6
p6 t5
t11
t10 t1
![Page 22: Where did I go wrong? Explaining errors in process models](https://reader034.fdocuments.in/reader034/viewer/2022052315/547e4569b4795984508b4aea/html5/thumbnails/22.jpg)
Final: remove obvious/spurious parts
22
t1 t2 t9 t10 t11 t12 t14 t8 t2 t3 t4 t5
t9 t14 t3
p1
p6
p6 t5
t11
t10 t1
![Page 23: Where did I go wrong? Explaining errors in process models](https://reader034.fdocuments.in/reader034/viewer/2022052315/547e4569b4795984508b4aea/html5/thumbnails/23.jpg)
Essential path: find source of error
PATH process.s00000823##s00006200.inputCriterion.s00001053 fork.s00001071.activate.s00001072 fork.s00001071.fire.s00001078 merge.s00001061.activate.s00001065 merge.s00001061.fire.s00001069 callToTask.s00006202.inputCriterion.s00001053 callToTask.s00006202.outputCriterion.s00001055 callToTask.s00006211.inputCriterion.s00001053 callToTask.s00006211.outputCriterion.s00001055 callToTask.s00006209.inputCriterion.s00001053 callToTask.s00006209.outputCriterion.s00001055 decision.s00001158.activate.s00001072 decision.s00001158.fire.s00001075 merge.s00001160.activate.s00001064 merge.s00001160.fire.s00001069 callToTask.s00006203.inputCriterion.s00001053 callToTask.s00006203.outputCriterion.s00001055 callToTask.s00006214.inputCriterion.s00001053 callToTask.s00006214.outputCriterion.s00001055 callToTask.s00006213.inputCriterion.s00001053 callToTask.s00006213.outputCriterion.s00001055 decision.s00001840.activate.s00001072 decision.s00001840.fire.s00001075 callToTask.s00006201.inputCriterion.s00001053 callToTask.s00006201.outputCriterion.s00001055 decision.s00001123.activate.s00001072 decision.s00001123.fire.s00001075 merge.s00001161.activate.s00001064 merge.s00001161.fire.s00001069 callToTask.s00006208.inputCriterion.s00001053 callToTask.s00006208.outputCriterion.s00001055
decision.s00001157.activate.s00001072 decision.s00001157.fire.s00001073 fork.s00001071.fire.s00001073 merge.s00001061.activate.s00001064 join.s00001163.activate.s00001062 merge.s00001061.fire.s00001069 join.s00001163.activate.s00001064 merge.s00001162.activate.s00001062 merge.s00001162.fire.s00001069 callToTask.s00006210.inputCriterion.s00001053 callToTask.s00006210.outputCriterion.s00001055 decision.s00001159.activate.s00001072 decision.s00001159.fire.s00001073 join.s00001163.activate.s00001065 join.s00001163.fire.s00001069 fork.s00001071.fire.s00001075 merge.s00001160.activate.s00001065 callToTask.s00006207.inputCriterion.s00001053 merge.s00001160.fire.s00001069 callToTask.s00006207.outputCriterion.s00001055 callToTask.s00006203.inputCriterion.s00001053 decision.s00001126.activate.s00001072 callToTask.s00006203.outputCriterion.s00001055 decision.s00001126.fire.s00001073 callToTask.s00006214.inputCriterion.s00001053 callToTask.s00006202.inputCriterion.s00001053 callToTask.s00006202.outputCriterion.s00001055 callToTask.s00006211.inputCriterion.s00001053 callToTask.s00006211.outputCriterion.s00001055 callToTask.s00006209.inputCriterion.s00001053 callToTask.s00006209.outputCriterion.s00001055
decision.s00001158.activate.s00001072 decision.s00001158.fire.s00001075 callToTask.s00006214.outputCriterion.s00001055 callToTask.s00006213.inputCriterion.s00001053 callToTask.s00006213.outputCriterion.s00001055 decision.s00001840.activate.s00001072 decision.s00001840.fire.s00001075 callToTask.s00006201.inputCriterion.s00001053 callToTask.s00006201.outputCriterion.s00001055 decision.s00001123.activate.s00001072 decision.s00001123.fire.s00001073 callToTask.s00006204.inputCriterion.s00001053 callToTask.s00006204.outputCriterion.s00001055 callToTask.s00003714.inputCriterion.s00001053 callToTask.s00003714.outputCriterion.s00001055 callToTask.s00006215.inputCriterion.s00001053 callToTask.s00006215.outputCriterion.s00001055 callToTask.s00006206.inputCriterion.s00001053 join.s00001163.activate.s00001064 callToTask.s00006206.outputCriterion.s00001055 callToTask.s00006205.inputCriterion.s00001053 callToTask.s00006205.outputCriterion.s00001055 merge.s00001161.activate.s00001062 merge.s00001161.fire.s00001069 callToTask.s00006208.inputCriterion.s00001053 callToTask.s00006208.outputCriterion.s00001055 decision.s00001157.activate.s00001072 decision.s00001157.fire.s00001073 join.s00001163.activate.s00001062 callToTask.s00006212.inputCriterion.s00001053 callToTask.s00006212.outputCriterion.s00001055
merge.s00001162.activate.s00001064 merge.s00001162.fire.s00001069 callToTask.s00006210.inputCriterion.s00001053 callToTask.s00006210.outputCriterion.s00001055 decision.s00001159.activate.s00001072 decision.s00001159.fire.s00001073 join.s00001163.activate.s00001065 join.s00001163.fire.s00001069 callToTask.s00006207.inputCriterion.s00001053 callToTask.s00006207.outputCriterion.s00001055 decision.s00001126.activate.s00001072 decision.s00001126.fire.s00001073
![Page 24: Where did I go wrong? Explaining errors in process models](https://reader034.fdocuments.in/reader034/viewer/2022052315/547e4569b4795984508b4aea/html5/thumbnails/24.jpg)
Results: typical reduced paths
24
2x lack of synchronization improper completion
deadlock
![Page 25: Where did I go wrong? Explaining errors in process models](https://reader034.fdocuments.in/reader034/viewer/2022052315/547e4569b4795984508b4aea/html5/thumbnails/25.jpg)
Summary
- general purpose verification more user friendly
- paths partial order of important decisions
- applicable to any verification goal
- keep reference points to aid diagnosis
Next steps - error localization vs. explanation
- detect useless cycles
-How should a good diagnosis for $problem look like?
25
![Page 26: Where did I go wrong? Explaining errors in process models](https://reader034.fdocuments.in/reader034/viewer/2022052315/547e4569b4795984508b4aea/html5/thumbnails/26.jpg)
Where did I go wrong? Explaining errors in process models
Niels Lohmann