Aracılığıyla paylaş


Değişkenler ve Argümanlar

Windows Workflow Foundation'da (WF), değişkenler verilerin depolanmasını ifade ederken, bağımsız değişkenler de bir etkinliğe veri girişini ve etkinlikten veri çıkışını ifade eder. Bir etkinliğin bir dizi bağımsız değişkeni bulunur ve bunlar etkinliğin imzasını oluşturur. Ayrıca bir etkinlik, bir geliştiricinin iş akışının tasarımı sırasında değişken ekleyip kaldırabileceği değişkenlerin listesini de koruyabilir. Bağımsız değişken, değer döndüren bir ifade kullanılarak bağlanır.

Değişkenler

Değişkenler, verilerin depolama konumlarıdır. Değişkenler, iş akışının tanımının bir parçası olarak bildirilir. Değişkenler çalışma zamanında değerleri alır ve bu değerler iş akışı örneğinin durumunun bir parçası olarak depolanır. Değişken tanımı, değişkenin türünü ve isteğe bağlı olarak adı belirtir. Aşağıdaki kodda bir değişkeni bildirme, etkinlik kullanarak Assign<T> buna değer atama ve ardından bir etkinlik kullanarak WriteLine konsolda değerini görüntüleme gösterilmektedir.

// Define a variable named "str" of type string.  
Variable<string> var = new Variable<string>  
{  
    Name = "str"  
};  
  
// Declare the variable within a Sequence, assign  
// a value to it, and then display it.  
Activity wf = new Sequence()  
{  
    Variables = { var },  
    Activities =  
    {  
        new Assign<string>  
        {  
            To = var,  
            Value = "Hello World."  
        },  
        new WriteLine  
        {  
            Text = var  
        }  
    }  
};  
  
WorkflowInvoker.Invoke(wf);  

Varsayılan değer ifadesi isteğe bağlı olarak değişken bildiriminin bir parçası olarak belirtilebilir. Değişkenlerin değiştiricileri de olabilir. Örneğin, bir değişken salt okunur durumdaysa, salt okunur VariableModifiers modifikatorü uygulanabilir. Aşağıdaki örnekte, varsayılan değer atanmış olan salt okunur bir değişken oluşturulur.

// Define a read-only variable with a default value.  
Variable<string> var = new Variable<string>  
{  
    Default = "Hello World.",  
    Modifiers = VariableModifiers.ReadOnly  
};  

Değişken Kapsam Belirleme

Bir değişkenin çalışma zamanındaki ömrü, bunu bildiren etkinliğin ömrüne eşittir. Bir etkinlik tamamlandığında değişkenleri temizlenir ve artık bunlara başvurulamayacaktır.

Tartışmalar

Etkinlik yazarları, verilerin etkinlik içine ve dışına nasıl aktığını tanımlamak için bağımsız değişkenleri kullanır. Her bağımsız değişkenin belirli bir yönü vardır: In, Outveya InOut.

İş akışı çalışma zamanı, etkinliklere ve etkinliklerden dışarı veri taşıma zamanlaması hakkında aşağıdaki garantileri verir:

  1. Bir etkinlik yürütülmeye başladığında, tüm giriş ve giriş/çıkış bağımsız değişkenlerinin değerleri hesaplanır. Örneğin, Get ne zaman çağrılsa da, döndürülen değer, Execute çağrılmadan önce çalışma zamanı tarafından hesaplanan değerdir.

  2. Çağrıldığında Set , çalışma zamanı değeri hemen ayarlar.

  3. Bağımsız değişkenler isteğe bağlı olarak EvaluationOrder ile belirtilebilir. EvaluationOrder bağımsız değişkenin değerlendirilme sırasını belirten sıfır tabanlı bir değerdir. Varsayılan olarak, bağımsız değişkenin değerlendirme sırası belirtilmez ve değere UnspecifiedEvaluationOrder eşittir. EvaluationOrder sıfıra eşit veya daha büyük bir değere ayarlayarak bu bağımsız değişken için bir değerlendirme sırası belirtin. Windows Workflow Foundation, bağımsız değişkenleri belirtilen değerlendirme sırasına göre artan düzende değerlendirir. Belirtilmemiş değerlendirme sırasına sahip bağımsız değişkenlerin, belirtilen değerlendirme sırasına sahip olanlardan önce değerlendirildiğini unutmayın.

Etkinlik yazarı, bağımsız değişkenlerini açıklamak için güçlü tipte bir mekanizma kullanabilir. Bu, InArgument<T>, OutArgument<T> ve InOutArgument<T> türünde özellikler bildirilerek gerçekleştirilir. Bu, etkinlik yazarının bir etkinliğe giren ve çıkan veriler hakkında belirli bir sözleşme oluşturmasına olanak tanır.

Etkinlikte Argümanları Tanımlama

Argümanlar, InArgument<T>, OutArgument<T> ve InOutArgument<T> türünde özellikler belirtilerek bir etkinlikte tanımlanabilir. Aşağıdaki kodda, kullanıcıya görüntülenecek bir dizeyi alan ve kullanıcının yanıtını içeren bir Prompt dize döndüren bir etkinliğin bağımsız değişkenlerinin nasıl tanımlanacağı gösterilmektedir.

public class Prompt : Activity  
{  
    public InArgument<string> Text { get; set; }  
    public OutArgument<string> Response { get; set; }  
    // Rest of activity definition omitted.  
}  

Uyarı

Tek bir değer döndüren etkinlikler Activity<TResult>, NativeActivity<TResult> veya CodeActivity<TResult>'den türetilebilir. Bu etkinlikler, etkinliğin dönüş değerini içeren, iyi tanımlanmış, OutArgument<T> adlı Result bir değere sahiptir.

İş Akışlarında Değişkenleri ve Argümanları Kullanma

Aşağıdaki örnek, değişkenlerin ve bağımsız değişkenlerin bir iş akışında nasıl kullanıldığını gösterir. İş akışı, üç değişken bildiren bir dizidir: var1, var2ve var3. İş akışındaki ilk etkinlik, Assign değişkeninin değerini var1 değişkenine atayan bir var2 etkinliğidir. Bunu, değişkenin değerini WriteLine yazdıran bir var2 etkinlik izler. Sonraki, Assign değişkeninin değerini var2 değişkenine atayan başka bir var3 etkinliğidir. Son olarak değişkenin değerini WriteLine yazdıran başka bir var3 etkinlik vardır. İlk Assign etkinliği, etkinliğin bağımsız değişkenleri için bağlamaları açıkça temsil eden InArgument<string> ve OutArgument<string> nesnelerini kullanır. InArgument<string> kullanılır Value için çünkü değer Assign<T> bağımsız değişkeni aracılığıyla Value aktivitesine akıyor ve OutArgument<string> kullanılır To için çünkü değer To bağımsız değişkeninden değişkene akıyor. İkinci Assign etkinlik, örtük atamaları kullanan daha küçük ama eşdeğer söz dizimiyle aynı şeyi gerçekleştirir. Etkinlikler sıkıştırılmış WriteLine söz dizimini de kullanır.

// Declare three variables; the first one is given an initial value.  
Variable<string> var1 = new Variable<string>()  
{  
    Default = "one"  
};  
Variable<string> var2 = new Variable<string>();  
Variable<string> var3 = new Variable<string>();  
  
// Define the workflow  
Activity wf = new Sequence  
{  
    Variables = { var1, var2, var3 },  
    Activities =
    {  
        new Assign<string>()  
        {  
            Value = new InArgument<string>(var1),  
            To = new OutArgument<string>(var2)  
        },  
        new WriteLine() { Text = var2 },  
        new Assign<string>()  
        {  
            Value = var2,  
            To = var3  
        },  
        new WriteLine() { Text = var3 }  
    }  
};  
  
WorkflowInvoker.Invoke(wf);  

Code-Based Etkinliklerinde Değişkenleri ve Bağımsız Değişkenleri Kullanma

Önceki örneklerde, iş akışlarında ve bildirim temelli etkinliklerde değişkenlerin nasıl kullanılacağı gösterilmektedir. Argümanlar ve değişkenler de kod tabanlı etkinliklerde kullanılır. Kavramsal olarak kullanım çok benzerdir. Değişkenler etkinlik içindeki veri depolama alanını, bağımsız değişkenler ise etkinliğin içine veya dışına veri akışını temsil eder ve iş akışı yazarı tarafından iş akışındaki verilerin nereye veya nereye aktığını gösteren diğer değişkenlere veya bağımsız değişkenlere bağlanır. Bir etkinlikteki değişkenin veya bağımsız değişkenin değerini almak veya ayarlamak için, etkinliğin geçerli yürütme ortamını temsil eden bir etkinlik bağlamı kullanılmalıdır. Bu, iş akışı çalışma zamanı tarafından etkinliğin Execute yöntemine geçirilir. Bu örnekte, iki Add bağımsız değişkeni olan özel In bir etkinlik tanımlanmıştır. Bağımsız değişkenlerin değerine erişmek için Get yöntemi ve iş akışı çalışma zamanı tarafından geçirilen bağlam kullanılır.

public sealed class Add : CodeActivity<int>  
{  
    [RequiredArgument]  
    public InArgument<int> Operand1 { get; set; }  
  
    [RequiredArgument]  
    public InArgument<int> Operand2 { get; set; }  
  
    protected override int Execute(CodeActivityContext context)  
    {  
        return Operand1.Get(context) + Operand2.Get(context);  
    }  
}  

Kodda bağımsız değişkenler, değişkenler ve ifadelerle çalışma hakkında daha fazla bilgi için bkz. Kesinlik Temelli Kod kullanarak İş Akışları, Etkinlikler ve İfadeler Yazma ve Gerekli Bağımsız Değişkenler ve Aşırı Yükleme Grupları.