Momenteel ben ik mezelf aan het inlezen voor een project en daar kom ik een stukje ontwerp tegen (een proces in JBoss JBPM) waar ik mijn vraagtekens bij heb.
In een versimpelde vorm ziet het er als volgt uit: (ASCII art, kan hier geen plaatjes uppen
)
Dergelijke constructies zie ik erg vaak in het ontwerp. Vanuit een bepaalde node zijn er meerdere transities naar steeds dezelfde andere node, ondanks dat de transities functioneel compleet verschillend zijn (zie voorbeeld met Ok en Niet-Ok).
Gevolg hiervan is dat in de transities (althans de handlers die je eraan knoopt) zeer veel logica komt. JBPM biedt daar support voor, dat is het probleem niet, maar volgens mij is het absoluut niet netjes als je transities meer zijn dan alleen een overgang van node A naar node B.
Ik begrijp dat er altijd uitzonderingsgevallen zijn waarin je logica in een transitie zet:
Ik weet het niet helemaal te plaatsen, maar het voelt niet lekker en ik voorzie op de een of andere manier problemen met overbodige complexiteit en herbruikbaarheid. Nodes zijn immers de perfecte koffertjes om te hergebruiken, transities (en de bijbehorende handlers) volgens mij niet, aangezien die een harde danwel zachte relatie hebben met de twee nodes waar ze tussen zitten.
Maar zoals misschien al uit de tekst blijkt, ik weet het niet helemaal zeker, dus graag jullie mening. Hoe gaan jullie met dergelijke situaties om en waarom?
In een versimpelde vorm ziet het er als volgt uit: (ASCII art, kan hier geen plaatjes uppen
code:
1
2
3
4
5
6
7
8
9
| +-------------------------+
| Klaar |
+-------------------------+
^ ^
Ok | | Niet ok
| |
+-------------------------+
| Bezig |
+-------------------------+ |
Dergelijke constructies zie ik erg vaak in het ontwerp. Vanuit een bepaalde node zijn er meerdere transities naar steeds dezelfde andere node, ondanks dat de transities functioneel compleet verschillend zijn (zie voorbeeld met Ok en Niet-Ok).
Gevolg hiervan is dat in de transities (althans de handlers die je eraan knoopt) zeer veel logica komt. JBPM biedt daar support voor, dat is het probleem niet, maar volgens mij is het absoluut niet netjes als je transities meer zijn dan alleen een overgang van node A naar node B.
Ik begrijp dat er altijd uitzonderingsgevallen zijn waarin je logica in een transitie zet:
- Ten behoeve van je model in uitzonderingsgevallen,
- Of om je nodes generiek en dus herbruikbaar te maken,
- Of eventueel voor exotische problemen met je tooling ofzo,
Ik weet het niet helemaal te plaatsen, maar het voelt niet lekker en ik voorzie op de een of andere manier problemen met overbodige complexiteit en herbruikbaarheid. Nodes zijn immers de perfecte koffertjes om te hergebruiken, transities (en de bijbehorende handlers) volgens mij niet, aangezien die een harde danwel zachte relatie hebben met de twee nodes waar ze tussen zitten.
Maar zoals misschien al uit de tekst blijkt, ik weet het niet helemaal zeker, dus graag jullie mening. Hoe gaan jullie met dergelijke situaties om en waarom?
Fat Pizza's pizza, they are big and they are cheezy