definitie/implementatie ontwerpprobleem

Pagina: 1
Acties:
  • 217 views sinds 30-01-2008
  • Reageer

  • Knutselsmurf
  • Registratie: December 2000
  • Laatst online: 10:45

Knutselsmurf

LED's make things better

Topicstarter
Ik zit met een ontwerpprobleem welke ik graag aan jullie voor wil leggen.

In een database definieer ik proces als een stroomschema van taken. Dat houdt in dat iedere taak pas uitgevoerd kan worden als [0..n] andere specifieke taken uitgevoerd zijn.

Nu gaat men aan de hand vaqn deze definitie daadwerkelijke implementaties van dit proces uitvoeren.
En daar zit het punt waar ik vast zit.
Deze implementaties moeten immers gekoppeld worden aan de definitie. Ik zie hier zelf twee mogelijkheden:
1) Bij het maken van een nieuwe implementatie maak ik een kopie van de definitie. Dit heeft als voordeel dat een definitie aangepast kan worden, zonder effect op de reeds gestarte implementaties.
2) Er worden alleen implementaties van taken bijgehouden, waarbij iedere implementatie verwijt naar de definitie van de betreffende taak, en de onderliggende relatie dus volledig bij de definitie komt te liggen.

Zijn er meer mogelijkheden om zo'n combinatie van definitie/implementatie in een database vast te leggen? En welke methode is dan 'de beste'?

- This line is intentionally left blank -


Verwijderd

Zou het simpel houden, versionering (automatische) van je definitie.
Aanpassing aan de definitie is nieuwe versie.
(eventueel uit te breiden met versionering in de taken)


Hoef je niet iedere keer een kopie te maken van je proces definitie.
En ieder lopend proces en onderliggende taken verwijzen automatisch
naar de goede definitie. In sommige processen hoef niet iedere taak
perse uitgevoerd te worden en andere taken juist weer meerdere malen.
Vaak weet je dit pas na uitvoering van een voorgaande taak (waar je bepaalde
waardes hebt bepaald), dus kopieeren van je proces definitie heeft dan weinig
nut op zich.

[ Voor 12% gewijzigd door Verwijderd op 22-03-2007 11:36 ]


  • Ruudjah
  • Registratie: November 1999
  • Laatst online: 06-09 20:58

Ruudjah

2022

DIT BERICHT IS PREVENTIEF VERWIJDERD DOOR DE GEBRUIKER

[ Voor 106% gewijzigd door Ruudjah op 01-12-2009 22:04 ]

TweakBlog


  • Knutselsmurf
  • Registratie: December 2000
  • Laatst online: 10:45

Knutselsmurf

LED's make things better

Topicstarter
Ruudjah schreef op donderdag 22 maart 2007 @ 23:55:
Of ik zie iets over het hoofd, maar het lijkt me vrij simpel. Je hebt twee tabellen in totaal: TaakDefinitie, met kolommen ID, ParentID en Beschrijving. Tabel twee is TaakGedaan, welke de kolommen ID, TaakDefinitieID en UserID heeft. ParentID verwijst naar ID, zodat je taken aan elkaar kan koppelen. (Recursieve verwijzende sleutel). TaakDefinitieID is een simpele verwijzende sleutel naar de ID van Taakdefinitie. Dit is dan het ID van de hoogste taakdefinitie in de chain, taak0 dus.

In TaakDefinitie definieer je de taken, en in TaakGedaan hou je bij wie welke taak gedaan heeft.

Plaatje:
[afbeelding]
Het is iets lastiger. Een taak kan meerdere parents hebben. Dat betekent dat er al twee tabellen nodig zijn om de definitie vast te leggen. Verder heb je dan nog steeds niet wijzigingen in de definitie afgevangen. Als er immers een taak in een definitie wordt toegevoegd, zullen er implementaties zijn, die ineens niet meer afgerond zijn, omdat er een niet-afgeronde taak is.

Het versioning-verhaal van maui71 lijkt mij wel een behoorlijke oplossing. Daar kan je natuurlijk variaties op maken, zodat je alleen nieuwe versies opslaat als er aan de huidige versie al implementaties gekoppeld zijn. Als dat niet het geval is, kun je veilig de huidige versie aanpassen. Daarmee voorkom je wildgroei van versies.

- This line is intentionally left blank -