Übersetzung von Petrinetzen in BPEL-Prozesse

1,061 views

Published on

Conference presentation given by Niels Lohmann on March 13, 2008 in Berlin, Germany at the Modellierung 2008.

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,061
On SlideShare
0
From Embeds
0
Number of Embeds
12
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Übersetzung von Petrinetzen in BPEL-Prozesse

  1. 1. Übersetzung  von  Petrinetzen in  BPEL-­‐Prozesse Fully-­‐automatic  Translation  of  Open  Workflow  Net   Models  into  Simple  Abstract  BPEL  Processes Niels  Lohmann  und  Jens  Kleine Modellierung  2008  ▪  Berlin  ▪  13.  März  2008 UNIVERSITÄT ROSTOCK
  2. 2. BPEL • Sprache  zur  Spezifikation  und  Implementierung  von   Geschäftsprozessen  mit  Webservices • "Programmieren  im  Großen" • Spezifikation  (abstrakte  Prozesse)  Beschreibung  von  "Business  Protocols"  Auslassen  von  internen  Details 2
  3. 3. BPEL • Sprache  zur  Spezifikation  und  Implementierung  von   Geschäftsprozessen  mit  Webservices • "Programmieren  im  Großen" • Spezifikation  (abstrakte  Prozesse)  Beschreibung  von  "Business  Protocols"  Auslassen  von  internen  Details • Implementierung  (ausführbare  Prozesse)  Verfeinerung  der  Spezifikation  breite  Werkzeugunterstützung 2
  4. 4. BPEL  zur  Modellierung? • Grenzen  als  Modellierungs-­‐/Spezifikationssprache  XML-­‐basiert:  Wirklich  lesbar?  syntaktische  Einschränkungen:  Nicht  alles  erlaubt.  Erbe  der  Eltern:  Mischung  von  Konzepten <flow>  <links>  <link  name="l1"/>  </links>  <receive  ...> <sequence>    <sources>  <source  linkName"l1"/>  </sources>  <receive  .../>  <reply  ...  /> vs.  </receive>  <reply  ...> </sequence>    <targets>  <target  linkName"l1"/>  </target>  </reply> </flow> 3
  5. 5. Petrinetze • grafischer  Formalismus • formale  Semantik empfange Login • Kontroll-­‐/Datenfluss sende Bestätigung 4
  6. 6. Petrinetze • grafischer  Formalismus • formale  Semantik empfange Login • Kontroll-­‐/Datenfluss • einfache  Erweiterung sende Bestätigung zur  Modellierung von  asynchronem Nachrichtenaustausch 4
  7. 7. Petrinetze • grafischer  Formalismus • formale  Semantik empfange Login Login • Kontroll-­‐/Datenfluss • einfache  Erweiterung Bestätigung sende Bestätigung zur  Modellierung von  asynchronem Nachrichtenaustausch 4
  8. 8. Petrinetzmodelle  für  Services • Analyse  von  Services  Kompatibilität  Compliance Login empfange Login  Bedienbarkeit • Unterstützung sende Bestätigung Bestätigung  Partnersynthese  Adaptersynthese  Diagnose/Korrektur 5
  9. 9. Zwei  Welten BPEL Petrinetz-­‐Modell LÜCKE Analyse Web  Service • Kompatibilität • Compliance Spezifikation/ • Bedienbarkeit Contract Unterstützung • Partnersynthese Choreographie • Adaptersynthese • Diagnose/Korrektur 6
  10. 10. Zwei  Welten BPEL Petrinetz-­‐Modell LÜCKE Analyse Web  Service • Kompatibilität • Compliance Spezifikation/ BPEL2oWFN • Bedienbarkeit Contract Unterstützung • Partnersynthese Choreographie • Adaptersynthese • Diagnose/Korrektur 6
  11. 11. Übersetzung  Petrinetze  ➙  BPEL 7
  12. 12. Übersetzung  Petrinetze  ➙  BPEL • Regelbasierter  Übersetzungsansatz  Teilnetze  werden  zusammengefasst  und  mit BPEL-­‐Code  annotiert  Endergebnis  ist  einziger  Knoten  mit  komplettem   BPEL-­‐Prozess  als  Annotation 7
  13. 13. Übersetzung  Petrinetze  ➙  BPEL • Regelbasierter  Übersetzungsansatz  Teilnetze  werden  zusammengefasst  und  mit BPEL-­‐Code  annotiert  Endergebnis  ist  einziger  Knoten  mit  komplettem   BPEL-­‐Prozess  als  Annotation • Herausforderung:  BPEL  ist  blockorientiert  eine  Anfangsaktivität,  Ende  implizit  Schleifen  syntaktisch  eingeschränkt  Mehrfachausführung  nur  innerhalb  von  Schleifen   7
  14. 14. Beispiel Login Angebot speichern Bestellung fertig ablehnen Bestätigung annehmen 8
  15. 15. Beispiel zwei  Startknoten Login Angebot speichern Bestellung fertig ablehnen Bestätigung annehmen 8
  16. 16. Beispiel zwei  Startknoten Login Angebot speichern Bestellung fertig ablehnen Bestätigung annehmen 8
  17. 17. Beispiel zwei  Startknoten Login Angebot speichern Bestellung fertig ablehnen Bestätigung annehmen beliebige Schleife 8
  18. 18. Beispiel zwei  Startknoten Login Angebot speichern Bestellung fertig ablehnen Bestätigung annehmen beliebige Schleife 8
  19. 19. Beispiel zwei  Startknoten Login Angebot speichern Bestellung fertig ablehnen Bestätigung annehmen mehrfache beliebige Ausführung Schleife 8
  20. 20. Beispiel zwei  Startknoten Login Angebot speichern Bestellung fertig ablehnen Bestätigung annehmen mehrfache beliebige Ausführung Schleife 8
  21. 21. Beispiel Login Angebot speichern Bestellung fertig ablehnen Bestätigung annehmen 9
  22. 22. Beispiel Login Angebot speichern Bestellung fertig ablehnen Bestätigung annehmen Kommunikation  annotieren 9
  23. 23. Beispiel Login Angebot speichern Bestellung fertig ablehnen Bestätigung annehmen Kommunikation  annotieren 9
  24. 24. Beispiel <opaqueActivity "speichern"/> <invoke "Angebot"/> <receive "Login"/> <receive "fertig"/> <receive "ablehnen"/> <invoke "Bestätigung"/> <receive "annehmen"/> Kommunikation  annotieren 10
  25. 25. Beispiel <opaqueActivity "speichern"/> Empfangsaktivität <invoke "Angebot"/> <receive "Login"/> <receive "fertig"/> <receive "ablehnen"/> <invoke "Bestätigung"/> <receive "annehmen"/> Kommunikation  annotieren 10
  26. 26. Beispiel <opaqueActivity "speichern"/> Empfangsaktivität Sendeaktivität <invoke "Angebot"/> <receive "Login"/> <receive "fertig"/> <receive "ablehnen"/> <invoke "Bestätigung"/> <receive "annehmen"/> Kommunikation  annotieren 10
  27. 27. Beispiel interne  Aktivität <opaqueActivity "speichern"/> Empfangsaktivität Sendeaktivität <invoke "Angebot"/> <receive "Login"/> <receive "fertig"/> <receive "ablehnen"/> <invoke "Bestätigung"/> <receive "annehmen"/> Kommunikation  annotieren 10
  28. 28. Beispiel <opaqueActivity "speichern"/> <invoke "Angebot"/> <receive "Login"/> <receive "fertig"/> <receive "ablehnen"/> <invoke "Bestätigung"/> <receive "annehmen"/> 11
  29. 29. Beispiel Mehrfachausführung  entfalten <opaqueActivity "speichern"/> <invoke "Angebot"/> <receive "Login"/> <receive "fertig"/> <receive "ablehnen"/> <invoke "Bestätigung"/> <receive "annehmen"/> 11
  30. 30. Beispiel Mehrfachausführung  entfalten <opaqueActivity "speichern"/> <invoke "Angebot"/> <receive "Login"/> <receive "fertig"/> <receive "ablehnen"/> <invoke "Bestätigung"/> <receive "annehmen"/> 11
  31. 31. Beispiel Mehrfachausführung  entfalten <opaqueActivity "speichern"/> <invoke "Angebot"/> <receive "Login"/> <receive "ablehnen"/> <invoke "Bestätigung"/> <receive "annehmen"/> <receive "fertig"/> <invoke "Bestätigung"/> 12
  32. 32. Beispiel <opaqueActivity "speichern"/> <invoke "Angebot"/> <receive "Login"/> <receive "ablehnen"/> <invoke "Bestätigung"/> <receive "annehmen"/> <receive "fertig"/> <invoke "Bestätigung"/> 13
  33. 33. Beispiel Sequenzen  zusammenfassen <opaqueActivity "speichern"/> <invoke "Angebot"/> <receive "Login"/> <receive "ablehnen"/> <invoke "Bestätigung"/> <receive "annehmen"/> <receive "fertig"/> <invoke "Bestätigung"/> 13
  34. 34. Beispiel Sequenzen  zusammenfassen <opaqueActivity "speichern"/> <invoke "Angebot"/> <receive "Login"/> <receive "ablehnen"/> <invoke "Bestätigung"/> <receive "annehmen"/> <receive "fertig"/> <invoke "Bestätigung"/> 13
  35. 35. Beispiel Sequenzen  zusammenfassen <opaqueActivity "speichern"/> <invoke "Angebot"/> <receive "Login"/> <receive "ablehnen"/> <invoke "Bestätigung"/> <receive "annehmen"/> <receive "fertig"/> <invoke "Bestätigung"/> 13
  36. 36. Beispiel Sequenzen  zusammenfassen <opaqueActivity "speichern"/> <invoke "Angebot"/> <receive "Login"/> <receive "ablehnen"/> <invoke "Bestätigung"/> <receive "annehmen"/> <receive "fertig"/> <invoke "Bestätigung"/> 13
  37. 37. Beispiel Sequenzen  zusammenfassen <invoke "Angebot"/> <sequence> <receive "Login"/> <invoke "Bestätigung"/> </sequence> <receive "ablehnen"/> <sequence> <receive "fertig"/> <sequence> <invoke "Bestätigung"/> <receive "annehmen"/> </sequence> <opaqueActivity "speichern"/> </sequence> 14
  38. 38. Beispiel <invoke "Angebot"/> <sequence> <receive "Login"/> <invoke "Bestätigung"/> </sequence> <receive "ablehnen"/> <sequence> <receive "fertig"/> <sequence> <invoke "Bestätigung"/> <receive "annehmen"/> </sequence> <opaqueActivity "speichern"/> </sequence> 15
  39. 39. Beispiel <invoke "Angebot"/> <sequence> <receive "Login"/> <invoke "Bestätigung"/> </sequence> <receive "ablehnen"/> <sequence> <receive "fertig"/> <sequence> <invoke "Bestätigung"/> <receive "annehmen"/> </sequence> <opaqueActivity "speichern"/> </sequence> Alternative  zusammenfassen 15
  40. 40. Beispiel <invoke "Angebot"/> <sequence> <receive "Login"/> <invoke "Bestätigung"/> </sequence> <receive "ablehnen"/> <sequence> <receive "fertig"/> <sequence> <invoke "Bestätigung"/> <receive "annehmen"/> </sequence> <opaqueActivity "speichern"/> </sequence> Alternative  zusammenfassen 15
  41. 41. Beispiel <invoke "Angebot"/> <sequence> <receive "Login"/> <invoke "Bestätigung"/> </sequence> Split <receive "ablehnen"/> <sequence> <receive "fertig"/> <sequence> <invoke "Bestätigung"/> <receive "annehmen"/> </sequence> <opaqueActivity "speichern"/> </sequence> Alternative  zusammenfassen 15
  42. 42. Beispiel <invoke "Angebot"/> <sequence> <receive "Login"/> <invoke "Bestätigung"/> </sequence> Split <receive "ablehnen"/> <sequence> <receive "fertig"/> <sequence> <invoke "Bestätigung"/> <receive "annehmen"/> </sequence> <opaqueActivity "speichern"/> </sequence> Alternative  zusammenfassen 15
  43. 43. Beispiel Merge <invoke "Angebot"/> <sequence> <receive "Login"/> <invoke "Bestätigung"/> </sequence> Split <receive "ablehnen"/> <sequence> <receive "fertig"/> <sequence> <invoke "Bestätigung"/> <receive "annehmen"/> </sequence> <opaqueActivity "speichern"/> </sequence> Alternative  zusammenfassen 15
  44. 44. Beispiel <invoke "Angebot"/> <sequence> <receive "Login"/> <invoke "Bestätigung"/> </sequence> <sequence> <pick> <receive "fertig"/> <onMessage "ablehnen"/> <invoke "Bestätigung"/> <onMessage "annehmen"> </sequence> <opaqueActivity "speichern"/> </onMessage> </pick> Alternative  zusammenfassen 16
  45. 45. Beispiel <invoke "Angebot"/> <sequence> <receive "Login"/> <invoke "Bestätigung"/> </sequence> externe  Entscheidung <sequence> <pick> <receive "fertig"/> <onMessage "ablehnen"/> <invoke "Bestätigung"/> <onMessage "annehmen"> </sequence> <opaqueActivity "speichern"/> </onMessage> </pick> Alternative  zusammenfassen 16
  46. 46. Beispiel <invoke "Angebot"/> <sequence> <receive "Login"/> <invoke "Bestätigung"/> </sequence> <sequence> <pick> <receive "fertig"/> <onMessage "ablehnen"/> <invoke "Bestätigung"/> <onMessage "annehmen"> </sequence> <opaqueActivity "speichern"/> </onMessage> </pick> 17
  47. 47. Beispiel <invoke "Angebot"/> <sequence> <receive "Login"/> <invoke "Bestätigung"/> </sequence> <sequence> <pick> <receive "fertig"/> <onMessage "ablehnen"/> <invoke "Bestätigung"/> <onMessage "annehmen"> </sequence> <opaqueActivity "speichern"/> </onMessage> </pick> Schleife  zusammenfassen 17
  48. 48. Beispiel <invoke "Angebot"/> <sequence> <receive "Login"/> <invoke "Bestätigung"/> </sequence> <sequence> <pick> <receive "fertig"/> <onMessage "ablehnen"/> <invoke "Bestätigung"/> <onMessage "annehmen"> </sequence> <opaqueActivity "speichern"/> </onMessage> </pick> Schleife  zusammenfassen 17
  49. 49. Beispiel <invoke "Angebot"/> <sequence> <receive "Login"/> <invoke "Bestätigung"/> </sequence> <sequence> <while> <receive "fertig"/> <pick> <invoke "Bestätigung"/> <onMessage "ablehnen"> </sequence> <invoke "Angebot"/> </onMessage> <onMessage "annehmen"> <sequence> <invoke "Angebot"/> <opaqueActivity "speichern"/> </sequence> </onMessage> </pick> Schleife  zusammenfassen </while> 18
  50. 50. Beispiel <invoke "Angebot"/> <sequence> <receive "Login"/> <invoke "Bestätigung"/> </sequence> <sequence> <while> <receive "fertig"/> <pick> <invoke "Bestätigung"/> <onMessage "ablehnen"> </sequence> <invoke "Angebot"/> </onMessage> <onMessage "annehmen"> <sequence> <invoke "Angebot"/> <opaqueActivity "speichern"/> </sequence> </onMessage> </pick> </while> 19
  51. 51. Beispiel <invoke "Angebot"/> <sequence> <receive "Login"/> <invoke "Bestätigung"/> </sequence> <sequence> <while> <receive "fertig"/> <pick> <invoke "Bestätigung"/> <onMessage "ablehnen"> </sequence> <invoke "Angebot"/> </onMessage> <onMessage "annehmen"> <sequence> <invoke "Angebot"/> <opaqueActivity "speichern"/> </sequence> </onMessage> </pick> Sequenz  zusammenfassen </while> 19
  52. 52. Beispiel <invoke "Angebot"/> <sequence> <receive "Login"/> <invoke "Bestätigung"/> </sequence> <sequence> <while> <receive "fertig"/> <pick> <invoke "Bestätigung"/> <onMessage "ablehnen"> </sequence> <invoke "Angebot"/> </onMessage> <onMessage "annehmen"> <sequence> <invoke "Angebot"/> <opaqueActivity "speichern"/> </sequence> </onMessage> </pick> Sequenz  zusammenfassen </while> 19
  53. 53. Beispiel <sequence> <invoke "Angebot"/> <while> <pick> <onMessage "ablehnen"> <invoke "Angebot"/> </onMessage> <sequence> <onMessage "annehmen"> <receive "Login"/> <sequence> <invoke "Bestätigung"/> <invoke "Angebot"/> </sequence> <opaqueActivity "speichern"/> </sequence> </onMessage> </pick> </while> <receive "fertig"/> <invoke "Bestätigung"/> </sequence> Sequenz  zusammenfassen 20
  54. 54. Beispiel <sequence> <invoke "Angebot"/> <while> <pick> <onMessage "ablehnen"> <invoke "Angebot"/> </onMessage> <sequence> <onMessage "annehmen"> <receive "Login"/> <sequence> <invoke "Bestätigung"/> <invoke "Angebot"/> </sequence> <opaqueActivity "speichern"/> </sequence> </onMessage> </pick> </while> <receive "fertig"/> <invoke "Bestätigung"/> </sequence> 21
  55. 55. Beispiel <sequence> <invoke "Angebot"/> <while> <pick> <onMessage "ablehnen"> <invoke "Angebot"/> </onMessage> <sequence> <onMessage "annehmen"> <receive "Login"/> <sequence> <invoke "Bestätigung"/> <invoke "Angebot"/> </sequence> <opaqueActivity "speichern"/> </sequence> </onMessage> </pick> </while> <receive "fertig"/> <invoke "Bestätigung"/> nebenläufige  Stränge </sequence> zusammenfassen 21
  56. 56. Beispiel <sequence> <invoke "Angebot"/> <while> <pick> <onMessage "ablehnen"> <invoke "Angebot"/> </onMessage> <sequence> <onMessage "annehmen"> <receive "Login"/> <sequence> <invoke "Bestätigung"/> <invoke "Angebot"/> </sequence> <opaqueActivity "speichern"/> </sequence> </onMessage> </pick> </while> <receive "fertig"/> <invoke "Bestätigung"/> nebenläufige  Stränge </sequence> zusammenfassen 21
  57. 57. Beispiel <flow> <sequence> <receive "Login"/> <invoke "Bestätigung"/> </sequence> <sequence> <invoke "Angebot"/> <while> <pick> <onMessage "ablehnen"> <invoke "Angebot"/> </onMessage> <onMessage "annehmen"> <sequence> <invoke "Angebot"/> <opaqueActivity "speichern"/> </sequence> </onMessage> </pick> </while> <receive "fertig"/> nebenläufige  Stränge <invoke "Bestätigung"/> </sequence> zusammenfassen </flow> 22
  58. 58. Beispiel <flow> <sequence> <receive "Login"/> <invoke "Bestätigung"/> </sequence> <sequence> <invoke "Angebot"/> <while> <pick> <onMessage "ablehnen"> <invoke "Angebot"/> </onMessage> <onMessage "annehmen"> <sequence> <invoke "Angebot"/> <opaqueActivity "speichern"/> </sequence> </onMessage> </pick> </while> <receive "fertig"/> Transformation <invoke "Bestätigung"/> </sequence> abgeschlossen </flow> 23
  59. 59. Übersetzung  Petrinetze  ➙  BPEL • insgesamt  17  Transformationsregeln • weitere  Regeln  zur  Codeoptimierung • implementiert  im  Werkzeug  oWFN2BPEL • vollautomatische  Übersetzung • anschließende  manuelle  Verfeinerung  zu   ausführbarem  Code 24
  60. 60.                                                                                  Framework BPEL Petrinetz-­‐Modell LÜCKE Analyse Web  Service • Kompatibilität • Compliance Spezifikation/ • Bedienbarkeit Contract Unterstützung • Partnersynthese Choreographie • Adaptersynthese • Diagnose/Korrektur 25
  61. 61.                                                                                  Framework BPEL Petrinetz-­‐Modell LÜCKE Analyse Web  Service • Kompatibilität BPEL2oWFN • Compliance Spezifikation/ • Bedienbarkeit Contract Unterstützung • Partnersynthese Choreographie • Adaptersynthese • Diagnose/Korrektur 25
  62. 62.                                                                                  Framework BPEL Petrinetz-­‐Modell LÜCKE Analyse Web  Service • Kompatibilität BPEL2oWFN • Compliance Spezifikation/ • Bedienbarkeit Contract oWFN2BPEL Unterstützung • Partnersynthese Choreographie • Adaptersynthese • Diagnose/Korrektur 25
  63. 63.                                                                                  Framework BPEL Petrinetz-­‐Modell Analyse Web  Service • Kompatibilität BPEL2oWFN • Compliance Spezifikation/ • Bedienbarkeit Contract oWFN2BPEL Unterstützung • Partnersynthese Choreographie • Adaptersynthese • Diagnose/Korrektur 25
  64. 64. Fazit • Verbindung  von  Petrinetzen  als Modellierungs-­‐/Spezifikationssprache und  BPEL  als  Implementierungs-­‐ Petrinetze – BPEL sprache BPEL – Petrinetze • Vervollständigung  des Tools4BPEL-­‐Frameworks • Übersetzungs-­‐/Analyse-­‐Tools  sind  frei  verfügbar: www.informatik.hu-­‐berlin.de/top/tools4bpel www.informatik.uni-­‐rostock.de/~nl/tools 26
  65. 65. Fazit • Verbindung  von  Petrinetzen  als Modellierungs-­‐/Spezifikationssprache und  BPEL  als  Implementierungs-­‐ Petrinetze – BPEL sprache BPEL – Petrinetze • Vervollständigung  des Tools4BPEL-­‐Frameworks • Übersetzungs-­‐/Analyse-­‐Tools  sind  frei  verfügbar: www.informatik.hu-­‐berlin.de/top/tools4bpel www.informatik.uni-­‐rostock.de/~nl/tools 26
  66. 66. Fazit • Verbindung  von  Petrinetzen  als Modellierungs-­‐/Spezifikationssprache und  BPEL  als  Implementierungs-­‐ Petrinetze – BPEL sprache BPEL – Petrinetze • Vervollständigung  des Tools4BPEL-­‐Frameworks 26
  67. 67. Fazit • Verbindung  von  Petrinetzen  als Modellierungs-­‐/Spezifikationssprache und  BPEL  als  Implementierungs-­‐ Petrinetze – BPEL sprache BPEL – Petrinetze • Vervollständigung  des Tools4BPEL-­‐Frameworks 26
  68. 68. Fazit • Verbindung  von  Petrinetzen  als Modellierungs-­‐/Spezifikationssprache und  BPEL  als  Implementierungs-­‐ Petrinetze – BPEL sprache BPEL – Petrinetze • Vervollständigung  des Tools4BPEL-­‐Frameworks • Übersetzungs-­‐/Analyse-­‐Tools  sind  frei  verfügbar: www.informatik.hu-­‐berlin.de/top/tools4bpel www.informatik.uni-­‐rostock.de/~nl/tools 26
  69. 69. Übersetzung  von  Petrinetzen in  BPEL-­‐Prozesse Fully-­‐automatic  Translation  of  Open  Workflow  Net   Models  into  Simple  Abstract  BPEL  Processes Niels  Lohmann  und  Jens  Kleine Modellierung  2008  ▪  Berlin  ▪  13.  März  2008 UNIVERSITÄT ROSTOCK

×