Útmutató: Tevékenység létrehozása
A tevékenységek a WF alapvető viselkedési egységei. Egy tevékenység végrehajtási logikája implementálható felügyelt kódban, vagy más tevékenységek használatával is implementálható. Ez a témakör bemutatja, hogyan hozhat létre két tevékenységet. Az első tevékenység egy egyszerű tevékenység, amely kód használatával implementálja annak végrehajtási logikáját. A második tevékenység megvalósítását más tevékenységek használatával határozzák meg. Ezeket a tevékenységeket az oktatóanyag következő lépéseiben használjuk.
A tevékenységtár-projekt létrehozása
Nyissa meg a Visual Studiót, és válassza az Új>projekt lehetőséget a Fájl menüben.
Az Új projekt párbeszédpanel Telepített kategóriája alatt válassza a Visual C#>Workflow (vagy Visual Basic>Workflow) lehetőséget.
Feljegyzés
Ha nem látja a Munkafolyamat sablon kategóriát, előfordulhat, hogy telepítenie kell a Visual Studio Windows Workflow Foundation összetevőjét. Az Új projekt párbeszédpanel bal oldalán válassza a Visual Studio Installer megnyitása hivatkozást. A Visual Studio Installerben válassza az Egyes összetevők lapot. Ezután a Fejlesztési tevékenységek kategóriában válassza ki a Windows Workflow Foundation összetevőt. Az összetevő telepítéséhez válassza a Módosítás lehetőséget.
Válassza ki a Tevékenységtár projektsablont. Írja be
NumberGuessWorkflowActivities
a Név mezőbe, majd kattintson az OK gombra.Kattintson a jobb gombbal az Activity1.xaml elemre a Megoldáskezelő, és válassza a Törlés parancsot. A megerősítéshez kattintson az OK gombra .
A ReadInt-tevékenység létrehozása
Válassza az Új elem hozzáadása lehetőséget a Projekt menüben.
A Telepített>gyakori elemek csomóponton válassza a Munkafolyamat lehetőséget. Válassza a Kódtevékenység lehetőséget a munkafolyamat-listából.
Írja be
ReadInt
a Név mezőbe, majd kattintson a Hozzáadás gombra.Cserélje le a meglévő
ReadInt
definíciót a következő definícióra.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
Feljegyzés
A
ReadInt
tevékenység a kódtevékenység-sablon alapértelmezett értékétől CodeActivityszármazikNativeActivity<TResult>. CodeActivity<TResult> akkor használható, ha a tevékenység egyetlen eredményt ad, amely az Result argumentumon keresztül jelenik meg, de CodeActivity<TResult> nem támogatja a könyvjelzők használatát, ezért NativeActivity<TResult> a program használja.
A Prompt tevékenység létrehozása
A projekt létrehozásához nyomja le a Ctrl Shift+B billentyűkombinációt.+ A projekt létrehozása lehetővé teszi az ebben a
ReadInt
projektben lévő tevékenység használatát az egyéni tevékenység létrehozásához ebből a lépésből.Válassza az Új elem hozzáadása lehetőséget a Projekt menüben.
A Telepített>gyakori elemek csomóponton válassza a Munkafolyamat lehetőséget. Válassza ki a Tevékenység lehetőséget a munkafolyamat-listából .
Írja be
Prompt
a Név mezőbe, majd kattintson a Hozzáadás gombra.Kattintson duplán a Prompt.xaml elemre a Megoldáskezelő a tervezőben való megjelenítéséhez, ha még nem jelenik meg.
Kattintson az Argumentumok elemre a tevékenységtervező bal alsó részén az Argumentumok panel megjelenítéséhez.
Kattintson az Argumentum létrehozása gombra.
Írja be
BookmarkName
a Név mezőbe, válassza a Be lehetőséget az Irány legördülő listában, válassza az Argumentumtípus legördülő listából a Sztring lehetőséget, majd az Enter billentyűt lenyomva mentse az argumentumot.Kattintson az Argumentum létrehozása gombra.
Írja be az újonnan hozzáadott
BookmarkName
argumentum alatti Név mezőbe, válassza ki az Irány legördülő listából, válassza az Int32 lehetőséget az Argumentumtípus legördülő listából, majd nyomja le az Enter billentyűt.Result
Kattintson az Argumentum létrehozása gombra.
Írja be
Text
a Név mezőbe, válassza a Be lehetőséget az Irány legördülő listában, válassza az Argumentumtípus legördülő listából a Sztring lehetőséget, majd az Enter billentyűt lenyomva mentse az argumentumot.Ez a három argumentum az alábbi lépésekben a tevékenységhez hozzáadott tevékenységek és
ReadInt
tevékenységek megfelelő argumentumaihoz WriteLinePrompt
van kötve.Az Argumentumok panel bezárásához kattintson a tevékenységtervező bal alsó részén található Argumentumok elemre.
Húzzon egy sorozattevékenységet az eszközkészlet Vezérlőfolyamat szakaszából, és vigye a Prompt tevékenységtervező idei tevékenység címkéjére.
Tipp.
Ha az Eszközkészlet ablak nem jelenik meg, válassza az Eszközkészlet lehetőséget a Nézet menüben.
Húzzon egy WriteLine-tevékenységet az eszközkészlet Primitívek szakaszából, és húzza a Folyamattevékenység idei címkéjére.
A WriteLine tevékenység Szöveg argumentumának kötése a Prompt tevékenység Szöveg argumentumához a Tulajdonságok ablak Enter a C# kifejezés vagy Az Enter a VB kifejezés mezőjébe beírva
Text
, majd nyomja le kétszer a Tab billentyűt. Ezzel bezárja az IntelliSense listatagok ablakát, és a tulajdonság értékét úgy menti, hogy áthelyezi a kijelölést a tulajdonságból. Ezt a tulajdonságot úgy is beállíthatja, hogy beírjaText
az Enter a C# kifejezést , vagy beír egy VB-kifejezést a tevékenységbe.Tipp.
Ha a Tulajdonságok ablak nem jelenik meg, válassza a Tulajdonságok ablak lehetőséget a Nézet menüben.
Húzzon egy ReadInt-tevékenységet az eszközkészlet NumberGuessWorkflowActivities szakaszából, és helyezze a Sorrend tevékenységbe, hogy az a WriteLine-tevékenységet kövesse.
Kösse a ReadInt tevékenység Könyvjelzőnév argumentumát a Prompt tevékenység BookmarkName argumentumához. Ehhez írja
BookmarkName
be a Tulajdonságok ablak Könyvjelzőnév argumentumától jobbra található Enter a VB kifejezést, majd nyomja le kétszer a Tab billentyűt az IntelliSense listatagok ablakának bezárásához és a tulajdonság mentéséhez.Kösse a ReadInt tevékenység Eredmény argumentumát a Prompt tevékenység Eredmény argumentumához. Ehhez írja
Result
be a Tulajdonságok ablak Eredmény argumentumától jobbra található Enter a VB kifejezést, majd nyomja le kétszer a Tab billentyűt.A megoldás létrehozásához nyomja le a Ctrl Shift+B billentyűkombinációt.+
Következő lépések
Ha útmutatást szeretne a munkafolyamatok ezen tevékenységek használatával történő létrehozásáról, tekintse meg a munkafolyamat létrehozása című oktatóanyag következő lépését.