onsdag, april 12, 2006

Repetetiva processer

När man jobbar med workflows stöter man ofta på delar av eller hela flöden som repeteras efter varandra. Det kan exempelvis gälla en fakturering där man sänder iväg fakturan första gången för att senare sända den på nytt inkl en förseningsavgift.

Anta ett sekventiellt flöde som består av 3 aktiviteter:

A - som utför ett jobb
B - som avgör om A ska köras igen eller gå till C
C - som också utför ett jobb

I processflöde så är det här ett vanligt scenario som kan implementeras på fyra olika sätt:

1. Repetetivt
2. Iterativt
3. Rekursivt
4. Separat

Repetetivt
Repetetivt innebär att flödet implementeras som en tillståndsmaskin där B avgör om A skall utföras på nytt. Den här typen av flöde utförs i en och samma instans, vilket är bra ur prestanda synpunkt. Ett problem är att det inte ger en tydlig bild över hur tillståndet har förändrats med tiden.



Iterativt
Iterativt liknar repetetivt men tar hjälp av iterativa aktiviteter som en While-sats.



Rekursivt
Rekursion innebär att processen anropar sig själv vilket skapar nya instanser för varje anrop. Det gör det enklare att spåra flödet men komplicerar och är mer krävande ur prestanda synpunkt.



Separat
Separata processer är det tydligaste alternativet och passar om det inte gäller för många repetioner. Här blir det enkelt att spåra flödet och komplexiteten är obefintlig, vilket är viktigt på en högre nivå.

Inga kommentarer: