View
0
Download
0
Category
Preview:
Citation preview
PLG: a Framework for the Generation of BusinessProcess Models and their Execution Logs
Andrea Burattin and Alessandro Sperduti
Department of Pure and Applied MathematicsUniversity of Padua, Italy
September 13th, 2010
Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
Slide 2 of 15
Why process models and logs are needed?
Process models and executions logs are fundamental for the designof process mining algorithm
Process models
Executions Processes logs
Mined process models
process mining
Evaluation results of process mining algorithm
Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
Slide 2 of 15
Why process models and logs are needed?
Process models and executions logs are fundamental for the designof process mining algorithm
Process models
Executions Processes logs
Mined process models
process mining
Evaluation results of process mining algorithm
Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
Slide 2 of 15
Why process models and logs are needed?
Process models and executions logs are fundamental for the designof process mining algorithm
Process models
Executions
Processes logs
Mined process models
process mining
Evaluation results of process mining algorithm
Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
Slide 2 of 15
Why process models and logs are needed?
Process models and executions logs are fundamental for the designof process mining algorithm
Process models
Executions Processes logs
Mined process models
process mining
Evaluation results of process mining algorithm
Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
Slide 2 of 15
Why process models and logs are needed?
Process models and executions logs are fundamental for the designof process mining algorithm
Process models
Executions Processes logs
Mined process models
process mining
Evaluation results of process mining algorithm
Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
Slide 2 of 15
Why process models and logs are needed?
Process models and executions logs are fundamental for the designof process mining algorithm
Process models
Executions Processes logs
Mined process models
process mining
Evaluation results of process mining algorithm
Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
Slide 3 of 15
Why process models and logs are needed?
In this context, with “data” we mean both
Process models
Executions logs
Justifications for developing large datasets of models and logs
Establish algorithm performance
Experimental comparison of algorithms
If machine learning approaches are used, as training set
Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
Slide 4 of 15
Is there a lack of processes and logs?
Typically, nowadays, it happens that
Each group tests new algorithms against their own set ofprocess models and logs
Often those logs are private and other groups can not recreatethe results
Maybe a more “scientific approach” can be achieved with
Widely accepted common dataset of models and processes
Everyone can reproduce the results and compare them withtheir own new algorithms
Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
Slide 4 of 15
Is there a lack of processes and logs?
Typically, nowadays, it happens that
Each group tests new algorithms against their own set ofprocess models and logs
Often those logs are private and other groups can not recreatethe results
Maybe a more “scientific approach” can be achieved with
Widely accepted common dataset of models and processes
Everyone can reproduce the results and compare them withtheir own new algorithms
Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
Slide 5 of 15
The tool: Processes Logs Generator
Models and logs needed to design better process mining algorithms:experimental comparisons between algorithms would be possible
We designed and developed PLG (Processes Logs Generator)
Requirements of PLG
1 To generate random business processes
2 To execute processes and register the observations into logs
3 Simplicity in the configuration of the generator
Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
Slide 6 of 15
Step 1: Generation of random processes
Observations for the generation approach
Real business processes typically are combination of wellknown workflow patterns
We can randomly compose them to obtain new processes
Patterns currently supported
Sequence
Parallel split and synchronization
Exclusive choice and simple merge
Loop
Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
Slide 6 of 15
Step 1: Generation of random processes
Observations for the generation approach
Real business processes typically are combination of wellknown workflow patterns
We can randomly compose them to obtain new processes
Patterns currently supported
Sequence
Parallel split and synchronization
Exclusive choice and simple merge
Loop
Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
Slide 7 of 15
Step 1: Generation of random processes
The grammar for the generation: GProcess = {V ,Σ,R,P}:
Non terminals: V = {P,G ,G ′,G",G∧,G⊗,A}Terminals: Σ = {; , (, ),",∧,⊗, astart , aend , a, b, c , . . . }
Starting symbol: P
Productions:
P → astart ; G ; aend
G → G ′ | G"
G ′ → A | (G ;G ) | (A;G∧;A) | (A;G⊗;A)G" → (G ′ " G )
G∧ → G ∧ G | G ∧ G∧G⊗ → G ⊗ G | G ⊗ G⊗
A → a | b | c | . . .
Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
Slide 7 of 15
Step 1: Generation of random processes
The grammar for the generation: GProcess = {V ,Σ,R,P}:
Non terminals: V = {P,G ,G ′,G",G∧,G⊗,A}Terminals: Σ = {; , (, ),",∧,⊗, astart , aend , a, b, c , . . . }
Starting symbol: P
Productions:
astart
G
aend
P → astart ; G ; aend
G → G ′ | G"
G ′ → A | (G ;G ) | (A;G∧;A) | (A;G⊗;A)G" → (G ′ " G )
G∧ → G ∧ G | G ∧ G∧G⊗ → G ⊗ G | G ⊗ G⊗
A → a | b | c | . . .
Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
Slide 7 of 15
Step 1: Generation of random processes
The grammar for the generation: GProcess = {V ,Σ,R,P}:
Non terminals: V = {P,G ,G ′,G",G∧,G⊗,A}Terminals: Σ = {; , (, ),",∧,⊗, astart , aend , a, b, c , . . . }
Starting symbol: P
Productions:
astart
G
G
aend
P → astart ; G ; aend
G → G ′ | G"
G ′ → A | (G ;G ) | (A;G∧;A) | (A;G⊗;A)G" → (G ′ " G )
G∧ → G ∧ G | G ∧ G∧G⊗ → G ⊗ G | G ⊗ G⊗
A → a | b | c | . . .
Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
Slide 7 of 15
Step 1: Generation of random processes
The grammar for the generation: GProcess = {V ,Σ,R,P}:
Non terminals: V = {P,G ,G ′,G",G∧,G⊗,A}Terminals: Σ = {; , (, ),",∧,⊗, astart , aend , a, b, c , . . . }
Starting symbol: P
Productions:
astart
A
GG
A
aend
P → astart ; G ; aend
G → G ′ | G"
G ′ → A | (G ;G ) | (A;G∧;A) | (A;G⊗;A)G" → (G ′ " G )
G∧ → G ∧ G | G ∧ G∧G⊗ → G ⊗ G | G ⊗ G⊗
A → a | b | c | . . .
Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
Slide 7 of 15
Step 1: Generation of random processes
The grammar for the generation: GProcess = {V ,Σ,R,P}:
Non terminals: V = {P,G ,G ′,G",G∧,G⊗,A}Terminals: Σ = {; , (, ),",∧,⊗, astart , aend , a, b, c , . . . }
Starting symbol: P
Productions:
astart
G ′G
aend
P → astart ; G ; aend
G → G ′ | G"
G ′ → A | (G ;G ) | (A;G∧;A) | (A;G⊗;A)G" → (G ′ " G )
G∧ → G ∧ G | G ∧ G∧G⊗ → G ⊗ G | G ⊗ G⊗
A → a | b | c | . . .
Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
Slide 8 of 15
Step 1: Generation of random processes
Previous grammar extended with probabilities for the productions
π1 for G ′ → Aπ2 for G ′ → (G ;G )π3 for G ′ → (A;G∧;A)π4 for G ′ → (A;G⊗;A)πl for G" → (G ′ " G )
Other parameters of the generation are these probabilitydistributions
P⊕ selection of the executing activity
P∧ order of execution of activities
Selections made on the alphabetically sorted set of activities
Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
Slide 9 of 15
Examples of process generation
Derivation tree
P
astart G
(G ;G )
A
a
(G ′ " G )
(G ;G )
A; (G ∧ G );A
b A
c
A
d
e
A
f
A
g
aend
String derived: astart ; (a; ((b; (c ∧ d); e; f ) " g)); aend
Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
Slide 9 of 15
Examples of process generation
Derivation tree
P
astart G
(G ;G )
A
a
(G ′ " G )
(G ;G )
A; (G ∧ G );A
b A
c
A
d
e
A
f
A
g
aend
String derived: astart ; (a; ((b; (c ∧ d); e; f ) " g)); aend
Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
Slide 10 of 15
Examples of process generation
Internal representation
a ⊗ b ∧c
d
∧ e f ⊗
g
astart aend
Corresponding Petri Net (without astart and aend)
a b
c
d
e f
g
Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
Slide 10 of 15
Examples of process generation
Internal representation
a ⊗ b ∧c
d
∧ e f ⊗
g
astart aend
Corresponding Petri Net (without astart and aend)
a b
c
d
e f
g
Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
Slide 11 of 15
Step 2: “Execution” of a process model
The execution of a process model is simulated with an algorithmthat performs a visit of the graph
ActivityTracer(a, s)
Input: a: the current activitys: a stack (last-in-first-out queue) of activities
1 if s = ∅ or top(s) 6= a then
2 RecordActivity(a)
3 if deg→(a) = 1 then4 ActivityTracer(out(a), s)
5 else if deg→(a) > 1 then6 if Tout (a) = XOR then7 a1 ← random(out(a))8 ActivityTracer(a1, s)
9 else if Tout (a) = AND then10 aj ← join(a)
11 push(s, aj )
12 foreach ai ∈ out(a) do13 ActivityTracer(ai , s)
14 end15 pop(s)16 ActivityTracer(aj , s)
17 end
18 end
19 end
A B
C
D
E
# Activities
Instance 1
1 Activity ‘A’2 Activity ‘B’3 Activity ‘C’4 Activity ‘D’5 Activity ‘E’
# Activities
Instance 2
6 Activity ‘A’7 Activity ‘B’8 Activity ‘D’9 Activity ‘C’
10 Activity ‘E’
Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
Slide 11 of 15
Step 2: “Execution” of a process model
The execution of a process model is simulated with an algorithmthat performs a visit of the graph
ActivityTracer(a, s)
Input: a: the current activitys: a stack (last-in-first-out queue) of activities
1 if s = ∅ or top(s) 6= a then
2 RecordActivity(a)
3 if deg→(a) = 1 then4 ActivityTracer(out(a), s)
5 else if deg→(a) > 1 then6 if Tout (a) = XOR then7 a1 ← random(out(a))8 ActivityTracer(a1, s)
9 else if Tout (a) = AND then10 aj ← join(a)
11 push(s, aj )
12 foreach ai ∈ out(a) do13 ActivityTracer(ai , s)
14 end15 pop(s)16 ActivityTracer(aj , s)
17 end
18 end
19 end
A B
C
D
E
# Activities
Instance 1
1 Activity ‘A’2 Activity ‘B’3 Activity ‘C’4 Activity ‘D’5 Activity ‘E’
# Activities
Instance 2
6 Activity ‘A’7 Activity ‘B’8 Activity ‘D’9 Activity ‘C’
10 Activity ‘E’
Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
Slide 11 of 15
Step 2: “Execution” of a process model
The execution of a process model is simulated with an algorithmthat performs a visit of the graph
ActivityTracer(a, s)
Input: a: the current activitys: a stack (last-in-first-out queue) of activities
1 if s = ∅ or top(s) 6= a then
2 RecordActivity(a)
3 if deg→(a) = 1 then4 ActivityTracer(out(a), s)
5 else if deg→(a) > 1 then6 if Tout (a) = XOR then7 a1 ← random(out(a))8 ActivityTracer(a1, s)
9 else if Tout (a) = AND then10 aj ← join(a)
11 push(s, aj )
12 foreach ai ∈ out(a) do13 ActivityTracer(ai , s)
14 end15 pop(s)16 ActivityTracer(aj , s)
17 end
18 end
19 end
A B
C
D
E
# Activities
Instance 1
1 Activity ‘A’2 Activity ‘B’3 Activity ‘C’4 Activity ‘D’5 Activity ‘E’
# Activities
Instance 2
6 Activity ‘A’7 Activity ‘B’8 Activity ‘D’9 Activity ‘C’
10 Activity ‘E’
Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
Slide 11 of 15
Step 2: “Execution” of a process model
The execution of a process model is simulated with an algorithmthat performs a visit of the graph
ActivityTracer(a, s)
Input: a: the current activitys: a stack (last-in-first-out queue) of activities
1 if s = ∅ or top(s) 6= a then
2 RecordActivity(a)
3 if deg→(a) = 1 then4 ActivityTracer(out(a), s)
5 else if deg→(a) > 1 then6 if Tout (a) = XOR then7 a1 ← random(out(a))8 ActivityTracer(a1, s)
9 else if Tout (a) = AND then10 aj ← join(a)
11 push(s, aj )
12 foreach ai ∈ out(a) do13 ActivityTracer(ai , s)
14 end15 pop(s)16 ActivityTracer(aj , s)
17 end
18 end
19 end
A B
C
D
E
# Activities
Instance 1
1 Activity ‘A’
2 Activity ‘B’3 Activity ‘C’4 Activity ‘D’5 Activity ‘E’
# Activities
Instance 2
6 Activity ‘A’
7 Activity ‘B’8 Activity ‘D’9 Activity ‘C’
10 Activity ‘E’
Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
Slide 11 of 15
Step 2: “Execution” of a process model
The execution of a process model is simulated with an algorithmthat performs a visit of the graph
ActivityTracer(a, s)
Input: a: the current activitys: a stack (last-in-first-out queue) of activities
1 if s = ∅ or top(s) 6= a then
2 RecordActivity(a)
3 if deg→(a) = 1 then4 ActivityTracer(out(a), s)
5 else if deg→(a) > 1 then6 if Tout (a) = XOR then7 a1 ← random(out(a))8 ActivityTracer(a1, s)
9 else if Tout (a) = AND then10 aj ← join(a)
11 push(s, aj )
12 foreach ai ∈ out(a) do13 ActivityTracer(ai , s)
14 end15 pop(s)16 ActivityTracer(aj , s)
17 end
18 end
19 end
A B
C
D
E
# Activities
Instance 1
1 Activity ‘A’
2 Activity ‘B’3 Activity ‘C’4 Activity ‘D’5 Activity ‘E’
# Activities
Instance 2
6 Activity ‘A’
7 Activity ‘B’8 Activity ‘D’9 Activity ‘C’
10 Activity ‘E’
Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
Slide 11 of 15
Step 2: “Execution” of a process model
The execution of a process model is simulated with an algorithmthat performs a visit of the graph
ActivityTracer(a, s)
Input: a: the current activitys: a stack (last-in-first-out queue) of activities
1 if s = ∅ or top(s) 6= a then
2 RecordActivity(a)
3 if deg→(a) = 1 then4 ActivityTracer(out(a), s)
5 else if deg→(a) > 1 then6 if Tout (a) = XOR then7 a1 ← random(out(a))8 ActivityTracer(a1, s)
9 else if Tout (a) = AND then10 aj ← join(a)
11 push(s, aj )
12 foreach ai ∈ out(a) do13 ActivityTracer(ai , s)
14 end15 pop(s)16 ActivityTracer(aj , s)
17 end
18 end
19 end
A B
C
D
E
# Activities
Instance 1
1 Activity ‘A’
2 Activity ‘B’3 Activity ‘C’4 Activity ‘D’5 Activity ‘E’
# Activities
Instance 2
6 Activity ‘A’
7 Activity ‘B’8 Activity ‘D’9 Activity ‘C’
10 Activity ‘E’
Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
Slide 11 of 15
Step 2: “Execution” of a process model
The execution of a process model is simulated with an algorithmthat performs a visit of the graph
ActivityTracer(a, s)
Input: a: the current activitys: a stack (last-in-first-out queue) of activities
1 if s = ∅ or top(s) 6= a then
2 RecordActivity(a)
3 if deg→(a) = 1 then4 ActivityTracer(out(a), s)
5 else if deg→(a) > 1 then6 if Tout (a) = XOR then7 a1 ← random(out(a))8 ActivityTracer(a1, s)
9 else if Tout (a) = AND then10 aj ← join(a)
11 push(s, aj )
12 foreach ai ∈ out(a) do13 ActivityTracer(ai , s)
14 end15 pop(s)16 ActivityTracer(aj , s)
17 end
18 end
19 end
A B
C
D
E
# Activities
Instance 1
1 Activity ‘A’2 Activity ‘B’
3 Activity ‘C’4 Activity ‘D’5 Activity ‘E’
# Activities
Instance 2
6 Activity ‘A’7 Activity ‘B’
8 Activity ‘D’9 Activity ‘C’
10 Activity ‘E’
Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
Slide 11 of 15
Step 2: “Execution” of a process model
The execution of a process model is simulated with an algorithmthat performs a visit of the graph
ActivityTracer(a, s)
Input: a: the current activitys: a stack (last-in-first-out queue) of activities
1 if s = ∅ or top(s) 6= a then
2 RecordActivity(a)
3 if deg→(a) = 1 then4 ActivityTracer(out(a), s)
5 else if deg→(a) > 1 then6 if Tout (a) = XOR then7 a1 ← random(out(a))8 ActivityTracer(a1, s)
9 else if Tout (a) = AND then10 aj ← join(a)
11 push(s, aj )
12 foreach ai ∈ out(a) do13 ActivityTracer(ai , s)
14 end15 pop(s)16 ActivityTracer(aj , s)
17 end
18 end
19 end
A B
C
D
E
# Activities
Instance 1
1 Activity ‘A’2 Activity ‘B’
3 Activity ‘C’4 Activity ‘D’5 Activity ‘E’
# Activities
Instance 2
6 Activity ‘A’7 Activity ‘B’
8 Activity ‘D’9 Activity ‘C’
10 Activity ‘E’
Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
Slide 11 of 15
Step 2: “Execution” of a process model
The execution of a process model is simulated with an algorithmthat performs a visit of the graph
ActivityTracer(a, s)
Input: a: the current activitys: a stack (last-in-first-out queue) of activities
1 if s = ∅ or top(s) 6= a then
2 RecordActivity(a)
3 if deg→(a) = 1 then4 ActivityTracer(out(a), s)
5 else if deg→(a) > 1 then6 if Tout (a) = XOR then7 a1 ← random(out(a))8 ActivityTracer(a1, s)
9 else if Tout (a) = AND then10 aj ← join(a)
11 push(s, aj )
12 foreach ai ∈ out(a) do13 ActivityTracer(ai , s)
14 end15 pop(s)16 ActivityTracer(aj , s)
17 end
18 end
19 end
A B
C
D
E
# Activities
Instance 1
1 Activity ‘A’2 Activity ‘B’
3 Activity ‘C’4 Activity ‘D’5 Activity ‘E’
# Activities
Instance 2
6 Activity ‘A’7 Activity ‘B’
8 Activity ‘D’9 Activity ‘C’
10 Activity ‘E’
Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
Slide 11 of 15
Step 2: “Execution” of a process model
The execution of a process model is simulated with an algorithmthat performs a visit of the graph
ActivityTracer(a, s)
Input: a: the current activitys: a stack (last-in-first-out queue) of activities
1 if s = ∅ or top(s) 6= a then
2 RecordActivity(a)
3 if deg→(a) = 1 then4 ActivityTracer(out(a), s)
5 else if deg→(a) > 1 then6 if Tout (a) = XOR then7 a1 ← random(out(a))8 ActivityTracer(a1, s)
9 else if Tout (a) = AND then10 aj ← join(a)
11 push(s, aj )
12 foreach ai ∈ out(a) do13 ActivityTracer(ai , s)
14 end15 pop(s)16 ActivityTracer(aj , s)
17 end
18 end
19 end
A B
C
D
E
# Activities
Instance 1
1 Activity ‘A’2 Activity ‘B’3 Activity ‘C’
4 Activity ‘D’5 Activity ‘E’
# Activities
Instance 2
6 Activity ‘A’7 Activity ‘B’8 Activity ‘D’
9 Activity ‘C’10 Activity ‘E’
Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
Slide 11 of 15
Step 2: “Execution” of a process model
The execution of a process model is simulated with an algorithmthat performs a visit of the graph
ActivityTracer(a, s)
Input: a: the current activitys: a stack (last-in-first-out queue) of activities
1 if s = ∅ or top(s) 6= a then
2 RecordActivity(a)
3 if deg→(a) = 1 then4 ActivityTracer(out(a), s)
5 else if deg→(a) > 1 then6 if Tout (a) = XOR then7 a1 ← random(out(a))8 ActivityTracer(a1, s)
9 else if Tout (a) = AND then10 aj ← join(a)
11 push(s, aj )
12 foreach ai ∈ out(a) do13 ActivityTracer(ai , s)
14 end15 pop(s)16 ActivityTracer(aj , s)
17 end
18 end
19 end
A B
C
D
E
# Activities
Instance 1
1 Activity ‘A’2 Activity ‘B’3 Activity ‘C’
4 Activity ‘D’5 Activity ‘E’
# Activities
Instance 2
6 Activity ‘A’7 Activity ‘B’8 Activity ‘D’
9 Activity ‘C’10 Activity ‘E’
Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
Slide 11 of 15
Step 2: “Execution” of a process model
The execution of a process model is simulated with an algorithmthat performs a visit of the graph
ActivityTracer(a, s)
Input: a: the current activitys: a stack (last-in-first-out queue) of activities
1 if s = ∅ or top(s) 6= a then
2 RecordActivity(a)
3 if deg→(a) = 1 then4 ActivityTracer(out(a), s)
5 else if deg→(a) > 1 then6 if Tout (a) = XOR then7 a1 ← random(out(a))8 ActivityTracer(a1, s)
9 else if Tout (a) = AND then10 aj ← join(a)
11 push(s, aj )
12 foreach ai ∈ out(a) do13 ActivityTracer(ai , s)
14 end15 pop(s)16 ActivityTracer(aj , s)
17 end
18 end
19 end
A B
C
D
E
# Activities
Instance 1
1 Activity ‘A’2 Activity ‘B’3 Activity ‘C’
4 Activity ‘D’5 Activity ‘E’
# Activities
Instance 2
6 Activity ‘A’7 Activity ‘B’8 Activity ‘D’
9 Activity ‘C’10 Activity ‘E’
Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
Slide 11 of 15
Step 2: “Execution” of a process model
The execution of a process model is simulated with an algorithmthat performs a visit of the graph
ActivityTracer(a, s)
Input: a: the current activitys: a stack (last-in-first-out queue) of activities
1 if s = ∅ or top(s) 6= a then
2 RecordActivity(a)
3 if deg→(a) = 1 then4 ActivityTracer(out(a), s)
5 else if deg→(a) > 1 then6 if Tout (a) = XOR then7 a1 ← random(out(a))8 ActivityTracer(a1, s)
9 else if Tout (a) = AND then10 aj ← join(a)
11 push(s, aj )
12 foreach ai ∈ out(a) do13 ActivityTracer(ai , s)
14 end15 pop(s)16 ActivityTracer(aj , s)
17 end
18 end
19 end
A B
C
D
E
# Activities
Instance 1
1 Activity ‘A’2 Activity ‘B’3 Activity ‘C’4 Activity ‘D’
5 Activity ‘E’
# Activities
Instance 2
6 Activity ‘A’7 Activity ‘B’8 Activity ‘D’9 Activity ‘C’
10 Activity ‘E’
Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
Slide 11 of 15
Step 2: “Execution” of a process model
The execution of a process model is simulated with an algorithmthat performs a visit of the graph
ActivityTracer(a, s)
Input: a: the current activitys: a stack (last-in-first-out queue) of activities
1 if s = ∅ or top(s) 6= a then
2 RecordActivity(a)
3 if deg→(a) = 1 then4 ActivityTracer(out(a), s)
5 else if deg→(a) > 1 then6 if Tout (a) = XOR then7 a1 ← random(out(a))8 ActivityTracer(a1, s)
9 else if Tout (a) = AND then10 aj ← join(a)
11 push(s, aj )
12 foreach ai ∈ out(a) do13 ActivityTracer(ai , s)
14 end15 pop(s)16 ActivityTracer(aj , s)
17 end
18 end
19 end
A B
C
D
E
# Activities
Instance 1
1 Activity ‘A’2 Activity ‘B’3 Activity ‘C’4 Activity ‘D’
5 Activity ‘E’
# Activities
Instance 2
6 Activity ‘A’7 Activity ‘B’8 Activity ‘D’9 Activity ‘C’
10 Activity ‘E’
Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
Slide 11 of 15
Step 2: “Execution” of a process model
The execution of a process model is simulated with an algorithmthat performs a visit of the graph
ActivityTracer(a, s)
Input: a: the current activitys: a stack (last-in-first-out queue) of activities
1 if s = ∅ or top(s) 6= a then
2 RecordActivity(a)
3 if deg→(a) = 1 then4 ActivityTracer(out(a), s)
5 else if deg→(a) > 1 then6 if Tout (a) = XOR then7 a1 ← random(out(a))8 ActivityTracer(a1, s)
9 else if Tout (a) = AND then10 aj ← join(a)
11 push(s, aj )
12 foreach ai ∈ out(a) do13 ActivityTracer(ai , s)
14 end15 pop(s)16 ActivityTracer(aj , s)
17 end
18 end
19 end
A B
C
D
E
# Activities
Instance 1
1 Activity ‘A’2 Activity ‘B’3 Activity ‘C’4 Activity ‘D’
5 Activity ‘E’
# Activities
Instance 2
6 Activity ‘A’7 Activity ‘B’8 Activity ‘D’9 Activity ‘C’
10 Activity ‘E’
Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
Slide 11 of 15
Step 2: “Execution” of a process model
The execution of a process model is simulated with an algorithmthat performs a visit of the graph
ActivityTracer(a, s)
Input: a: the current activitys: a stack (last-in-first-out queue) of activities
1 if s = ∅ or top(s) 6= a then
2 RecordActivity(a)
3 if deg→(a) = 1 then4 ActivityTracer(out(a), s)
5 else if deg→(a) > 1 then6 if Tout (a) = XOR then7 a1 ← random(out(a))8 ActivityTracer(a1, s)
9 else if Tout (a) = AND then10 aj ← join(a)
11 push(s, aj )
12 foreach ai ∈ out(a) do13 ActivityTracer(ai , s)
14 end15 pop(s)16 ActivityTracer(aj , s)
17 end
18 end
19 end
A B
C
D
E
# Activities
Instance 1
1 Activity ‘A’2 Activity ‘B’3 Activity ‘C’4 Activity ‘D’5 Activity ‘E’
# Activities
Instance 2
6 Activity ‘A’7 Activity ‘B’8 Activity ‘D’9 Activity ‘C’
10 Activity ‘E’
Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
Slide 11 of 15
Step 2: “Execution” of a process model
The execution of a process model is simulated with an algorithmthat performs a visit of the graph
ActivityTracer(a, s)
Input: a: the current activitys: a stack (last-in-first-out queue) of activities
1 if s = ∅ or top(s) 6= a then
2 RecordActivity(a)
3 if deg→(a) = 1 then4 ActivityTracer(out(a), s)
5 else if deg→(a) > 1 then6 if Tout (a) = XOR then7 a1 ← random(out(a))8 ActivityTracer(a1, s)
9 else if Tout (a) = AND then10 aj ← join(a)
11 push(s, aj )
12 foreach ai ∈ out(a) do13 ActivityTracer(ai , s)
14 end15 pop(s)16 ActivityTracer(aj , s)
17 end
18 end
19 end
A B
C
D
E
# Activities
Instance 1
1 Activity ‘A’2 Activity ‘B’3 Activity ‘C’4 Activity ‘D’5 Activity ‘E’
# Activities
Instance 2
6 Activity ‘A’7 Activity ‘B’8 Activity ‘D’9 Activity ‘C’
10 Activity ‘E’
Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
Slide 12 of 15
The implementation of PLG (library + GUI)
The tool has been implemented in Java language is composed of
A library for the generation of random processes and logs
A GUI, as proof-of-concept of the main feature of the library
The library uses ProM library and generates logs in MXML format
Process models can be stored in .plg files
Models can be exported in dot files as Heuristics Net orconverted into Petri Net
Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
Slide 13 of 15
Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
Slide 13 of 15
Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
Slide 13 of 15
Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
Slide 13 of 15
Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
Slide 14 of 15
Process generation limitation
Main limitation of the approach is that it can’t generate allthe possible models
Example of construct that can’t be generated are “interleavedloops”
. . . A . . . G1 G2. . . B . . .
G3
G4
Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
Slide 15 of 15
Conclusions and future works
In this work we have presented a framework for the generation ofbusiness processes and their executions logs
Real processes are composition of well-known patterns
The system combine those patterns creating new processes
Each process can be executed
Future works include
Characterization of the space of generated models
Study of the “realisticness” of the generated models
Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
Recommended