Toon posts:

[WF] triggeren events bij verandering database veld ?*

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ok, ben dus aan de slag gegaan met WWF nav dit topic: [MSSQL 2005] Notification Services

Ik heb een eenvoudige tutorial gevolgd, en dat lukt allemaal wel.

Nu heb ik volgende vraag:

Notification Services werkt vanuit de MS SQL database.
Dus wanneer er een bepaalde records in de database staan, kunnen daar events op afgevuurd worden.

In mijn geval betekent dit (eenvoudig voorgesteld):
- een nieuwe request wordt toegevoegd, record toegevoegd in database met veld status met waarde 0 -> mail naar 2 personen -> veld status krijgt waarde 1
- een nieuwe request wordt goedgekeurd -> veld status krijgt waarde 2 -> mail naar 2 personen -> veld status krijgt waarde 3
- een nieuwe request wordt afgekeurd -> veld status krijgt waarde 4 -> mail naar 2 personen -> veld status krijgt waarde 5

Hoe kan ik vanuit WWF deze events triggeren als het veld status van waarde veranderd in de MSSQL database ? Dit is iets wat mij nog niet duidelijk is uit wat ik nu gelezen heb over WFF. Of betekent dit dat ik dan een soort timer moet maken die elke seconde gaat kijken of er records zijn met al die statussen en dan de events afvuren als er records gevonden worden ?

Acties:
  • 0 Henk 'm!

  • CMG
  • Registratie: Februari 2002
  • Laatst online: 10-12-2024

CMG

offtopic:
Windows Workflow Foundation heet inmiddels WF i.v.m wereld natuur fonds,etc.

NKCSS - Projects - YouTube


Acties:
  • 0 Henk 'm!

  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

Allereerst moet je jezelf afvragen of het echt wel nodig is dat realtime een request wordt verwerkt. Van wat ik heb begrepen van de vorige topic wordt er een mail gestuurd naar o.a. een manager welke daarop een aktie moet ondernemen.

Als de manager die dag vrij is, betekend dat dat je flow een dag stil ligt. In die optiek zou je ook kunnen zeggen dat een process dat eenmaal per uur controleert of er nieuwe verzoeken zijn voldoende is.

Als je het echt 'realtime' wilt hebben, kun je een Windows service maken welke een message queue (blocking) in de gaten houd. Vervolgens kun je een CLR trigger schrijven welke een bericht aan de message queue toevoegt. Aangezien je al gebruik wou maken van Notification Services neem ik aan dat een dependecy op MSSQL 2005/2008 geen probleem is.

Wil je ook een Oracle database kunnen gebruiken dan zou je ook het process welke het verzoek naar de database wegschrijft een bericht aan de message queue kunnen toevoegen (nadat je verzoek succesvol naar de database is weggeschreven).

Weer een andere oplossing is dat je vanuit de CLR-trigger een web (WCF) service aanroept. Dan hoef je geen gebruik te maken van de message queue.

Zoals je merkt zijn er meer dan voldoende manieren om te achterhalen of er een nieuw verzoek is.

Aangezien je hier met een state machine workflow te maken hebt, is het ook verstandig om je in te lezen op workflow persistence aangezien de reactie (afwijzing, goedkeuring) van de manager onderdeel is van de workflow en op een later moment moet worden voltooid.

Persoonlijk zou ik bij het process welke het verzoek naar de database wegschrijft als de workflow initialiseren en starten om vervolgens dan de state (persistency) van de flow te bewaren. Vanuit de database wordt dan niets gestart en dat maakt het gebruik van een andere database engine in de toekomst eenvoudiger.

If it isn't broken, fix it until it is..


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
CLR triggers klinkt interessant, nog geen ervaring mee maar lijkt volgens mij geschikt voor wat ik wil doen.

Wat betreft realtime, de mails naar de werknemers (bevestiging van hun aanvraag) zou bij voorkeur realtime moeten verzonden worden. De overige mails (mail naar managers, mail met resultaat naar werkgevers) mag verzameld worden en bv 2x per dag in een blok verstuurd worden.

Ik ga nu een keer kijken of die CLR triggers wat zijn :)