SlideShare a Scribd company logo
Where did I go wrong? 
Explaining errors in process models 
Niels Lohmann @nlohmann 
Dirk Fahland @dfahland
Verification of processes and services 
2 
process model 
property 
verification technique 
diagnostic information
Verification of processes and services 
3 
verification technique 
diagnostic information 
BPMN 
Soundness 
domain-specific 
high-quality
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
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
Model checking 
general purpose verification approach: 
1. formalize model and specification* 
2. push a button 
6 
*can be hidden from the user
Effectiveness and efficiency 
-model checking works in reality 
-successful applications in many domains 
-very fast: “verify while you model” 
7
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
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
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
This talk: better diagnosis 
path 
essential path 
distill 
Why useless?
Reasons for useless paths 
12 
detours 
depth-first search 
indisputable parts 
bootstrapping 
interleavings 
concurrency
Running example 
13 
lack of synchronization
Reduction: obvious parts 
-classify transitions 
-only report points of alternative continuations* 
14 
* XOR-gateways, events, exceptions, … 
assume progress of flow
Reduction: obvious parts 
15 
t1 
t2 
t9 
t10 
t11 
t12 
t14 
t8 
t2 
t3 
t4 
t5 
“down” 
“down” 
“up”
Non-obvious “core” of a path ≈ 10-25% 
16
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
Reasons for useless paths 
18 
detours depth-first search 
indisputable parts bootstrapping 
interleavings 
concurrency
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
Reduction: unorder steps 
20 
t1 
t2 
t9 
t10 
t11 
t12 
t14 
t8 
t2 
t3 
t4 
t5 
t9 
t14 
t3
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
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
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
Results: typical reduced paths 
24 
2x lack of synchronization 
improper completion 
deadlock
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
Where did I go wrong? 
Explaining errors in process models 
Niels Lohmann

More Related Content

PPTX
Technology + education =
PPTX
Artifacts - Processes with Multiple Instances
PPT
Caregiver Life Website 2011
PDF
Dabbagh pbl2016-presentation
PDF
Repairing Process Models to Match Reality
PPTX
Espiritu Santo
PDF
5 Things You Should Know About CLE Models and Strategies
PPTX
Technology + education =
Technology + education =
Artifacts - Processes with Multiple Instances
Caregiver Life Website 2011
Dabbagh pbl2016-presentation
Repairing Process Models to Match Reality
Espiritu Santo
5 Things You Should Know About CLE Models and Strategies
Technology + education =

Viewers also liked (10)

PPTX
Technology + education =
PDF
Presentation International Trade Show Of New Technologies [Modo De Compatibil...
PDF
Simplifying Mined Process Models
PDF
Process Mining for ERP Systems
PDF
Mining Branch-Time Scenarios From Execution Logs
PPTX
Many-to-Many: Interactions in Artifact-Centric Choreographies
PDF
Steel Tube Mill Instrument by K s-electromech-private-limited
PDF
LSC Revisited - From Scenarios to Distributed Components
PDF
From Live Sequence Chart Specifications to Distributed Components
PPTX
The Process of Process Modeling
Technology + education =
Presentation International Trade Show Of New Technologies [Modo De Compatibil...
Simplifying Mined Process Models
Process Mining for ERP Systems
Mining Branch-Time Scenarios From Execution Logs
Many-to-Many: Interactions in Artifact-Centric Choreographies
Steel Tube Mill Instrument by K s-electromech-private-limited
LSC Revisited - From Scenarios to Distributed Components
From Live Sequence Chart Specifications to Distributed Components
The Process of Process Modeling
Ad

Similar to Where did I go wrong? Explaining errors in process models (20)

PDF
Instrumentation And Control Systems 3rd Edition William Bolton
PPT
Process Validation Master Planning DMAIC Fusion
PPTX
CII Project - Slim Relay Terminal - Final.pptx
PDF
EPM In-Line Verification 24-04-2014
PDF
Mathematically Guaranteeing Code Correctness with TrustInSoft
PDF
Computerbased Industrial Control 2nd Kant Krishna
PDF
Intrusion Access Catalog August 09
PPTX
PhD First Year Conference (MAY 2019)
PDF
Scada Supervisory Control And Data Acquisition 3rd Edition 3rd Stuart A Boyer...
PPTX
SAP HANA Status.pptx
PDF
Time Series Analysis Fourth Edition George E P Box Gwilym M Jenkins
PDF
Quality Control Applications 1st Edition Dimitris N Chorafas Auth
PDF
Advanced Process Control Cecil L Smithauth
PDF
This is why we don’t shout “Bingo”: Analyzing ATT&CK Integration in Endpoint ...
PDF
Achieving Product Reliability A Key To Business Success Necip Doganaksoy Will...
DOCX
Marketing Analytics RM Report
PPT
safety-instrumented-systems for cbemical
PPT
safety-instrumented-systems-summers.ppt
PPTX
Latest Juniper JN0-214 Certification Study Guide
PDF
Signals And Control Systems 1st Edition Femmam Smain
Instrumentation And Control Systems 3rd Edition William Bolton
Process Validation Master Planning DMAIC Fusion
CII Project - Slim Relay Terminal - Final.pptx
EPM In-Line Verification 24-04-2014
Mathematically Guaranteeing Code Correctness with TrustInSoft
Computerbased Industrial Control 2nd Kant Krishna
Intrusion Access Catalog August 09
PhD First Year Conference (MAY 2019)
Scada Supervisory Control And Data Acquisition 3rd Edition 3rd Stuart A Boyer...
SAP HANA Status.pptx
Time Series Analysis Fourth Edition George E P Box Gwilym M Jenkins
Quality Control Applications 1st Edition Dimitris N Chorafas Auth
Advanced Process Control Cecil L Smithauth
This is why we don’t shout “Bingo”: Analyzing ATT&CK Integration in Endpoint ...
Achieving Product Reliability A Key To Business Success Necip Doganaksoy Will...
Marketing Analytics RM Report
safety-instrumented-systems for cbemical
safety-instrumented-systems-summers.ppt
Latest Juniper JN0-214 Certification Study Guide
Signals And Control Systems 1st Edition Femmam Smain
Ad

More from Dirk Fahland (6)

PDF
Object-Centric Processes - from cases to objects and relations… and beyond
PDF
Multi-Dimensional Process Analysis
PPTX
Artifacts and Databases - the Need for Event Relation Graphs and Synchronous ...
PDF
Describing, Discovering, and Understanding Multi-Dimensional Processes
PDF
Process Mining: Past, Present, and Open Challenges (AIST 2017 Keynote)
PPTX
Behavioral Conformance of Artifact-Centric Process Models
Object-Centric Processes - from cases to objects and relations… and beyond
Multi-Dimensional Process Analysis
Artifacts and Databases - the Need for Event Relation Graphs and Synchronous ...
Describing, Discovering, and Understanding Multi-Dimensional Processes
Process Mining: Past, Present, and Open Challenges (AIST 2017 Keynote)
Behavioral Conformance of Artifact-Centric Process Models

Recently uploaded (20)

PPTX
CYBER SECURITY the Next Warefare Tactics
PDF
Microsoft 365 products and services descrption
PDF
Business Analytics and business intelligence.pdf
PPT
Predictive modeling basics in data cleaning process
PPTX
Topic 5 Presentation 5 Lesson 5 Corporate Fin
PPTX
retention in jsjsksksksnbsndjddjdnFPD.pptx
PDF
[EN] Industrial Machine Downtime Prediction
PPTX
New ISO 27001_2022 standard and the changes
PDF
Votre score augmente si vous choisissez une catégorie et que vous rédigez une...
PDF
Optimise Shopper Experiences with a Strong Data Estate.pdf
PPTX
Qualitative Qantitative and Mixed Methods.pptx
PDF
Data Engineering Interview Questions & Answers Cloud Data Stacks (AWS, Azure,...
DOCX
Factor Analysis Word Document Presentation
PPTX
FMIS 108 and AISlaudon_mis17_ppt_ch11.pptx
PPTX
Business_Capability_Map_Collection__pptx
PPTX
Introduction to Inferential Statistics.pptx
PDF
Navigating the Thai Supplements Landscape.pdf
PPTX
sac 451hinhgsgshssjsjsjheegdggeegegdggddgeg.pptx
PDF
REAL ILLUMINATI AGENT IN KAMPALA UGANDA CALL ON+256765750853/0705037305
PPTX
SAP 2 completion done . PRESENTATION.pptx
CYBER SECURITY the Next Warefare Tactics
Microsoft 365 products and services descrption
Business Analytics and business intelligence.pdf
Predictive modeling basics in data cleaning process
Topic 5 Presentation 5 Lesson 5 Corporate Fin
retention in jsjsksksksnbsndjddjdnFPD.pptx
[EN] Industrial Machine Downtime Prediction
New ISO 27001_2022 standard and the changes
Votre score augmente si vous choisissez une catégorie et que vous rédigez une...
Optimise Shopper Experiences with a Strong Data Estate.pdf
Qualitative Qantitative and Mixed Methods.pptx
Data Engineering Interview Questions & Answers Cloud Data Stacks (AWS, Azure,...
Factor Analysis Word Document Presentation
FMIS 108 and AISlaudon_mis17_ppt_ch11.pptx
Business_Capability_Map_Collection__pptx
Introduction to Inferential Statistics.pptx
Navigating the Thai Supplements Landscape.pdf
sac 451hinhgsgshssjsjsjheegdggeegegdggddgeg.pptx
REAL ILLUMINATI AGENT IN KAMPALA UGANDA CALL ON+256765750853/0705037305
SAP 2 completion done . PRESENTATION.pptx

Where did I go wrong? Explaining errors in process models

  • 1. Where did I go wrong? Explaining errors in process models Niels Lohmann @nlohmann Dirk Fahland @dfahland
  • 2. Verification of processes and services 2 process model property verification technique diagnostic information
  • 3. Verification of processes and services 3 verification technique diagnostic information BPMN Soundness domain-specific high-quality
  • 4. 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
  • 5. 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
  • 6. Model checking general purpose verification approach: 1. formalize model and specification* 2. push a button 6 *can be hidden from the user
  • 7. Effectiveness and efficiency -model checking works in reality -successful applications in many domains -very fast: “verify while you model” 7
  • 8. 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
  • 9. 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
  • 10. 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
  • 11. This talk: better diagnosis path essential path distill Why useless?
  • 12. Reasons for useless paths 12 detours depth-first search indisputable parts bootstrapping interleavings concurrency
  • 13. Running example 13 lack of synchronization
  • 14. Reduction: obvious parts -classify transitions -only report points of alternative continuations* 14 * XOR-gateways, events, exceptions, … assume progress of flow
  • 15. Reduction: obvious parts 15 t1 t2 t9 t10 t11 t12 t14 t8 t2 t3 t4 t5 “down” “down” “up”
  • 16. Non-obvious “core” of a path ≈ 10-25% 16
  • 17. 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
  • 18. Reasons for useless paths 18 detours depth-first search indisputable parts bootstrapping interleavings concurrency
  • 19. 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
  • 20. Reduction: unorder steps 20 t1 t2 t9 t10 t11 t12 t14 t8 t2 t3 t4 t5 t9 t14 t3
  • 21. 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
  • 22. 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
  • 23. 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
  • 24. Results: typical reduced paths 24 2x lack of synchronization improper completion deadlock
  • 25. 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
  • 26. Where did I go wrong? Explaining errors in process models Niels Lohmann