Boekbespreking: Programming Windows Workflow Foundation van K. Scott Allen
Een van de onderdelen van het nieuwe, in november vrijgegeven, .NET 3.0 framework is Windows Workflow Foundation. Voor veel .NET ontwikkelaars is dit waarschijnlijk het moeilijkste onderdeel om mee te beginnen. Workflow producten zijn immers niet erg bekend binnen de PC wereld. Er zijn op dit moment dan ook nog niet zoveel boeken over Windows Workflow Foundation, in het kort ook wel WWF genoemd, te krijgen. Deze keer bespreek ik het boek Programming Windows Workflow Foundation van K. Scott Allen.
De auteur
Voor diegenen die al langer met WWF bezig zijn, zal K. Scott Allen geen onbekende naam zijn. Hij schrijft al enige tijd blog-postings en artikelen over WWF en zijn website (www.OdeToCode.com) staat dan ook al langer bekend als een goede bron van informatie. Het zal de lezer dan ook niet verwonderen dat Scott van Microsoft de Most Valuable Professional Award gekregen heeft voor zijn werk in de gemeenschap.
De hoofdstukken
Het boek is in 9 hoofdstukken verdeeld. Ieder hoofdstuk behandelt een bepaald onderwerp en geeft de lezer de nodige informatie daarover. Het boek is wel als een leerboek opgezet en bij elk hoofdstuk wordt er van uitgegaan dat de stof in de eerdere hoofdstukken reeds bekend is. Dat maakt het boek misschien wat minder geschikt als een naslagwerk, al is het zeker niet zo dat het ‘waardeloos’ wordt zodra het eenmaal van voor tot achter gelezen is. Overigens worden de code voorbeelden in dit boek alleen in C# gedaan en niet in Visual Basic. Misschien jammer voor sommige mensen, maar zelf zie ik dat niet echt als een probleem, aangezien de syntaxverschillen niet zo groot zijn en alle codevoorbeelden dubbel opnemen het boek veel dikker zou maken.
H1: Hello, Workflow
Scott gaat er in dit boek van uit dat de lezer nog geen ervaring met WWF of een ander vergelijkbaar workflow product heeft. In dit eerste hoofdstuk komt dan ook de basis van WWF aan de orde en wordt uitgelegd waarom dit eigenlijk een interessant product is. Hij gaat in vogelvlucht door het product en laat de lezer even kort snuffelen aan de verschillende aspecten zonder hier verder op in te gaan. Dat laatste is voor de volgende hoofdstukken gereserveerd.
H2: Authoring Workflows
In dit hoofdstuk komen de verschillende manieren om een workflow te schrijven, zoals code of XAML, aan bod. Ook wordt er uitgelegd hoe je een zelfgeschreven activiteit in een XAML workflow kan gebruiken, iets dat nogal eens voor verwarring zorgt. Daarna wordt er ingegaan op hoe de gemaakte workflow gecompileerd kan worden en daarna uitgevoerd wordt. Hierbij komen onderwerpen als de workflow compiler en XAML activation ook aan bod.
H3: Sequential Workflows
Voor de meeste ontwikkelaars is een sequentiële workflow makkelijker te begrijpen dan een state workflow waardoor de eerste meestal eerder aan bod komt. In dit boek is dit niet anders. De basis van hoe een sequentiële workflow te maken komt aan bod. Verder gaat Scott in dit hoofdstuk voor het eerst op in wat een aantal verschillende activiteiten doen en waar die gebruikt kunnen worden. Verder komt ook aan bod hoe een workflow met andere programma onderdelen kan communiceren, iets wat voor een state workflow niet anders werkt.
H4: The Base Activity Library
In dit hoofdstuk worden de verschillende standaard workflow activiteiten beschreven. Dit hoofdstuk klinkt dan misschien wel een beetje als een naslagwerk maar is het zeker niet. De uitleg van elke standaard activiteit gaat niet erg diep. Op zich is dat niet erg want een volledige uitleg zou een zeer dik boek op zich zijn en dat zou binnen de opzet van dit boek niet bevorderlijk werken. Overigens is nagenoeg alle informatie in dit hoofdstuk al eerder op de website van Scott verschenen in een artikel met dezelfde naam.
H5: Custom Activities
In dit hoofdstuk beschrijft Scott hoe en waarom een ontwikkelaar zelf workflow activiteiten zou willen schrijven. Hierbij komen de voor workflow belangrijke concepten dependency properties en attached properties om de hoek kijken. Naast het maken van een custom activity zelf komt ook het valideren en de layout hiervan in de designer met behulp van custom validators en designers aan bod. Een ander belangrijk concept dat aan bod komt is de execution context. Helaas krijgt een zo belangrijk onderwerp als de activity execution context vrij weinig aandacht: begrijpen hoe dit werkt is van cruciaal belang voor een ontwikkelaar die zelf activiteiten wil gaan ontwikkelen en dit laatste is voor een echte applicatie al snel nodig.
H6: Workflow Hosting
In dit hoofdstuk komt het hoe, wat en waarom van workflow hosting aan de orde. Workflow is een library, niet een op zich staand product, dus de ontwikkelaar moet zelf zorgen voor de runtime omgeving. Daarbij krijgt hij te maken met onderwerpen als logging, scheduling en tracking. Indien gebruikt gemaakt wordt van langdurige workflows, en daar ga ik wel van uit want dat is waar een groot deel van de kracht ligt, zal de ontwikkelaar ook met persistentie te maken krijgen in de een of andere vorm.
H7: Event-Driven Workflows
Pas in hoofdstuk zeven komen state workflows aanbod. Aan de ene kant kan ik me wel voorstellen dat het pas later aan bod komt omdat een state machine voor nogal wat ontwikkelaars geen bekend concept is. Maar toch vind ik het jammer dat het niet direct na de sequential workflows aan bod gekomen is. Op deze manier gaan veel ontwikkelaars, tijdens hun experimenten met een sequentiële workflow aan de slag op een plek waar een state workflow beter op zijn plaats is. Overigens beschrijft Scott het principe van een state workflow duidelijk, daar is helemaal niets mis mee. Verder probeert hij antwoord te geven op de vraag wanneer een state en wanneer een sequentiële workflow te gebruiken. Overigens is dit hoofdstuk ook terug te vinden als een artikel op de website van Scott Allen.
H8: Communication in Workflows
In dit hoofdstuk gaat Scott verder in op de communicatie van zelfgeschreven activiteiten met andere programmaonderdelen. Hij laat zien hoe correlation parameters werken en hoe workflow queues gebruikt kunnen worden. Met name dit laatste is belangrijk omdat erg veel van de interne werking binnen WWF op basis van ditzelfde queue mechanisme gaat. Uiteraard komen web services hier ook aan bod als een van de manieren om met andere programma’s te communiceren. Een ding dat misschien lijkt te ontbreken is Windows Communication Foundation maar dat kunnen we Scott niet aanrekenen. Er is namelijk in WWF, onderdeel van het .NET 3.0 framework, geen standaard mogelijkheid om via Windows Communication Foundation, ook onderdeel van datzelfde .NET 3.0 framework, berichten te versturen of te ontvangen.
H9: Rules and Conditions
Als laatste is er een hoofdstuk over het werken met rules en conditions aan het boek toegevoegd. De rules engine die in WWF opgenomen is bestaat uit een aantal klassen met zeer veel mogelijkheden. Het zal dan ook niet verbazen dat er slechts aan de oppervlakte van die rules engine gekrabt wordt. Wel legt Scott de mogelijkheden hiervan goed uit.
Conclusie
Voor de ontwikkelaar die net met Windows Workflow Foundation aan de slag gaat is dit een zeer bruikbaar boek. Veel van de dingen die een ontwikkelaar moet weten worden behandeld. Het zal echter niet het enige WWF boek zijn dat een serieuze ontwikkelaar op de plank heeft staan, daarvoor ontbreken te veel details.