Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Program Windows Workflow Foundation (WF) podnosi poziom abstrakcji do tworzenia interaktywnych długotrwałych aplikacji. Jednostki pracy są enkapsulowane jako działania. Działania są uruchamiane w środowisku zapewniającym funkcje sterowania przepływem, obsługi wyjątków, propagacji błędów, trwałości danych stanu, wczytywania i usuwania z pamięci przepływów pracy w toku, śledzenia i przepływu transakcji.
Architektura działania
Działania są opracowywane jako typy CLR, które pochodzą z Activity, CodeActivity, AsyncCodeActivity, lub NativeActivity, albo z ich wariantów, które zwracają wartość, Activity<TResult>, CodeActivity<TResult>, AsyncCodeActivity<TResult>, lub NativeActivity<TResult>. Opracowywanie działań pochodzących z Activity programu umożliwia użytkownikowi tworzenie wstępnie istniejących działań w celu szybkiego tworzenia jednostek pracy wykonywanych w środowisku przepływu pracy. CodeActivity, z drugiej strony, umożliwia napisanie logiki wykonywania przy użyciu kodu zarządzanego, używając CodeActivityContext przede wszystkim do uzyskiwania dostępu do argumentów działań. AsyncCodeActivity jest podobny do CodeActivity z tym, że może służyć do implementowania zadań asynchronicznych. Opracowywanie czynności, które wynikają z NativeActivity, pozwala użytkownikom na dostęp do środowiska uruchomieniowego poprzez NativeActivityContext, oferując funkcje takie jak planowanie obiektów podrzędnych, tworzenie zakładek, wywoływanie pracy asynchronicznej, rejestrowanie transakcji i wiele więcej.
Działania tworzenia pochodzące z Activity są deklaratywne i mogą być tworzone w XAML. W poniższym przykładzie aktywność o nazwie Prompt jest tworzona przy użyciu innych aktywności dla ciała wykonawczego.
<Activity x:Class='Prompt'
xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml'
xmlns:z='http://schemas.microsoft.com/netfx/2008/xaml/schema'
xmlns:my='clr-namespace:XAMLActivityDefinition;assembly=XAMLActivityDefinition'
xmlns:s="clr-namespace:System;assembly=mscorlib"
xmlns="http://schemas.microsoft.com/2009/workflow">
<z:SchemaType.Members>
<z:SchemaType.SchemaProperty Name='Text' Type='InArgument(s:String)' />
<z:SchemaType.SchemaProperty Name='Response' Type='OutArgument(s:String)' />
</z:SchemaType.Members>
<Sequence>
<my:WriteLine Text='[Text]' />
<my:ReadLine BookmarkName='r1' Result='[Response]' />
</Sequence>
</Activity>
Kontekst działania
ActivityContext to interfejs autora działania dla systemu wykonawczego przepływu pracy i zapewnia dostęp do licznych funkcji tego systemu. W poniższym przykładzie zdefiniowano działanie, które używa kontekstu wykonywania do utworzenia zakładki (mechanizmu, który umożliwia działaniu zarejestrowanie punktu kontynuacji w jego wykonaniu, który może zostać wznowiony przez hosta przekazującego dane do działania).
public sealed class ReadLine : NativeActivity<string>
{
[RequiredArgument]
public InArgument<string> BookmarkName { get; set; }
protected override void Execute(NativeActivityContext context)
{
// Create a Bookmark and wait for it to be resumed.
context.CreateBookmark(BookmarkName.Get(context),
new BookmarkCallback(OnResumeBookmark));
}
// NativeActivity derived activities that do asynchronous operations by calling
// one of the CreateBookmark overloads defined on System.Activities.NativeActivityContext
// must override the CanInduceIdle property and return true.
protected override bool CanInduceIdle
{
get { return true; }
}
public void OnResumeBookmark(NativeActivityContext context, Bookmark bookmark, object obj)
{
// When the Bookmark is resumed, assign its value to
// the Result argument.
Result.Set(context, (string)obj);
}
Cykl życia Aktivności
Wystąpienie działania zaczyna się w Executing stanie . Jeśli nie zostaną napotkane wyjątki, pozostanie w tym stanie do momentu zakończenia wykonywania wszystkich działań podrzędnych, a wszystkie inne oczekujące prace (Bookmark na przykład obiekty) zostaną ukończone, w którym momencie przejdzie do Closed stanu. Rodzic wystąpienia działania może zażądać anulowania elementu podrzędnego; jeśli element podrzędny może zostać anulowany, zostanie ukończony w stanie Canceled. Jeśli podczas wykonywania jest zgłaszany wyjątek, środowisko uruchomieniowe umieszcza akcję w Faulted stanie i propaguje wyjątek do nadrzędnego łańcucha działań. Poniżej przedstawiono trzy stany ukończenia działania:
Zamknięty: Działanie zakończyło pracę i zakończyło działanie.
Anulowane: Działanie zakończyło swoje zadanie i się wycofało. Praca nie jest wyraźnie wycofywana w momencie przejścia do tego stanu.
Faulted: Działanie napotkało błąd i zakończyło się bez kończenia pracy.
Działania pozostają w stanie Executing, gdy są utrwalone lub rozładowane.