Upgrade to Pro — share decks privately, control downloads, hide ads and more …

PLG: a Framework for the Generation of Business Process Models and their Execution Logs

0b6203b08e1c063c97bb25abfc3842ec?s=47 Andrea Burattin
September 13, 2010

PLG: a Framework for the Generation of Business Process Models and their Execution Logs

Evaluating process mining algorithms would require the availability of a suite of real-world business processes and their execution logs, which hardly are available. In this paper we propose an approach for the random generation of business processes and their execution logs. The proposed approach is based on the generation of process descriptions via a stochastic context-free grammar whose definition is based on well-known process patterns. An algorithm for the generation of execution instances is also proposed. The implemented tools are publicly available.

More info: http://andrea.burattin.net/publications/2010-bpi

0b6203b08e1c063c97bb25abfc3842ec?s=128

Andrea Burattin

September 13, 2010
Tweet

Transcript

  1. PLG: a Framework for the Generation of Business Process Models

    and their Execution Logs Andrea Burattin and Alessandro Sperduti Department of Pure and Applied Mathematics University of Padua, Italy September 13th, 2010 Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
  2. Slide 2 of 15 Why process models and logs are

    needed? Process models and executions logs are fundamental for the design of process mining algorithm Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
  3. Slide 2 of 15 Why process models and logs are

    needed? Process models and executions logs are fundamental for the design of process mining algorithm Process models Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
  4. Slide 2 of 15 Why process models and logs are

    needed? Process models and executions logs are fundamental for the design of process mining algorithm Process models Executions Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
  5. Slide 2 of 15 Why process models and logs are

    needed? Process models and executions logs are fundamental for the design of process mining algorithm Process models Executions Processes logs Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
  6. Slide 2 of 15 Why process models and logs are

    needed? Process models and executions logs are fundamental for the design of process mining algorithm Process models Executions Processes logs Mined process models process mining Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
  7. Slide 2 of 15 Why process models and logs are

    needed? Process models and executions logs are fundamental for the design of 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
  8. 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
  9. 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 of process models and logs Often those logs are private and other groups can not recreate the results Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
  10. 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 of process models and logs Often those logs are private and other groups can not recreate the 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 with their own new algorithms Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
  11. 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
  12. Slide 6 of 15 Step 1: Generation of random processes

    Observations for the generation approach Real business processes typically are combination of well known workflow patterns We can randomly compose them to obtain new processes Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
  13. Slide 6 of 15 Step 1: Generation of random processes

    Observations for the generation approach Real business processes typically are combination of well known 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
  14. 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
  15. 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
  16. 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
  17. 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 G G 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
  18. 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
  19. 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 probability distributions 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
  20. 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 Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
  21. 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
  22. Slide 10 of 15 Examples of process generation Internal representation

    a ⊗ b ∧ c d ∧ e f ⊗ g astart aend Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
  23. 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
  24. Slide 11 of 15 Step 2: “Execution” of a process

    model The execution of a process model is simulated with an algorithm that performs a visit of the graph ActivityTracer(a, s) Input: a: the current activity s: a stack (last-in-first-out queue) of activities 1 if s = ∅ or top(s) = a then 2 RecordActivity(a) 3 if deg→(a) = 1 then 4 ActivityTracer(out(a), s) 5 else if deg→(a) > 1 then 6 if Tout (a) = XOR then 7 a1 ← random(out(a)) 8 ActivityTracer(a1, s) 9 else if Tout (a) = AND then 10 aj ← join(a) 11 push(s, aj ) 12 foreach ai ∈ out(a) do 13 ActivityTracer(ai , s) 14 end 15 pop(s) 16 ActivityTracer(aj , s) 17 end 18 end 19 end Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
  25. Slide 11 of 15 Step 2: “Execution” of a process

    model The execution of a process model is simulated with an algorithm that performs a visit of the graph ActivityTracer(a, s) Input: a: the current activity s: a stack (last-in-first-out queue) of activities 1 if s = ∅ or top(s) = a then 2 RecordActivity(a) 3 if deg→(a) = 1 then 4 ActivityTracer(out(a), s) 5 else if deg→(a) > 1 then 6 if Tout (a) = XOR then 7 a1 ← random(out(a)) 8 ActivityTracer(a1, s) 9 else if Tout (a) = AND then 10 aj ← join(a) 11 push(s, aj ) 12 foreach ai ∈ out(a) do 13 ActivityTracer(ai , s) 14 end 15 pop(s) 16 ActivityTracer(aj , s) 17 end 18 end 19 end A B C D E Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
  26. Slide 11 of 15 Step 2: “Execution” of a process

    model The execution of a process model is simulated with an algorithm that performs a visit of the graph ActivityTracer(a, s) Input: a: the current activity s: a stack (last-in-first-out queue) of activities 1 if s = ∅ or top(s) = a then 2 RecordActivity(a) 3 if deg→(a) = 1 then 4 ActivityTracer(out(a), s) 5 else if deg→(a) > 1 then 6 if Tout (a) = XOR then 7 a1 ← random(out(a)) 8 ActivityTracer(a1, s) 9 else if Tout (a) = AND then 10 aj ← join(a) 11 push(s, aj ) 12 foreach ai ∈ out(a) do 13 ActivityTracer(ai , s) 14 end 15 pop(s) 16 ActivityTracer(aj , s) 17 end 18 end 19 end A B C D E Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
  27. Slide 11 of 15 Step 2: “Execution” of a process

    model The execution of a process model is simulated with an algorithm that performs a visit of the graph ActivityTracer(a, s) Input: a: the current activity s: a stack (last-in-first-out queue) of activities 1 if s = ∅ or top(s) = a then 2 RecordActivity(a) 3 if deg→(a) = 1 then 4 ActivityTracer(out(a), s) 5 else if deg→(a) > 1 then 6 if Tout (a) = XOR then 7 a1 ← random(out(a)) 8 ActivityTracer(a1, s) 9 else if Tout (a) = AND then 10 aj ← join(a) 11 push(s, aj ) 12 foreach ai ∈ out(a) do 13 ActivityTracer(ai , s) 14 end 15 pop(s) 16 ActivityTracer(aj , s) 17 end 18 end 19 end A B C D E # Activities Instance 1 1 Activity ‘A’ Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
  28. Slide 11 of 15 Step 2: “Execution” of a process

    model The execution of a process model is simulated with an algorithm that performs a visit of the graph ActivityTracer(a, s) Input: a: the current activity s: a stack (last-in-first-out queue) of activities 1 if s = ∅ or top(s) = a then 2 RecordActivity(a) 3 if deg→(a) = 1 then 4 ActivityTracer(out(a), s) 5 else if deg→(a) > 1 then 6 if Tout (a) = XOR then 7 a1 ← random(out(a)) 8 ActivityTracer(a1, s) 9 else if Tout (a) = AND then 10 aj ← join(a) 11 push(s, aj ) 12 foreach ai ∈ out(a) do 13 ActivityTracer(ai , s) 14 end 15 pop(s) 16 ActivityTracer(aj , s) 17 end 18 end 19 end A B C D E # Activities Instance 1 1 Activity ‘A’ Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
  29. Slide 11 of 15 Step 2: “Execution” of a process

    model The execution of a process model is simulated with an algorithm that performs a visit of the graph ActivityTracer(a, s) Input: a: the current activity s: a stack (last-in-first-out queue) of activities 1 if s = ∅ or top(s) = a then 2 RecordActivity(a) 3 if deg→(a) = 1 then 4 ActivityTracer(out(a), s) 5 else if deg→(a) > 1 then 6 if Tout (a) = XOR then 7 a1 ← random(out(a)) 8 ActivityTracer(a1, s) 9 else if Tout (a) = AND then 10 aj ← join(a) 11 push(s, aj ) 12 foreach ai ∈ out(a) do 13 ActivityTracer(ai , s) 14 end 15 pop(s) 16 ActivityTracer(aj , s) 17 end 18 end 19 end A B C D E # Activities Instance 1 1 Activity ‘A’ Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
  30. Slide 11 of 15 Step 2: “Execution” of a process

    model The execution of a process model is simulated with an algorithm that performs a visit of the graph ActivityTracer(a, s) Input: a: the current activity s: a stack (last-in-first-out queue) of activities 1 if s = ∅ or top(s) = a then 2 RecordActivity(a) 3 if deg→(a) = 1 then 4 ActivityTracer(out(a), s) 5 else if deg→(a) > 1 then 6 if Tout (a) = XOR then 7 a1 ← random(out(a)) 8 ActivityTracer(a1, s) 9 else if Tout (a) = AND then 10 aj ← join(a) 11 push(s, aj ) 12 foreach ai ∈ out(a) do 13 ActivityTracer(ai , s) 14 end 15 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’ Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
  31. Slide 11 of 15 Step 2: “Execution” of a process

    model The execution of a process model is simulated with an algorithm that performs a visit of the graph ActivityTracer(a, s) Input: a: the current activity s: a stack (last-in-first-out queue) of activities 1 if s = ∅ or top(s) = a then 2 RecordActivity(a) 3 if deg→(a) = 1 then 4 ActivityTracer(out(a), s) 5 else if deg→(a) > 1 then 6 if Tout (a) = XOR then 7 a1 ← random(out(a)) 8 ActivityTracer(a1, s) 9 else if Tout (a) = AND then 10 aj ← join(a) 11 push(s, aj ) 12 foreach ai ∈ out(a) do 13 ActivityTracer(ai , s) 14 end 15 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’ Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
  32. Slide 11 of 15 Step 2: “Execution” of a process

    model The execution of a process model is simulated with an algorithm that performs a visit of the graph ActivityTracer(a, s) Input: a: the current activity s: a stack (last-in-first-out queue) of activities 1 if s = ∅ or top(s) = a then 2 RecordActivity(a) 3 if deg→(a) = 1 then 4 ActivityTracer(out(a), s) 5 else if deg→(a) > 1 then 6 if Tout (a) = XOR then 7 a1 ← random(out(a)) 8 ActivityTracer(a1, s) 9 else if Tout (a) = AND then 10 aj ← join(a) 11 push(s, aj ) 12 foreach ai ∈ out(a) do 13 ActivityTracer(ai , s) 14 end 15 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’ Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
  33. Slide 11 of 15 Step 2: “Execution” of a process

    model The execution of a process model is simulated with an algorithm that performs a visit of the graph ActivityTracer(a, s) Input: a: the current activity s: a stack (last-in-first-out queue) of activities 1 if s = ∅ or top(s) = a then 2 RecordActivity(a) 3 if deg→(a) = 1 then 4 ActivityTracer(out(a), s) 5 else if deg→(a) > 1 then 6 if Tout (a) = XOR then 7 a1 ← random(out(a)) 8 ActivityTracer(a1, s) 9 else if Tout (a) = AND then 10 aj ← join(a) 11 push(s, aj ) 12 foreach ai ∈ out(a) do 13 ActivityTracer(ai , s) 14 end 15 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’ Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
  34. Slide 11 of 15 Step 2: “Execution” of a process

    model The execution of a process model is simulated with an algorithm that performs a visit of the graph ActivityTracer(a, s) Input: a: the current activity s: a stack (last-in-first-out queue) of activities 1 if s = ∅ or top(s) = a then 2 RecordActivity(a) 3 if deg→(a) = 1 then 4 ActivityTracer(out(a), s) 5 else if deg→(a) > 1 then 6 if Tout (a) = XOR then 7 a1 ← random(out(a)) 8 ActivityTracer(a1, s) 9 else if Tout (a) = AND then 10 aj ← join(a) 11 push(s, aj ) 12 foreach ai ∈ out(a) do 13 ActivityTracer(ai , s) 14 end 15 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’ Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
  35. Slide 11 of 15 Step 2: “Execution” of a process

    model The execution of a process model is simulated with an algorithm that performs a visit of the graph ActivityTracer(a, s) Input: a: the current activity s: a stack (last-in-first-out queue) of activities 1 if s = ∅ or top(s) = a then 2 RecordActivity(a) 3 if deg→(a) = 1 then 4 ActivityTracer(out(a), s) 5 else if deg→(a) > 1 then 6 if Tout (a) = XOR then 7 a1 ← random(out(a)) 8 ActivityTracer(a1, s) 9 else if Tout (a) = AND then 10 aj ← join(a) 11 push(s, aj ) 12 foreach ai ∈ out(a) do 13 ActivityTracer(ai , s) 14 end 15 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’ Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
  36. Slide 11 of 15 Step 2: “Execution” of a process

    model The execution of a process model is simulated with an algorithm that performs a visit of the graph ActivityTracer(a, s) Input: a: the current activity s: a stack (last-in-first-out queue) of activities 1 if s = ∅ or top(s) = a then 2 RecordActivity(a) 3 if deg→(a) = 1 then 4 ActivityTracer(out(a), s) 5 else if deg→(a) > 1 then 6 if Tout (a) = XOR then 7 a1 ← random(out(a)) 8 ActivityTracer(a1, s) 9 else if Tout (a) = AND then 10 aj ← join(a) 11 push(s, aj ) 12 foreach ai ∈ out(a) do 13 ActivityTracer(ai , s) 14 end 15 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’ Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
  37. Slide 11 of 15 Step 2: “Execution” of a process

    model The execution of a process model is simulated with an algorithm that performs a visit of the graph ActivityTracer(a, s) Input: a: the current activity s: a stack (last-in-first-out queue) of activities 1 if s = ∅ or top(s) = a then 2 RecordActivity(a) 3 if deg→(a) = 1 then 4 ActivityTracer(out(a), s) 5 else if deg→(a) > 1 then 6 if Tout (a) = XOR then 7 a1 ← random(out(a)) 8 ActivityTracer(a1, s) 9 else if Tout (a) = AND then 10 aj ← join(a) 11 push(s, aj ) 12 foreach ai ∈ out(a) do 13 ActivityTracer(ai , s) 14 end 15 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’ Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
  38. Slide 11 of 15 Step 2: “Execution” of a process

    model The execution of a process model is simulated with an algorithm that performs a visit of the graph ActivityTracer(a, s) Input: a: the current activity s: a stack (last-in-first-out queue) of activities 1 if s = ∅ or top(s) = a then 2 RecordActivity(a) 3 if deg→(a) = 1 then 4 ActivityTracer(out(a), s) 5 else if deg→(a) > 1 then 6 if Tout (a) = XOR then 7 a1 ← random(out(a)) 8 ActivityTracer(a1, s) 9 else if Tout (a) = AND then 10 aj ← join(a) 11 push(s, aj ) 12 foreach ai ∈ out(a) do 13 ActivityTracer(ai , s) 14 end 15 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’ Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
  39. Slide 11 of 15 Step 2: “Execution” of a process

    model The execution of a process model is simulated with an algorithm that performs a visit of the graph ActivityTracer(a, s) Input: a: the current activity s: a stack (last-in-first-out queue) of activities 1 if s = ∅ or top(s) = a then 2 RecordActivity(a) 3 if deg→(a) = 1 then 4 ActivityTracer(out(a), s) 5 else if deg→(a) > 1 then 6 if Tout (a) = XOR then 7 a1 ← random(out(a)) 8 ActivityTracer(a1, s) 9 else if Tout (a) = AND then 10 aj ← join(a) 11 push(s, aj ) 12 foreach ai ∈ out(a) do 13 ActivityTracer(ai , s) 14 end 15 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’ Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
  40. Slide 11 of 15 Step 2: “Execution” of a process

    model The execution of a process model is simulated with an algorithm that performs a visit of the graph ActivityTracer(a, s) Input: a: the current activity s: a stack (last-in-first-out queue) of activities 1 if s = ∅ or top(s) = a then 2 RecordActivity(a) 3 if deg→(a) = 1 then 4 ActivityTracer(out(a), s) 5 else if deg→(a) > 1 then 6 if Tout (a) = XOR then 7 a1 ← random(out(a)) 8 ActivityTracer(a1, s) 9 else if Tout (a) = AND then 10 aj ← join(a) 11 push(s, aj ) 12 foreach ai ∈ out(a) do 13 ActivityTracer(ai , s) 14 end 15 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
  41. 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 or converted into Petri Net Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
  42. Slide 13 of 15 Andrea Burattin and Alessandro Sperduti PLG:

    Framework for Generation of Processes and Logs
  43. Slide 13 of 15 Andrea Burattin and Alessandro Sperduti PLG:

    Framework for Generation of Processes and Logs
  44. Slide 13 of 15 Andrea Burattin and Alessandro Sperduti PLG:

    Framework for Generation of Processes and Logs
  45. Slide 13 of 15 Andrea Burattin and Alessandro Sperduti PLG:

    Framework for Generation of Processes and Logs
  46. Slide 14 of 15 Process generation limitation Main limitation of

    the approach is that it can’t generate all the possible models Example of construct that can’t be generated are “interleaved loops” . . . A . . . G1 G2 . . . B . . . G3 G4 Andrea Burattin and Alessandro Sperduti PLG: Framework for Generation of Processes and Logs
  47. Slide 15 of 15 Conclusions and future works In this

    work we have presented a framework for the generation of business 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