Instrukcje: Tworzenie działania
Działania to podstawowa jednostka zachowania w programie WF. Logikę wykonywania działania można zaimplementować w kodzie zarządzanym lub zaimplementować za pomocą innych działań. W tym temacie przedstawiono sposób tworzenia dwóch działań. Pierwsze działanie to proste działanie, które używa kodu do implementowania logiki wykonywania. Implementacja drugiego działania jest definiowana przy użyciu innych działań. Te działania są używane w poniższych krokach w samouczku.
Tworzenie projektu biblioteki działań
Otwórz program Visual Studio i wybierz pozycję Nowy>projekt z menu Plik.
W oknie dialogowym Nowy projekt w kategorii Zainstalowane wybierz pozycję Visual C#>Workflow (lub Przepływ pracy języka Visual Basic).>
Uwaga
Jeśli nie widzisz kategorii Szablon przepływu pracy, może być konieczne zainstalowanie składnika Windows Workflow Foundation programu Visual Studio. Wybierz link Otwórz Instalator programu Visual Studio po lewej stronie okna dialogowego Nowy projekt. W Instalator programu Visual Studio wybierz kartę Poszczególne składniki. Następnie w kategorii Działania programistyczne wybierz składnik Windows Workflow Foundation. Wybierz pozycję Modyfikuj , aby zainstalować składnik.
Wybierz szablon projektu Biblioteka działań. Wpisz
NumberGuessWorkflowActivities
w polu Nazwa , a następnie kliknij przycisk OK.Kliknij prawym przyciskiem myszy plik Activity1.xaml w Eksplorator rozwiązań i wybierz polecenie Usuń. Kliknij przycisk OK , aby potwierdzić.
Tworzenie działania ReadInt
Wybierz pozycję Dodaj nowy element z menu Projekt .
W węźle Zainstalowane>elementy wspólne wybierz pozycję Przepływ pracy. Wybierz pozycję Działanie kodu z listy Przepływ pracy .
Wpisz
ReadInt
w polu Nazwa , a następnie kliknij przycisk Dodaj.Zastąp istniejącą
ReadInt
definicję następującą definicją.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
Uwaga
Działanie
ReadInt
pochodzi z NativeActivity<TResult> wartości zamiast CodeActivity, która jest domyślną wartością szablonu działania kodu. CodeActivity<TResult> można użyć, jeśli działanie zapewnia pojedynczy wynik, który jest uwidaczniony za pośrednictwem argumentu Result , ale CodeActivity<TResult> nie obsługuje używania zakładek, więc NativeActivity<TResult> jest używany.
Tworzenie działania Monituj
Naciśnij Ctrl+Shift+B, aby skompilować projekt. Kompilowanie projektu umożliwia
ReadInt
działanie w tym projekcie do kompilowania niestandardowego działania z tego kroku.Wybierz pozycję Dodaj nowy element z menu Projekt .
W węźle Zainstalowane>elementy wspólne wybierz pozycję Przepływ pracy. Wybierz pozycję Działanie z listy Przepływ pracy .
Wpisz
Prompt
w polu Nazwa , a następnie kliknij przycisk Dodaj.Kliknij dwukrotnie plik Prompt.xaml w Eksplorator rozwiązań, aby wyświetlić go w projektancie, jeśli nie jest jeszcze wyświetlany.
Kliknij pozycję Argumenty w lewym dolnym rogu projektanta działań, aby wyświetlić okienko Argumenty .
Kliknij pozycję Utwórz argument.
Wpisz
BookmarkName
w polu Nazwa , wybierz pozycję W z listy rozwijanej Kierunek , wybierz pozycję Ciąg z listy rozwijanej Typ argumentu, a następnie naciśnij Enter , aby zapisać argument.Kliknij pozycję Utwórz argument.
Wpisz
Result
w polu Nazwa, które znajduje się poniżej nowo dodanegoBookmarkName
argumentu, wybierz z listy rozwijanej Kierunek wybierz pozycję Int32 z listy rozwijanej Typ argumentu, a następnie naciśnij Enter.Kliknij pozycję Utwórz argument.
Wpisz
Text
w polu Nazwa , wybierz pozycję W z listy rozwijanej Kierunek , wybierz pozycję Ciąg z listy rozwijanej Typ argumentu, a następnie naciśnij Enter , aby zapisać argument.Te trzy argumenty są powiązane z odpowiednimi argumentami WriteLine działań i
ReadInt
dodawanych doPrompt
działania w poniższych krokach.Kliknij pozycję Argumenty w lewym dolnym rogu projektanta działań, aby zamknąć okienko Argumenty .
Przeciągnij działanie Sekwencja z sekcji Przepływ sterowania przybornika i upuść je na etykietę Działanie Upuść tutaj projektanta działań Monituj.
Napiwek
Jeśli okno Przybornik nie jest wyświetlane, wybierz pozycję Przybornik z menu Widok.
Przeciągnij działanie WriteLine z sekcji Typy pierwotne przybornika i upuść je na etykietę Działanie Upuść w tym miejscu działania Sekwencja.
Powiąż argument Text działania WriteLine z argumentem Text działania Monit, wpisując
Text
w wyrażeniu Enter a C# lub Wprowadź wyrażenie VB w oknie Właściwości, a następnie naciśnij Tab dwa razy. Spowoduje to odrzucenie okna elementów członkowskich listy Funkcji IntelliSense i zapisanie wartości właściwości przez przeniesienie zaznaczenia z właściwości. Tę właściwość można również ustawić, wpisującText
w polu Wprowadź wyrażenie języka C# lub Wprowadź wyrażenie VB w samym działaniu.Napiwek
Jeśli okno Właściwości nie jest wyświetlane, wybierz pozycję Okno właściwości z menu Widok.
Przeciągnij działanie ReadInt z sekcji NumberGuessWorkflowActivities przybornika i upuść je w działaniu Sequence, aby było zgodne z działaniem WriteLine.
Powiąż argument BookmarkName działania ReadInt z argumentem BookmarkName działania Monituj, wpisując
BookmarkName
w polu Wprowadź wyrażenie VB z prawej strony argumentu BookmarkName w oknie Właściwości, a następnie naciśnij Tab dwa razy, aby zamknąć okno członków listy IntelliSense i zapisać właściwość.Powiąż argument Result działania ReadInt z argumentem Result działania Monituj, wpisując
Result
w polu Wprowadź wyrażenie VB po prawej stronie argumentu Wynik w oknie Właściwości, a następnie naciśnij Tab dwa razy.Naciśnij Ctrl+Shift+B, aby skompilować rozwiązanie.
Następne kroki
Aby uzyskać instrukcje dotyczące tworzenia przepływu pracy przy użyciu tych działań, zobacz następny krok w samouczku How to: Create a Workflow (Instrukcje: tworzenie przepływu pracy).