Dynamische Workflow - Database design
Ik ben met mezelf in discussie over het ontwerp van een database model voor een dynamische workflow. Kort door de bocht heb ik te maken met een proces van een organisatie. Achter ieder proces hangt een te kiezen workflow met workflow_acties, welke allemaal na een x aantal dagen worden uitgevoerd vanaf startdatum van het proces.
De workflows zijn echter in te stellen door gebruiker zelf. Op het moment dat een workflows wijzigt, wijzigt bestaande workflow van een proces ook. De vraag is even of dit wenselijk is, maar stel je voor nu even voor dat dit wenselijk zou zijn. Op welke manier zouden uit te voeren acties en uitgevoerde acties bij worden gehouden? Ik kan me twee dingen voorstellen: een tabel met logs: proces_id, workflow_actie_id, datum_van_uitvoer, status of een kopie van de workflow en workflow_acties tabel, met daarin de bijgewerkte datums vanaf proces datum en status van de acties.
Het kan ook voorkomen dat een proces wordt gepauzeerd en hervat, waarna de datum van de volgende actie verschuift. In een gekopiëerde tabel zou deze actie naar mijn gevoel makkelijker toe te passen zijn.
Hoe zouden jullie hiermee omgaan en wat vinden jullie de beste optie. Alternatieven natuurlijk tevens welkom.
Gr Marco
Een workflow lijkt mij in zekere zin een (vast) recept om op een gestructureerde manier stapsgewijs naar een doel te werken.
Zou jij halverwege het bakken van een cake de receptuur veranderen?
Het wordt natuurlijk anders als je een praktisch voorbeeld hebt waarin een dynamische workflow wenselijk is. Als je deze niet kunt verzinnen vervalt je uitgangsstelling dat zoiets wenselijk zou zijn en is het verder verkennen hiervan niet echt zinnig.
Denk aan een proces die aan regelgeving gebonden is, waardoor een lopend proces aangepast moet worden. Een proces kan bijv. twee maanden lopen, maar door nieuwe regelgeving veranderen. Op dat moment is het niet wenselijk een volledig proces opnieuw te starten, omdat er stappen zijn afgerond welke bewaard moeten blijven. Het bestaande proces moet echter wel volgens nieuwe regels worden afgerond, eventueel met terugwerkende kracht.
Mijn belangrijkste vraag betreft dan ook de manier van opslag van de status van activiteiten, niet of het proces zou moeten kunnen veranderen.
Gr Marco
kritiek pad (critical path) kunnen duiken. Vereenvoudigd in omgekeerde volgorde bijvoorbeeld: je kunt pas winterbanden onder een auto monteren als die banden in het magazijn zijn binnengekomen, maar ze komen pas in het magazijn nadat ze zijn geleverd en daarvoor moeten ze eerst worden ingekocht. Deze afhankelijkheden tussen taken kun je uiteraard prima in een database zetten, inclusief data zoals: hoe lang kost een taak, wie mag/moet de taak uitvoeren, wat kost de taak, enzovoort.
Je zou eens in procesmanagement en vooral in methoden voor het bepalen van een Wanneer de workflow structureel verandert is dit in feite een nieuwe workflow (of een volgende versie van een bestaande workflow). Anders kom je mogelijk in de knoei met al eerder afgeronde processen die een andere/eerdere versie van de workflow volgde. Je historie raakt dan vertroebeld. Ik neem aan dat dat ook belangrijk is, dat je terug kunt kijken?
Anyhow, dit alles is nogal abstract geneuzel - hoe je iets structureert hangt sterk af van welke data je hebt en hoe je hier mee omgaat. Zonder te weten over wat voor processen het gaat, wie hier allemaal (tegelijkertijd) mee werken en hoe verschillend deze zijn wordt het nogal lastig om te komen met een universele aanpak voor het structureren hiervan.
Heb je concrete voorbeelden en een motivatie in welke gevallen deze "dynamisch" zouden moeten zijn? Zoals gezegd, het aanpassen van een duur kan prima zonder het structureel wijzigen van de workflow zelf, dit lijkt mij slechts een configuratie-parameter.
Stel je voor dat hier ineens documenten (niet te voorzien) bij komen, maar dat wachten op respons van document 1 nog open staat. De nieuwe benodigde documenten moeten tevens worden aangeleverd, maar gebruikelijke workflow dient door te lopen. Ook kan het zijn dat tussen het opstellen en goedkeuring een extra stap komt.
Mijn gevoel zegt inderdaad ook dat een template voor de workflows van toepassing is, welke in dergelijke situatie scriptmatig de bestaande actieve workflows (direct gekoppeld aan proces) controleert / bijwerkt en dus als extra stap in de projectplanning laat terugkomen. Volgens mij heb je dat met je reactie bevestigd :) Dank je!
@Ward : Interessante info!