Aracılığıyla paylaş


DynamicActivity ile Çalışma Zamanında Etkinlik Oluşturma

DynamicActivity genel bir oluşturucuya sahip somut, mühürlü bir sınıftır. DynamicActivity bir etkinlik DOM'ı kullanarak çalışma zamanında etkinlik işlevselliğini bir araya getirmek için kullanılabilir.

DynamicActivity Özellikleri

DynamicActivity yürütme özelliklerine, argümanlara ve değişkenlere erişimi vardır, ancak çalışma zamanı hizmetlerine, örneğin alt etkinlikleri zamanlama veya izleme gibi, erişimi yoktur.

Üst düzey özellikler iş akışı Argument nesneleri kullanılarak ayarlanabilir. Emredici kodda, bu bağımsız değişkenler yeni bir türdeki CLR özellikleri kullanılarak oluşturulur. XAML'de x:Class ve x:Member etiketleri kullanılarak bildirilir.

Tasarımcı ile DynamicActivity kullanılarak arabirim oluşturan ICustomTypeDescriptor kullanılarak yapılan etkinlikler. Tasarımcıda oluşturulan etkinlikler, Load kullanılarak aşağıdaki yordamda gösterildiği gibi dinamik olarak yüklenebilir.

Kesinlik temelli kod kullanarak çalışma zamanında etkinlik oluşturmak için

  1. OpenVisual Studio 2010.

  2. Dosya, Yeni, Proje'yi seçin. Proje Türleri penceresinde Visual C# altında İş Akışı 4.0'ı seçin ve v2010 düğümünü seçin. Şablonlar penceresinde Sıralı İş Akışı Konsolu Uygulaması'nı seçin. Yeni projeye DynamicActivitySample adını verin.

  3. HelloActivity projesinde Workflow1.xaml öğesine sağ tıklayın ve Sil'i seçin.

  4. Program.cs dosyasını açın. Dosyanın en üstüne aşağıdaki yönergeyi ekleyin.

    using System.Collections.Generic;
    
  5. yönteminin Main içeriğini, tek Sequence bir etkinlik içeren bir etkinlik oluşturan ve yeni bir WriteLine dinamik etkinliğin Implementation özelliğine atayan aşağıdaki kodla değiştirin.

    //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. Uygulamayı çalıştır. "Merhaba Dünya!" metnini içeren bir konsol penceresi görüntülenir.

XAML kullanarak çalışma zamanında etkinlik oluşturmak için

  1. Visual Studio 2010'yu açın.

  2. Dosya, Yeni, Proje'yi seçin. Proje Türleri penceresinde Visual C# altında İş Akışı 4.0'ı seçin ve v2010 düğümünü seçin. Şablonlar penceresinde İş Akışı Konsol Uygulaması'nı seçin. Yeni projeye DynamicActivitySample adını verin.

  3. HelloActivity projesinde Workflow1.xaml dosyasını açın. Tasarımcının altında Argümanlar seçeneğine tıklayın. Yeni bir In türünde TextToWrite adlı String bağımsız değişken oluşturun.

  4. Bir WriteLine etkinliğini araç kutusunun Temel Öğeler bölümünden tasarımcı yüzeyine sürükleyin. Değeri TextToWrite etkinliğin Text özelliğine atayın.

  5. Program.cs dosyasını açın. Dosyanın en üstüne aşağıdaki yönergeyi ekleyin.

    using System.Activities.XamlIntegration;
    
  6. yönteminin Main içeriğini aşağıdaki kodla değiştirin.

    Activity act2 = ActivityXamlServices.Load(@"Workflow1.xaml");
                    results = WorkflowInvoker.Invoke(act2, new Dictionary<string, object> { { "TextToWrite", "HelloWorld!" } });
    Console.ReadLine();
    
  7. Uygulamayı çalıştır. "Merhaba Dünya!" metnini içeren bir konsol penceresi görüntülenir.

  8. Çözüm Gezgini'nde Workflow1.xaml dosyasına sağ tıklayın ve Kodu Görüntüle'yi seçin. etkinlik sınıfının ile x:Class oluşturulduğunu ve özelliğinin ile x:Propertyoluşturulduğunu unutmayın.

Ayrıca bakınız