Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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:
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.Çağrıldığında Set , çalışma zamanı değeri hemen ayarlar.
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
, var2
ve 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ı.