Sdílet prostřednictvím


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:

  1. Určení členů (Argument, Variablea objektů a ActivityDelegate podřízených aktivit) aktivitu zveřejňuje svým uživatelům.

  2. 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í:

  1. Veřejné členy a veřejné členy veřejných podřízených aktivit mohou odkazovat na veřejné proměnné.

  2. 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 truehodnotu , 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.