Delen via


Opties voor het ontwerpen van activiteiten in WF

.NET Framework 4.6.1 biedt verschillende opties voor het maken van aangepaste activiteiten. De juiste methode die moet worden gebruikt voor het ontwerpen van een bepaalde activiteit, is afhankelijk van de vereiste runtimefuncties.

Bepalen welke basisactiviteitklasse moet worden gebruikt voor het ontwerpen van aangepaste activiteiten

De volgende tabel bevat de functies die beschikbaar zijn in de basisklassen voor aangepaste activiteiten.

Basisactiviteitsklasse Beschikbare functies
Activity Stelt groepen van door het systeem geleverde en aangepaste activiteiten samen in een samengestelde activiteit.
CodeActivity Implementeert imperatieve functionaliteit door een Execute methode te bieden die kan worden overschreven. Biedt ook toegang tot bijhouden, variabelen en argumenten.
NativeActivity Biedt alle functies van , plus het afbreken van de uitvoering van CodeActivityactiviteiten, het annuleren van de uitvoering van onderliggende activiteiten, het gebruik van bladwijzers en het plannen van activiteiten, activiteitsacties en functies.
DynamicActivity Biedt een DOM-achtige benadering voor het maken van activiteiten die een interface hebben met de WF-ontwerpfunctie en de runtime-machines via ICustomTypeDescriptor, zodat nieuwe activiteiten kunnen worden gemaakt zonder nieuwe typen te definiëren.

Ontwerpactiviteiten met behulp van activiteit

Activiteiten die voortvloeien uit de samenstellingsfunctionaliteit Activity door andere bestaande activiteiten samen te voegen. Deze activiteiten kunnen bestaande aangepaste activiteiten zijn en activiteiten uit de .NET Framework 4.6.1-activiteitenbibliotheek. Het samenstellen van deze activiteiten is de eenvoudigste manier om aangepaste functionaliteit te maken. Deze benadering wordt meestal gebruikt bij het gebruik van een visuele ontwerpomgeving voor het ontwerpen van werkstromen.

Ontwerpactiviteiten met CodeActivity of AsyncCodeActivity

Activiteiten die zijn afgeleid van CodeActivity of AsyncCodeActivity imperatieve functionaliteit kunnen implementeren door de Execute methode te overschrijven met aangepaste imperatieve code. De aangepaste code wordt uitgevoerd wanneer de activiteit wordt uitgevoerd door de runtime. Hoewel activiteiten die op deze manier zijn gemaakt, toegang hebben tot aangepaste functionaliteit, hebben ze geen toegang tot alle functies van de runtime, zoals volledige toegang tot de uitvoeringsomgeving, de mogelijkheid om onderliggende activiteiten te plannen, het maken van bladwijzers of ondersteuning voor een methode Annuleren of Afbreken. Wanneer een CodeActivity wordt uitgevoerd, heeft deze toegang tot een beperkte versie van de uitvoeringsomgeving (via de CodeActivityContext klasse of AsyncCodeActivityContext ). Activiteiten die met behulp CodeActivity van zijn gemaakt, hebben toegang tot argument- en variabeleomzetting, extensies en tracering. Het plannen van asynchrone activiteiten kan worden uitgevoerd met behulp van AsyncCodeActivity.

Ontwerpactiviteiten met behulp van NativeActivity

Activiteiten die zijn afgeleid van NativeActivity, zoals de activiteiten die zijn afgeleid van CodeActivity, creëren imperatieve functionaliteit door te overschrijven Execute, maar hebben ook toegang tot alle functionaliteit van de werkstroomruntime via de NativeActivityContext die wordt doorgegeven aan de Execute methode. Deze context biedt ondersteuning voor het plannen en annuleren van onderliggende activiteiten, het ActivityAction uitvoeren van en ActivityFunc<TResult> objecten, het doorstromen van transacties naar een werkstroom, het aanroepen van asynchrone processen, het annuleren en afbreken van de uitvoering, toegang tot uitvoeringseigenschappen en -extensies en bladwijzers (ingangen voor het hervatten van onderbroken werkstromen).

Ontwerpactiviteiten met Behulp van DynamicActivity

In tegenstelling tot de andere drie soorten activiteit wordt nieuwe functionaliteit niet gemaakt door nieuwe typen af DynamicActivity te leiden van (de klasse is verzegeld), maar in plaats daarvan door functionaliteit in de Properties eigenschappen en Implementation samen te voegen met behulp van een activity document object model (DOM).

Ontwerpactiviteiten die een resultaat retourneren

Veel activiteiten moeten na de uitvoering een resultaat retourneren. Hoewel het mogelijk is om voor dit doel altijd een aangepaste OutArgument<T> activiteit te definiëren, is het raadzaam om in plaats daarvan te gebruiken Activity<TResult>of te afgeleid van CodeActivity<TResult> of NativeActivity<TResult>. Elk van deze basisklassen heeft een OutArgument<T> resultaat met de naam Die uw activiteit kan gebruiken voor de retourwaarde. Activiteiten die een resultaat retourneren, mogen alleen worden gebruikt als er slechts één resultaat van een activiteit moet worden geretourneerd; Als er meerdere resultaten moeten worden geretourneerd, moeten in plaats daarvan afzonderlijke OutArgument<T> leden worden gebruikt.