Určení oboru a viditelnosti definice aktivity
Definování rozsahu a viditelnosti aktivity, stejně jako rozsah a viditelnost objektu, je schopnost jiných objektů nebo aktivit přistupovat k členům aktivity. Definice aktivity se provádí následujícími implementacemi:
Určení členů (Argument, Variablea objektů a ActivityDelegate podřízených aktivit) aktivitu zveřejňuje svým uživatelům.
Implementace logiky provádění aktivity
Implementace může zahrnovat členy, kteří nejsou vystaveni uživatelům aktivity, ale jsou spíše podrobnostmi o implementaci. Podobně jako u definice typu model aktivity umožňuje autorovi určit viditelnost člena aktivity v souvislosti s definicí definované aktivity. Tato viditelnost se řídí aspekty používání členů, jako jsou rozsahy dat.
Obor
Kromě určení rozsahu dat může viditelnost modelu aktivit omezit přístup k jiným aspektům aktivity, jako je ověřování, ladění, sledování nebo trasování. Vlastnosti spuštění používají viditelnost a rozsah pro omezení vlastností provádění na konkrétní obor definice. Sekundární kořeny používají viditelnost a vymezení rozsahu k omezení stavu zachyceného CompensableActivity podle rozsahu definice, ve kterém se používají komenzovatelné aktivity.
Definice a použití
Pracovní postup je napsán vytvořením nových aktivit zděděním ze základních tříd aktivit a použitím aktivit z integrované knihovny aktivit. Aby bylo možné použít aktivitu, musí autor aktivity nakonfigurovat viditelnost jednotlivých součástí jeho definice.
Členové aktivit
Model aktivity definuje argumenty, proměnné, delegáty a podřízené aktivity, které aktivita zpřístupňuje příjemcům. Každý z těchto členů lze deklarovat jako public
nebo private
. Uživatelé aktivity konfigurují veřejné členy, zatímco private
členové používají implementaci pevně stanovenou autorem aktivity. Pravidla viditelnosti pro nastavení rozsahu dat jsou následující:
Veřejné členy a veřejné členy veřejných podřízených aktivit mohou odkazovat na veřejné proměnné.
Soukromé členy a veřejné členy veřejných podřízených aktivit mohou odkazovat na argumenty a soukromé proměnné.
Člen, který může nastavit příjemce aktivity, by nikdy neměl být soukromý.
Vytváření modelů
Vlastní aktivity jsou definovány pomocí , NativeActivityActivityCodeActivitynebo .AsyncCodeActivity Aktivity odvozené z těchto tříd mohou vystavit různé typy členů s různými visibilitami.
Nativeactivity
Aktivity odvozené z NativeActivity chování, které jsou napsané v imperativním kódu, a lze je volitelně definovat pomocí existujících aktivit. Odvozování aktivit z NativeActivity udělení přístupu ke všem funkcím vystaveným modulem runtime Každý člen takové aktivity může být definován pomocí veřejné nebo soukromé viditelnosti, s výjimkou argumentů, které lze deklarovat pouze jako public
.
Členy tříd odvozených z NativeActivity jsou deklarovány do modulu runtime pomocí NativeActivityMetadata struktury předané metodě CacheMetadata .
Aktivita
Aktivity vytvořené pomocí použití Activity mají chování, které je určeno výhradně prostřednictvím vytváření dalších aktivit. Třída Activity má jednu podřízenou aktivitu implementace získanou modulem runtime pomocí Implementation. Aktivita odvozená z Activity může definovat veřejné argumenty, veřejné proměnné, importované aktivity a importované aktivity.
Importované objekty ActivityDelegates a Aktivity jsou deklarovány jako veřejné podřízené položky aktivity, ale aktivitu nelze přímo naplánovat. Tyto informace se používají během ověřování, aby se zabránilo spouštění ověřování směřujících k nadřazeným objektům v umístěních, kde se aktivita nikdy nespustí. Importované podřízené položky, stejně jako veřejné podřízené položky, se také dají odkazovat a plánovat implementací aktivity. To znamená, že aktivita, která importuje aktivitu s názvem Activity1, může obsahovat Sequence ve své implementaci, která plánuje aktivitu 1.
CodeActivity/ AsyncCodeActivity
Tato základní třída se používá k vytváření chování v imperativním kódu. Aktivity odvozené z této třídy mají přístup pouze k argumentům, které zpřístupňují. To znamená, že jedinými členy, které mohou tyto aktivity zveřejnit, jsou veřejné argumenty. Na tyto aktivity se nevztahují žádné další členy ani visibility.
Shrnutí visibility
Následující tabulka shrnuje informace uvedené výše v této části.
Typ členu | Nativeactivity | Aktivita | CodeActivity/ AsyncCodeActivity |
---|---|---|---|
Argumenty | Veřejný/ soukromý | Veřejná | nejde použít |
Proměnné | Veřejný/ soukromý | Veřejná | nejde použít |
Podřízené aktivity | Veřejný/ soukromý | Veřejná, jedna pevná soukromá podřízená položka definovaná v implementaci. | nejde použít |
AktivityDelegates | Veřejný/ soukromý | Veřejná | nejde použít |
Obecně platí, že člen, který nemůže uživatel aktivity nastavit, by neměl být veřejně přístupný.
Vlastnosti spuštění
V některých scénářích je užitečné určit konkrétní vlastnost provádění na veřejné podřízené položky aktivity. Tato ExecutionProperties kolekce tuto funkci poskytuje metodou Add . Tato metoda má logický parametr označující, zda je konkrétní vlastnost vymezena na všechny podřízené objekty, nebo pouze pro ty, které jsou veřejné. Pokud je tento parametr nastaven na true
hodnotu , vlastnost bude viditelná pouze veřejným členům a veřejným členům jejich veřejných podřízených položek.
Sekundární kořeny
Sekundární kořen je interní mechanismus modulu runtime pro správu stavu kompenzačních aktivit. CompensableActivity Po dokončení běhu se jeho stav okamžitě nevyčistí. Místo toho je stav udržován modulem runtime v sekundárním kořenovém adresáři, dokud se epizoda kompenzace nedokončí. Prostředí umístění zachycená pomocí sekundárního kořenového adresáře odpovídají oboru definice, ve které se používá aktivita Compensable.