Postupy: Vytvoření aktivity
Aktivity jsou základní jednotkou chování ve WF. Logiku provádění aktivity je možné implementovat ve spravovaném kódu nebo ji lze implementovat pomocí jiných aktivit. Toto téma ukazuje, jak vytvořit dvě aktivity. První aktivita je jednoduchá aktivita, která používá kód k implementaci své logiky spouštění. Implementace druhé aktivity je definována pomocí jiných aktivit. Tyto aktivity se používají v následujících krocích v kurzu.
Vytvoření projektu knihovny aktivit
Otevřete Visual Studio a v nabídce Soubor zvolte Nový>projekt.
V dialogovém okně Nový projekt v kategorii Nainstalováno vyberte Visual C#>Workflow (nebo Visual Basic>Workflow).
Poznámka:
Pokud kategorii Šablony pracovního postupu nevidíte, možná budete muset nainstalovat komponentu Windows Workflow Foundation sady Visual Studio. Na levé straně dialogového okna Nový projekt zvolte odkaz Otevřít Instalační program pro Visual Studio. V Instalační program pro Visual Studio vyberte kartu Jednotlivé součásti. Potom v kategorii Aktivity vývoje vyberte komponentu Windows Workflow Foundation. Zvolte Změnit a nainstalujte komponentu.
Vyberte šablonu projektu Knihovny aktivit. Zadejte
NumberGuessWorkflowActivities
do pole Název a klepněte na tlačítko OK.Klikněte pravým tlačítkem na Activity1.xaml v Průzkumník řešení a zvolte Odstranit. Potvrďte kliknutím na tlačítko OK .
Vytvoření aktivity ReadInt
V nabídce Projekt zvolte Přidat novou položku.
V uzlu Nainstalované>společné položky vyberte Pracovní postup. V seznamu pracovních postupů vyberte aktivitu kódu.
Zadejte
ReadInt
do pole Název a klepněte na tlačítko Přidat.Nahraďte existující
ReadInt
definici následující definicí.public sealed class ReadInt : NativeActivity<int> { [RequiredArgument] public InArgument<string> BookmarkName { get; set; } protected override void Execute(NativeActivityContext context) { string name = BookmarkName.Get(context); if (string.IsNullOrEmpty(name)) { throw new ArgumentException("BookmarkName cannot be an Empty string.", "context"); } context.CreateBookmark(name, new BookmarkCallback(OnReadComplete)); } // 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; } } void OnReadComplete(NativeActivityContext context, Bookmark bookmark, object state) { this.Result.Set(context, Convert.ToInt32(state)); } }
Public NotInheritable Class ReadInt Inherits NativeActivity(Of Integer) <RequiredArgument()> Property BookmarkName() As InArgument(Of String) Protected Overrides Sub Execute(ByVal context As NativeActivityContext) Dim name As String name = BookmarkName.Get(context) If name = String.Empty Then Throw New Exception("BookmarkName cannot be an Empty string.") End If context.CreateBookmark(name, New BookmarkCallback(AddressOf OnReadComplete)) End Sub ' 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 Overrides ReadOnly Property CanInduceIdle As Boolean Get Return True End Get End Property Sub OnReadComplete(ByVal context As NativeActivityContext, ByVal bookmark As Bookmark, ByVal state As Object) Result.Set(context, Convert.ToInt32(state)) End Sub End Class
Poznámka:
Aktivita
ReadInt
je odvozena od NativeActivity<TResult> místo CodeActivity, což je výchozí hodnota pro šablonu aktivity kódu. CodeActivity<TResult> lze použít, pokud aktivita poskytuje jeden výsledek, který je vystaven prostřednictvím argumentu Result , ale CodeActivity<TResult> nepodporuje použití záložek, takže NativeActivity<TResult> se používá.
Vytvoření aktivity Výzvy
Stisknutím kombinace kláves Ctrl+Shift+B sestavte projekt. Sestavení projektu umožňuje
ReadInt
, aby se aktivita v tomto projektu použila k sestavení vlastní aktivity z tohoto kroku.V nabídce Projekt zvolte Přidat novou položku.
V uzlu Nainstalované>společné položky vyberte Pracovní postup. V seznamu Pracovních postupů vyberte aktivitu.
Zadejte
Prompt
do pole Název a klepněte na tlačítko Přidat.Poklikáním na Prompt.xaml v Průzkumník řešení ho zobrazíte v návrháři, pokud ještě není zobrazen.
Kliknutím na Argumenty v levém dolním rohu návrháře aktivit zobrazte podokno Argumenty .
Klikněte na Vytvořit argument.
Zadejte
BookmarkName
do pole Název, vyberte V rozevíracím seznamu Směr, v rozevíracím seznamu Typ argumentu vyberte Řetězec a stisknutím klávesy Enter argument uložte.Klikněte na Vytvořit argument.
Zadejte
Result
do pole Název, které je pod nově přidanýmBookmarkName
argumentem, vyberte v rozevíracím seznamu Směr možnost Ven, z rozevíracího seznamu Typ argumentu vyberte Int32 a stiskněte Enter.Klikněte na Vytvořit argument.
Zadejte
Text
do pole Název, vyberte V rozevíracím seznamu Směr, v rozevíracím seznamu Typ argumentu vyberte Řetězec a stisknutím klávesy Enter argument uložte.Tyto tři argumenty jsou vázány na odpovídající argumenty WriteLine a
ReadInt
aktivity, které jsou přidány doPrompt
aktivity v následujících krocích.Kliknutím na Argumenty v levém dolním rohu návrháře aktivit zavřete podokno Argumenty .
Přetáhněte aktivitu sekvence z části Tok řízení na panelu nástrojů a přetáhněte ji na popisek aktivity Drop zde v návrháři aktivit výzvy.
Tip
Pokud se okno Panel nástrojů nezobrazí, vyberte v nabídce Zobrazení sadu nástrojů.
Přetáhněte aktivitu WriteLine z části Primitives panelu nástrojů a přetáhněte ji na popisek aktivity Drop zde popisek aktivity Sequence.
Vytvořte vazbu textového argumentu aktivity WriteLine s argumentem Text aktivity výzvy zadáním
Text
do výrazu Enter a C# nebo Zadejte pole výrazu VB v okně Vlastnosti a potom dvakrát stiskněte klávesu Tab. Tím se zavře okno členů seznamu IntelliSense a uloží se hodnota vlastnosti přesunutím výběru mimo vlastnost. Tuto vlastnost lze nastavit také zadánímText
výrazu Enter a C# nebo zadáním pole výrazu VB u samotné aktivity.Tip
Pokud se okno Vlastnosti nezobrazí, v nabídce Zobrazení vyberte okno Vlastnosti.
Přetáhněte aktivitu ReadInt z části NumberGuessWorkflowActivities v sadě nástrojů a přesuňte ji do aktivity Sekvence tak, aby se řídí aktivitou WriteLine.
Vytvořte vazbu argumentu BookmarkName aktivity ReadInt na argument BookmarkName aktivity výzvy zadáním
BookmarkName
do pole Pro zadání výrazu VB napravo od argumentu BookmarkName v okně Vlastnosti a potom stiskněte klávesu Tab dvakrát zavřete okno členů seznamu IntelliSense a uložte vlastnost.Vytvořte vazbu argumentu Výsledek aktivity ReadInt s argumentem Výsledek aktivity Výzvy zadáním
Result
do pole Pro zadání výrazu VB napravo od argumentu Výsledek v okně Vlastnosti a potom stiskněte klávesu Tab dvakrát.Stisknutím kombinace kláves Ctrl+Shift+B sestavte řešení.
Další kroky
Pokyny k vytvoření pracovního postupu pomocí těchto aktivit najdete v dalším kroku kurzu Postupy: Vytvoření pracovního postupu.