De tasks worden als laatste gebouwd en vormen de rode draad door de applicatie. Een task is verantwoordelijk voor de implementatie van een enkel proces, weergegeven in een use case. Tijdens dit proces voert de task de regie over de samenwerking tussen user interface en application services (zowel de business classes als de meeste algemene services).Omdat de task de eenheid van realisatie van business functionaliteit is, en binnen een increment altijd "hele" use cases worden geconstrueerd, zal de interactie tussen functionaliteit uit verschillende incrementen altijd verlopen doordat binnen de uitvoering van een use case een andere use case wordt aangeroepen.Omdat er ook voor tasks die pas in een eventueel volgende increment worden gebouwd facade tasks worden gemaakt, is de integratie van functionaliteit over verschillende incrementen snel te realiseren. DoelDe constructie van de tasks verenigt de user interface met de functionaliteit van de application services. Als hierbij bovendien andere use cases worden aangeroepen is dit eveneens het moment om de functionaliteit van dit increment te verenigen met vorige incrementen. Stappen
RichtlijnenLet op: indien er meerdere projecten gebruik maken van dezelfde technische applicatiearchitectuur verdient het aanbeveling de architecten van deze projecten te raadplegen. Het gebruik van een interface die de standaardfuncties van de tasks in de applicatie representeert heeft de voorkeur boven overerving. In het eerste geval is het namelijk mogelijk om iedere willekeurige klasse als task te laten optreden, onafhankelijk van de toegepaste applicatiearchitectuur. Niet alle programmeertalen kennen echter het begrip interface. In de programmeertaal Eiffel wordt bij het uitvoeren van een methode van een klasse altijd standaard gecontroleerd of de precondities waar zijn. Is dit niet het geval, dan wordt de methode niet uitgevoerd.Een dergelijk principe kan vooral bij de implementatie van tasks, waar de in- en uitvoer van groot belang is, zeker als er gebruik wordt gemaakt van een workflow engine, zeer nuttig zijn. Implementeer hiervoor helper classes waarmee tests kunnen worden uitgevoerd die als eerste in de task worden uitgevoerd. De uitvoer van het proces kan eventueel worden gestaakt als de precondities niet waar blijken te zijn. Dit vergroot de stabiliteit en kwaliteit van de applicatie. Het verdient aanbeveling om de activerende methode van tasks altijd van een retourwaarde te voorzien. Dit kan het best een betekenisloze parameter zijn - liefst een getal - die eenvoudig kan worden gebruikt om de correcte uitvoer van het proces te controleren. Een task kan voor het realiseren van zijn verantwoordelijkheden soms gebruik moeten maken van een andere task. Dit treedt op als een use case een andere use case gebruikt. Dit levert een uitdaging indien de aan te roepen task nog niet is ontwikkeld, maar pas in een later increment aan de orde komt.Dit probleem is te voorkomen door voor dergelijke (facade) tasks alvast te creëeren, waarbij de enige functionaliteit van deze task het waar maken van de postcondities van de use case is. Zo kan de aanroep naar de facade task worden geïmplementeerd, zonder dat deze daadwerkelijk is ontworpen en gebouwd. | Betrokkenen
|