Munkafolyamat minta
A munkafolyamat minták a számítógép-programozásban programtervezési mintái. A munkafolyamat minták specifikusak a rekurrens problémákra, és munkafolyamat alkalmazások fejlesztésére, illetve szélesebb körben folyamatorientált alkalmazások számára adnak megoldási javaslatot.
Fogalma
A munkafolyamat minták a gazdaságos fejlesztéshez tartoznak. Használatuknak követniük kell a karbantartás stratégiáinak egyszerűsítését, és a modellezés munkájának csökkentését. A munkafolyamat valós időben megy végbe. A vezérlés mechanizmusának a munka szokásos ütemét kell támogatnia. A minták alkalmazásának következménye a munkafolyamat lassulása.
A munkafolyamat mintákat láncokként aggeregálni lehet, és az indulás és a befejezés feltételeit explicit definiálni kell.
A munkafolyamat mintákat különböző környezetben használják, tehát a használati feltételeket explicit definiálni kell, és sorrendben kell bemutatni a félreértések elkerülése érdekében.
Van der Aalst osztályozása
A munkafolyamat mintákat Wil van der Aalst és társai gyűjtötték össze.[1] Cikkük Workflow Patterns címmel 2003-ban jelent meg,[2] habár már 2000-2002-ben is kiadtak néhány mintát. Ez a gyűjtemény a folyamatorientált alkalmazásfejlesztés egyik aspektusára fókuszál, ami a vezérlésfolyamban levő függőségeket írja le, ami a munkafolyamatok között áll fenn. Ezeket a mintákat a következő kategóriákba osztják be:
- Alapvető vezérlési minták
- Fejlettebb elágaztató és szinkronizációs minták
- Szerkezeti minták
- Többszörös példányok
- Állapot alapú minták
- Visszavonási minták
Alapvető vezérlési minták
- Szekvencia: két vagy több aktivitás végrehajtása egymás után
- Párhuzamos hasítás: aktivitások párhuzamos vagy tetszőleges sorrendű végrehajtása
- Szinkronizáció: párhuzamosan futó aktivitásokat szinkronizál. Az aktivitások bevárják egymást. Barrier szinkronizációként is ismert.
- Kizárólagos választás: több alternatív végrehajtás közül választ egyet a meglevő adatok alapján.
- Egyszerű összefésülés: egy folyamat arra vár, hogy aktivitások egy halmazából egy befejeződjön. Felteszi, hogy a halmazból csak egy aktivitás fog lefutni. Ez a minta adódhat kizárólagos vagy késleltetett választásból, amiről majd később írunk.
- Terminálás: adott esemény bekövetkezésekor vagy állapotváltozáskor terminálja a végrehajtást.
Fejlettebb elágaztató és szinkronizációs minták
- Többszörös választás: folyamatok egy halmazából kiválaszt néhányat, amik párhuzamosan futnak le.
- Feltételes választás: állapotfeltétel alapján választ több közül egy végrehajtási utat.
- Szinkronizáló összeolvasztás: több végrehajtási út összeolvasztása és ezek szinkronizálása, ha több van kiválasztva. Ha egy kiválasztott van, akkor egyszerű összeolvasztást csinál.
- Többszörös összeolvasztás: továbbhaladás előtt megvárja, amíg egy halmazból egy aktivitás befejeződik. Ha a halmazból több aktivitás is fut, akkor mindig tüzel, ha egy befejeződik.
- Diszkriminátor: továbbhaladás előtt megvárja, amíg egy halmazból egy aktivitás befejeződik. Csak az első befejeződésekor jelez.
- N az M-ből join: ugyanaz, mint a diszkriminátor, de paraméterként megadható, hány aktivitás befejezésére várjon.
Szerkezeti minták
- Tetszőleges választású ciklus: nincsenek szerkezeti korlátozások a folyamatvezérlési modell ciklusának típusaira.
- Implicit terminálás: terminálja egy folyamat egy példányát, ha már nincs semmi ilyen feladata.
Többszörös példányok
- Többszörös példányok szinkronizáció nélkül: létrehozza egy aktivitás több példányát, de nem szinkronizálja őket.
- Többszörös példányok előre ismert tervezés idejű tudással: létrehozza egy aktivitás több példányát és szinkronizálja őket, ha számuk tervezési időben ismert.
- Többszörös példányok előre ismert futás idejű tudással: létrehozza egy aktivitás több példányát és szinkronizálja őket, ha számuk ismert a futási idő egy pillanatában.
Többszörös példányok előre ismert tudás nélkül: létrehozza egy aktivitás több példányát és szinkronizálja őket, ha számuk előre nem ismert, és például egy WHILE ciklusból derül ki.
Állapot alapú minták
- Késleltetett választás: alternatív folyamatok közül választ egyet egy esemény hatására, és nem az adatok alapján.
- Összefésült párhuzamos routolás: több aktivitást valamilyen sorrendben hajt végre. A sorrendet az erőforrások rendelkezésre állása szabhatja meg. Egyszerre csak egy folyamat futhat.
- Mérföldkő: egy aktivitás nem hajtható többé végre a mérföldkő elérése után.
Visszavonási minták
- Aktivitás visszavonása: megállítja egy engedélyezett aktivitás végrehajtását.
- Case visszavonása: megállítja egy folyamat végrehajtását.
- Várakozás visszavonása: futtatható, de várakozó folyamat tovább futtatása.
A fenti minták használhatók arra, hogy kereskedelmi termékek funkcionalitását értékeljék ki, ami támogatja folyamatorientált alkalmazások fejlesztését. Használták különböző szabványok értékelésére, mint például BPEL, BPMN, UML aktivitási diagram és XPDL. Megjegyezték, hogy nem mindegyik minta releváns minden alkalmazási tartományban, így figyelni kell, hogy melyik mintához melyik környezetet és nyelvet választjuk.
Ezeket a mintákat használták kezdeti követelményként a YAWL (Yet Another Workflow Language) nyílt forrású munkafolyamat nyelv megtervezéséhez.
Több bővítést javasoltak a fenti mintához. Többek között a minták megalkotói javasolták még a munkafolyamat adatmintákat, munkafolyamat erőforrásmintákat, munkafolyamat kivételkezelési mintákat és szolgáltatásintegrációs mintákat.
Alternatív osztályozás
Egy alternatív osztályozás a következő:
- Független/készletező: a folyamatok egymástól függetlenek, egyiknek sincs szüksége másoktól származó adatokra. Például, ha több pénztár van, akkor a pénztárosoknak nem kell egymásra várniuk.
- Szekvenciális: a folyamatok sorba rendezhetők úgy, hogy mindegyik egy (vagy) előző befejezésére vár. Ekkor a korábbi komponens meghatározza a későbbi komponens előrehaladását. Erre példa a gyártási sor.
- Összefüggő/hálózati: a folyamatok között bonyolultabb összefüggések vannak, nem rendezhetők sorba függőségeik alapján. Ere példa egy projekt csapat, ahol az egyik tagnak várnia kell arra, hogy többen elvégezzenek egy feladatot, majd mások várnak arra, hogy ő végezzen el néhány feladatot.
További perspektívák
A munkafolyamat minták nem korlátozódnak a vezérlésre.[3] További mintagyűjtemények:
- munkafolyamat adatminták,[4][5]
- munkafolyamat erőforrásminták,[6]
- munkafolyamat kivételkezelési minták,[7]
- szolgáltatásintegrációs minták[8]
- párhuzamos és csővezeték minták[9]
Mindezeket használták különféle munkafolyamatok kiértékelésére, mind kereskedelmi (Websphere, Oracle BPEL, Staffware, SAP workflow, Windows Workflow Foundation), mint nyílt forrású esetekben.[10]
Munkafolyamat rendszer megvalósítási minták
- Tavaxy[11] köd alapú munkafolyamat rendszer, ami minta alapú valósítja meg a Galaxy és a Taverna együttműködését. Ezek a munkafolyamat motorok népszerűek a bioinformatikában.[12]
- YAWL, egy másik munkafolyamat nyelv
- Cameleon, munkafolyamat alapú grafikus funkcionális programozási nyelv.
Jegyzetek
- ↑ http://www.workflowpatterns.com
- ↑ Wil van Der Aalst, Arthur H.M. Hofstede, Bartek Kiepuszewski, and Alistair P. Barros (2003). "Workflow Patterns" Archiválva 2016. március 4-i dátummal a Wayback Machine-ben. In: Distributed and Parallel Databases 14 (1): pp. 5--51. doi:10.1023/A:1022883727209.
- ↑ N. Russell, A.H.M. ter Hofstede, W.M.P. van der Aalst, and N. Mulyar. Workflow Control-Flow Patterns: A Revised View. BPM Center Report BPM-06-22 , BPMcenter.org, 2006.
- ↑ N. Russell, A.H.M. ter Hofstede, D. Edmond, and W.M.P.van der Aalst. "Workflow Data Patterns: Identification, Representation and Tool Support". In L. Delcambre, C. Kop, H.C. Mayr, J. Mylopoulos, and O. Pastor, editors, 24th International Conference on Conceptual Modeling (ER 2005), volume 3716 of Lecture Notes in Computer Science, pages 353-368. Springer-Verlag, Berlin, 2005.
- ↑ N. Trcka, W.M.P.van der Aalst, and N. Sidorova. "Data-Flow Anti-Patterns: Discovering Data-Flow Errors in Workflows". In P. van Eck, J. Gordijn, , and R. Wieringa, editors, Advanced Information Systems Engineering, Proceedings of the 21st International Conference on Advanced Information Systems Engineering (CAiSE'09), volume 5565 of Lecture Notes in Computer Science, pages 425-439. Springer-Verlag, Berlin, 2009.
- ↑ N. Russell, W.M.P.van der Aalst, A.H.M. ter Hofstede, and D. Edmond. "Workflow Resource Patterns: Identification, Representation and Tool Support". In O. Pastor and J. Falcao e Cunha, editors, Proceedings of the 17th Conference on Advanced Information Systems Engineering (CAiSE'05), volume 3520 of Lecture Notes in Computer Science, pages 216-232. Springer-Verlag, Berlin, 2005.
- ↑ N. Russell, W.M.P.van der Aalst, and A.H.M. ter Hofstede. "Workflow Exception Patterns". In E. Dubois and K. Pohl, editors, Proceedings of the 18th International Conference on Advanced Information Systems Engineering (CAiSE'06), volume 4001 of Lecture Notes in Computer Science, pages 288-302. Springer-Verlag, Berlin, 2006.
- ↑ W.M.P.van der Aalst, A.J. Mooij, C. Stahl, and K. Wolf. "Service Interaction: Patterns, Formalization, and Analysis". In M. Bernardo, L. Padovani, and G. Zavattaro, editors, Formal Methods for Web Services, volume 5569 of Lecture Notes in Computer Science, pages 42-88. Springer-Verlag, Berlin, 2009.
- ↑ C. Pautasso, G. Alonso. "Parallel Computing Patterns for Grid Workflows", In Proc. of the HPDC2006 Workshop on Workflows in Support of Large-Scale Science (WORKS06), Paris, France, June 2006.
- ↑ P. Wohed, N.C. Russell, A.H.M. ter Hofstede, B. Andersson, and W.M.P.van der Aalst. "Patterns-based Evaluation of Open Source BPM Systems: The Cases of jBPM, OpenWFE, and Enhydra Shark". In: Information and Software Technology, 51(8):1187-1216, 2009.
- ↑ (2012) „Tavaxy: Integrating Taverna and Galaxy workflows with cloud computing support”. BMC Bioinformatics 13, 77. o. DOI:10.1186/1471-2105-13-77. PMID 22559942. PMC 3583125.
- ↑ Meta-workflows, Proceedings of the 1st International Workshop on Workflow Approaches to New Data-centric Science - Wands '10, 1. o.. DOI: 10.1145/1833398.1833400 (2010). ISBN 9781450301886
Fordítás
Ez a szócikk részben vagy egészben a Workflow pattern című angol Wikipédia-szócikk fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel. Ez a jelzés csupán a megfogalmazás eredetét és a szerzői jogokat jelzi, nem szolgál a cikkben szereplő információk forrásmegjelöléseként.