Arbetsflödesmönster
Ett arbetsflödesmönster är en specialiserad form av designmönster som definieras inom området mjukvaruteknik eller affärsprocessteknik . Arbetsflödesmönster hänvisar specifikt till återkommande problem och beprövade lösningar relaterade till utvecklingen av i synnerhet arbetsflödesapplikationer, och mer allmänt, processorienterade applikationer .
Begrepp
Arbetsflödesmönster är begrepp för ekonomisk utveckling. Deras användning bör följa strategier för att förenkla underhållet och minska modelleringsarbetet. Arbetsflödet utförs i realtid. Kontrollmekanismerna måste stödja den typiska arbetstakten. Designmönster måste fördröja exekvering av arbetsflödet.
Aggregation
Arbetsflödesmönster kan vanligtvis aggregeras som kedjor och villkoren för att starta och avsluta måste vara explicit definierade.
Ansökan
Arbetsflödesmönster kan tillämpas i olika sammanhang, därför måste villkoren för användning uttryckligen definieras och visas för att förhindra misstolkning.
Van der Aalst klassificering
En välkänd samling arbetsflödesmönster är den som föreslås av Wil van der Aalst et al. (2003) i sin artikel Workflow Patterns . med tidigare versioner publicerade 2000–02. Denna samling av mönster fokuserar på en specifik aspekt av processorienterad applikationsutveckling, nämligen beskrivningen av kontrollflödesberoende mellan aktiviteter i ett arbetsflöde/process. Dessa mönster är indelade i följande kategorier:
Grundläggande kontrollmönster
- Sekvens - utför två eller flera aktiviteter i följd
- Parallell split - utför två eller flera aktiviteter i valfri ordning eller parallellt
- Synkronisera - synkronisera två eller flera aktiviteter som kan utföras i valfri ordning eller parallellt; fortsätt inte med utförandet av efterföljande aktiviteter förrän alla föregående aktiviteter har slutförts; även känd som barriärsynkronisering.
- Exklusivt val - välj en exekveringsväg bland många alternativ baserat på data som är tillgänglig när exekveringen av processen når det exklusiva valet
- Enkel sammanfogning - vänta på att en av en uppsättning aktiviteter ska slutföras innan du fortsätter; det antas att endast en av dessa aktiviteter kommer att utföras; vanligtvis är dessa aktiviteter på olika vägar som härrör från ett exklusivt val eller ett uppskjutet val (se nedan)
- Avsluta - avsluta utförande av aktiviteter vid definierad händelse eller statusändring
Avancerade förgrenings- och synkroniseringsmönster
- Multiple Choice - välj flera exekveringsvägar från många alternativ
- Villkorligt val - välj en exekveringsväg bland många alternativ enligt diskriminerade statusvillkor
- Synkronisera sammanfogning - slå samman många körningsvägar; synkronisera om många vägar tas; gör samma sak som för en enkel sammanfogning om endast en exekveringsväg tas
- Sammanfoga flera - vänta på att en av en uppsättning aktiviteter ska slutföras innan du fortsätter; om flera av aktiviteterna som väntas utförs, avfyras den enkla sammanslagningen varje gång en av dem slutförs.
- Diskriminator - vänta tills en av en uppsättning aktiviteter har slutförts innan du fortsätter; om flera av de aktiviteter som väntas utförs, skjuter diskriminatorn endast en gång.
- N-out-of-M Join - samma som diskriminatorn men det är nu möjligt att vänta tills mer än en av de föregående aktiviteterna har slutförts innan man fortsätter genom att sätta en parameter N till något naturligt tal större än ett .
Strukturella mönster
- Godtycklig cykel - lägg inga strukturella begränsningar på de typer av slingor som kan finnas i processmodellen.
- Implicit avsluta - avsluta en instans av processen om det inte finns något annat att göra
Flera instanser (MI)
- MI utan synkronisering - generera många instanser av en aktivitet utan att synkronisera dem efteråt
- MI med en tidigare känd designtidskunskap - generera många instanser av en aktivitet när antalet instanser är känt vid designtiden (med synkronisering)
- MI med en tidigare känd körtidskunskap - generera många instanser av en aktivitet när ett antal instanser kan fastställas någon gång under körtiden (som i FOR-loop men parallellt)
- MI utan förkunskap om runtime - generera många instanser av en aktivitet när ett antal instanser inte kan bestämmas (som i WHILE loop men parallellt)
Statsbaserade mönster
- Deferred Choice - kör en av ett antal alternativa trådar. Valet vilken tråd som ska köras baseras inte på data som är tillgänglig i det ögonblick då exekveringen har nått det uppskjutna valet, utan bestäms snarare av en händelse (t.ex. en applikationsanvändare som väljer en uppgift från arbetslistan, eller ett meddelande tas emot av processexekveringsmotorn).
- Interleaved Parallel Routing - exekvera ett antal aktiviteter i valfri ordning (t.ex. baserat på tillgänglighet av resurser), men exekvera inte någon av dessa aktiviteter samtidigt.
- Milstolpe - tillåt en viss aktivitet när som helst innan milstolpen uppnås, varefter aktiviteten inte längre kan utföras.
Avbokningsmönster
- Avbryt aktivitet - stoppa utförandet av en aktiverad aktivitet
- Avbryt ärende - stoppa exekveringen av en pågående process
- Avbryt Vänta - fortsätt exekveringen av en pågående process utan föregående slutförandehändelse
Ovanstående arbetsflödesmönster har använts för att utvärdera funktionaliteten hos kommersiella produkter som stödjer utvecklingen av processorienterade applikationer. De har också använts för att utvärdera ett antal föreslagna standarder, inklusive BPEL , BPMN , UML Activity diagram , XPDL , etc. Det har noterats att inte alla dessa mönster är relevanta i alla applikationsdomäner, så försiktighet måste iakttas när du använder ovanstående arbetsflödesmönster för att välja ett visst språk eller system för en viss applikation.
Arbetsflödesmönstren har också använts som initiala krav i utformningen av ett arbetsflödesspråk och öppen källkodssystem som kallas YAWL (Yet Another Workflow Language).
Flera tillägg till ovanstående uppsättning arbetsflödesmönster har föreslagits. I synnerhet har samma forskargrupper som utvecklat dessa mönster också föreslagit en uppsättning arbetsflödesdatamönster, arbetsflödesresursmönster, arbetsflödesundantagshanteringsmönster och tjänstinteraktionsmönster.
En annan klassificering
En annan klassificering av arbetsflödesmönster är följande:
- Oberoende/poolad
- där varje komponent i schemalagt arbete slutförs oberoende av varje annan komponent och ingen komponent har ett specifikt beroende av någon annan komponent. Ett exempel skulle vara när personalen servar vid en disk - Raoul kan betjäna en kund i hans kö utan att vänta på att Jamie ska betjäna en kund i hans kö.
- Sekventiell
- där varje komponent i schemalagt arbete är beroende av föregående komponent. I det här fallet styr den föregående komponenten arbetsflödets avancemang genom efterföljande komponenter. Ett exempel skulle vara på en produktionslinje - Betty kan inte fästa kylarlocket på Model T Ford förrän Veronica har satt kylaren på plats.
- Interdependent/Networked
- där varje komponent i schemalagt arbete är beroende av att en eller ett antal andra komponenter genomförs. I det här fallet styr de föregående komponenterna arbetsflödet genom efterföljande komponenter. Ett exempel skulle vara ett projektteam - Sarah måste vänta på att flera uppgifter ska slutföras av Kevin och George innan hon kan utföra sin uppgift.
Andra perspektiv
Arbetsflödesmönstren är inte begränsade till kontrollflöde. Andra (arbetsflödes)mönstersamlingar inkluderar:
- resursmönster,
- datamönster,
- undantagsmönster,
- interaktionsmönster för tjänster.
- parallellitet och pipeliningmönster.
Dessa mönstersamlingar har använts för att utvärdera en mängd olika arbetsflödesprocesser, både kommersiella (Websphere, Oracle BPEL, Staffware, SAP-arbetsflöde, Windows Workflow Foundation, etc.) och öppen källkod.
Arbetsflödessystem som implementerar mönster
- Tavaxy är ett molnbaserat arbetsflödessystem som implementerar ett mönsterbaserat tillvägagångssätt för att möjliggöra interoperabilitet mellan Galaxy och Taverna, två arbetsflödesmotorer som är populära inom bioinformatikdomänen,
- YAWL , Yet Another Workflow Language,
- Cameleon (programmeringsspråk) , Arbetsflödesbaserat grafiskt språk för funktionell programmering.
Vidare läsning
- Marlon Dumas , Wil van der Aalst och Arthur HM ter Hofstede ed. (2005). Processmedvetna informationssystem . John Wiley och söner. ISBN 0-471-66306-9 .
- Volker Kramberg (2006) Mönsterbaserad utvärdering av IBM WebSphere BPEL : Utvärdering av IBMs WebSphere Integration Developer baserat på arbetsflödesmönster.
externa länkar
- Arbetsflödesmönster
- BPMN 2 exempel på ursprungliga 20 arbetsflödesmönster