Megosztás a következőn keresztül:


Tevékenység létrehozása futtatókörnyezetben a DynamicActivity használatával

DynamicActivity egy beton, zárt osztály egy nyilvános konstruktor. DynamicActivity a tevékenységfunkciók futásidőben való összeállításához használható tevékenység DOM használatával.

DynamicActivity-szolgáltatások

DynamicActivity hozzáféréssel rendelkezik a végrehajtási tulajdonságokhoz, argumentumokhoz és változókhoz, de nincs hozzáférése a futásidejű szolgáltatásokhoz, például a gyermektevékenységek ütemezéséhez vagy a nyomon követéshez.

A legfelső szintű tulajdonságok munkafolyamat-objektumok Argument használatával állíthatók be. Az imperatív kódban ezek az argumentumok egy új típus CLR-tulajdonságaival jönnek létre. Az XAML-ben a rendszer a címkéket és x:Member a címkéket használjax:Class.

A tervezővel ICustomTypeDescriptorfelülettel DynamicActivity létrehozott tevékenységek a . A tervezőben létrehozott tevékenységek dinamikusan Loadtölthetők be az alábbi eljárás szerint.

Tevékenység létrehozása futásidőben imperatív kóddal

  1. OpenVisual Studio 2010.

  2. Válassza a Fájl, Új, Projekt lehetőséget. A Projekttípusok ablakban válassza a Visual C# alatt a Munkafolyamat 4.0 lehetőséget, majd válassza ki a v2010 csomópontot. A Sablonok ablakban válassza a Szekvenciális munkafolyamat-konzolalkalmazás lehetőséget. Nevezze el az új dynamicActivitySample projektet.

  3. Kattintson a jobb gombbal a Workflow1.xaml elemre a HelloActivity projektben, és válassza a Törlés lehetőséget.

  4. Nyissa meg a Program.cs fájlt. Adja hozzá a következő irányelvet a fájl elejéhez.

    using System.Collections.Generic;  
    
  5. Cserélje le a Main metódus tartalmát a következő kódra, amely létrehoz egy Sequence tevékenységet, amely egyetlen WriteLine tevékenységet tartalmaz, és hozzárendeli egy Implementation új dinamikus tevékenység tulajdonságához.

    //Define the input argument for the activity  
    var textOut = new InArgument<string>();  
    //Create the activity, property, and implementation  
                Activity dynamicWorkflow = new DynamicActivity()  
                {  
                    Properties =
                    {  
                        new DynamicActivityProperty  
                        {  
                            Name = "Text",  
                            Type = typeof(InArgument<String>),  
                            Value = textOut  
                        }  
                    },  
                    Implementation = () => new Sequence()  
                    {  
                        Activities =
                        {  
                            new WriteLine()  
                            {  
                                Text = new InArgument<string>(env => textOut.Get(env))  
                            }  
                        }  
                    }  
                };  
    //Execute the activity with a parameter dictionary  
                WorkflowInvoker.Invoke(dynamicWorkflow, new Dictionary<string, object> { { "Text", "Hello World!" } });  
                Console.ReadLine();  
    
  6. Hajtsa végre az alkalmazást. Megjelenik a ""Helló világ!" alkalmazás!" szöveggel ellátott konzolablak.

Tevékenység létrehozása futásidőben az XAML használatával

  1. Nyissa meg a Visual Studio 2010-et.

  2. Válassza a Fájl, Új, Projekt lehetőséget. A Projekttípusok ablakban válassza a Visual C# alatt a Munkafolyamat 4.0 lehetőséget, majd válassza ki a v2010 csomópontot. Válassza a Munkafolyamat-konzolalkalmazás lehetőséget a Sablonok ablakban. Nevezze el az új dynamicActivitySample projektet.

  3. Nyissa meg a Workflow1.xaml fájlt a HelloActivity projektben. Kattintson a tervező alján található Argumentumok lehetőségre. Hozzon létre egy újIn, típusnak Stringnevezett TextToWrite argumentumot.

  4. Húzzon egy WriteLine-tevékenységet az eszközkészlet Primitívek szakaszából a tervezőfelületre. Rendelje hozzá az értéket TextToWrite a tevékenység Text tulajdonságához.

  5. Nyissa meg a Program.cs fájlt. Adja hozzá a következő irányelvet a fájl elejéhez.

    using System.Activities.XamlIntegration;  
    
  6. Cserélje le a(z) Main metódus tartalmát a következő kódra.

    Activity act2 = ActivityXamlServices.Load(@"Workflow1.xaml");  
                    results = WorkflowInvoker.Invoke(act2, new Dictionary<string, object> { { "TextToWrite", "HelloWorld!" } });  
    Console.ReadLine();  
    
  7. Hajtsa végre az alkalmazást. Megjelenik a ""Helló világ!" alkalmazás!" szöveggel ellátott konzolablak.

  8. Kattintson a jobb gombbal a Workflow1.xaml fájlra a Megoldáskezelő, és válassza a Kód megtekintése parancsot. Vegye figyelembe, hogy a tevékenységosztály ezzel x:Class jön létre, és a tulajdonság a következővel x:Propertyjön létre: .

Lásd még