PLG: a Framework for the Generation of Business Process ...€¦ · PLG: a Framework for the...

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