Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Omfång och synlighet för aktivitetsdefinitioner, precis som omfång och synlighet för ett objekt, är möjligheten för andra objekt eller aktiviteter att komma åt medlemmarna i aktiviteten. Aktivitetsdefinitionen utförs av följande implementeringar:
Fastställa medlemmarna (Argument, Variable och ActivityDelegate objekt och underordnade aktiviteter) som en aktivitet exponerar för sina användare.
Implementering av körningslogiken för aktiviteten
Implementeringen kan omfatta medlemmar som inte är synliga för användare av aktiviteten, utan utgör snarare detaljer i själva implementeringen. På samma sätt som med typdefinitionen tillåter aktivitetsmodellen att en författare kvalificerar synligheten för en aktivitetsmedlem när det gäller definitionen av aktiviteten som definieras. Den här synligheten styr aspekter av medlemsanvändning, till exempel dataomfång.
Omfång
Förutom dataomfång kan synligheten för aktivitetsmodellen begränsa åtkomsten till andra aspekter av aktiviteten, till exempel validering, felsökning, spårning eller analys. Körningsegenskaper använder synlighet och omfång för att begränsa körningsegenskaper till ett visst definitionsområde. Sekundära rötter använder synlighet och omfång för att begränsa tillståndet som samlas in av en CompensableActivity till definitionsomfånget där de kompenserbara aktiviteterna används.
Definition och användning
Ett arbetsflöde skrivs genom att skapa nya aktiviteter genom att ärva från basaktivitetsklasser och genom att använda aktiviteter från Built-In aktivitetsbiblioteket. För att kunna använda en aktivitet måste aktivitetsförfattaren konfigurera synligheten för varje komponent i definitionen.
Aktivitetsmedlemmar
Aktivitetsmodellen definierar de argument, variabler, ombud och underordnade aktiviteter som aktiviteten gör tillgängliga för konsumenter. Var och en av dessa medlemmar kan deklareras som public
eller private
. Offentliga medlemmar konfigureras av användaren av aktiviteten, medan private
medlemmar använder en implementering som fastställts av aktivitetens författare. Synlighetsreglerna för dataomfånget är följande:
Offentliga medlemmar och de offentliga medlemmar som deltar i aktiviteter för offentliga barn kan referera till allmänna variabler.
Privata och publika medlemmar av publika barnaktiviteter kan referera till argument och privata variabler.
En medlem som kan ställas in av användaren av en aktivitet bör aldrig göras privat.
Författarmodeller
Anpassade aktiviteter definieras med hjälp av NativeActivity, Activity, CodeActivity eller AsyncCodeActivity. Aktiviteter som härleds från dessa klasser kan exponera olika medlemstyper med olika synligheter.
NativeActivity
Aktiviteter som härleds från NativeActivity har ett beteende som skrivs i imperativ kod och som kan definieras med hjälp av befintliga aktiviteter. Att härleda aktiviteter från NativeActivity ger åtkomst till alla funktioner som exponeras av runtime-miljön. Alla medlemmar i en sådan aktivitet kan definieras med antingen offentlig eller privat synlighet, förutom argument, som bara kan deklareras som public
.
Medlemmar i klasser som härleds från NativeActivity deklareras för körningen med hjälp av den struct NativeActivityMetadata som skickas till metoden CacheMetadata.
Aktivitet
Aktiviteter som skapas med hjälp av Activity har ett beteende som är utformat strikt genom sammansättning av andra aktiviteter. Klassen Activity har en underordnad aktivitet som implementeras och hämtas under körning med hjälp av Implementation. En aktivitet som härleds från Activity kan definiera offentliga argument, offentliga variabler, importerade ActivityDelegates och importerade aktiviteter.
Importerade ActivityDelegates och Aktiviteter deklareras som offentliga underordnade aktiviteter, men kan inte schemaläggas direkt av aktiviteten. Den här informationen används under valideringen för att undvika att köra överordnade verifieringar på platser där aktiviteten aldrig körs. Dessutom kan importerade barn, precis som publika barn, refereras till och schemaläggas i aktivitetens implementering. Det innebär att en aktivitet som importerar en aktivitet med namnet Activity1 kan innehålla en Sequence i implementeringen som schemalägger Activity1.
CodeActivity/AsyncCodeActivity
Den här basklassen används för redigering av beteende i imperativ kod. Aktiviteter som härleds från den här klassen har bara åtkomst till de argument som de exponerar. Det innebär att de enda medlemmar som dessa aktiviteter kan exponera är offentliga argument. Inga andra medlemmar eller visibiliteter gäller för dessa aktiviteter.
Sammanfattning av visibiliteter
I följande tabell sammanfattas informationen tidigare i det här avsnittet.
Medlemstyp | NativeActivity | Aktivitet | CodeActivity/AsyncCodeActivity |
---|---|---|---|
Argumentpunkter | Offentlig/privat | Offentlig | inte tillämpligt |
Variabler | Offentlig/privat | Offentlig | inte tillämpligt |
Aktiviteter för barn | Offentlig/privat | Offentligt, ett fast privat underordnat definierat i implementeringen. | inte tillämpligt |
Aktivitetsdelegater | Offentlig/privat | Offentlig | inte tillämpligt |
I allmänhet bör en medlem som inte kan ställas in av konsumenten av en verksamhet inte offentliggöras.
Exekveringsegenskaper
I vissa scenarier är det användbart att tilldela en viss körningsegenskap till de offentliga barnen till en aktivitet. Samlingen ExecutionProperties tillhandahåller den här funktionen med Add -metoden. Den här metoden har en boolesk parameter som anger om en viss egenskap gäller för alla barn, eller bara de som är publika. Om den här parametern är inställd på true
visas egenskapen endast för offentliga medlemmar och offentliga medlemmar av deras offentliga barn.
Sekundära rötter
En sekundär rot är körmiljöns interna mekanism för att hantera status för kompensationsaktiviteter. När en CompensableActivity har körts rensas inte dess tillstånd omedelbart. I stället underhålls tillståndet av körningen i en sekundär rot tills kompensationsavsnittet har slutförts. De platsmiljöer som samlas in med den sekundära roten motsvarar definitionsomfånget där compensable-aktiviteten används.