WorkflowInvoker.Invoke Yöntem

Tanım

Bir iş akışını zaman uyumlu olarak çağırır ve iş akışının çıkışlarını temsil eden bağımsız değişken adına göre anahtarlanan kök etkinliğin OutArgument ve InOutArgument değerlerinin bir sözlüğünü döndürür.

Aşırı Yüklemeler

Invoke(Activity, IDictionary<String,Object>, TimeSpan)

Belirtilen iş akışı tanımını, IDictionary<TKey,TValue> giriş parametrelerini ve zaman aşımı aralığını kullanarak bir iş akışını zaman uyumlu olarak çağırır.

Invoke(Activity, TimeSpan)

Belirtilen iş akışı tanımını ve zaman aşımı aralığını kullanarak bir iş akışını zaman uyumlu olarak çağırır.

Invoke(Activity, IDictionary<String,Object>)

Belirtilen iş akışı tanımını ve IDictionary<TKey,TValue> giriş parametrelerini kullanarak bir iş akışını zaman uyumlu olarak çağırır.

Invoke(IDictionary<String,Object>, TimeSpan)

Oluşturucuya WorkflowInvoker(Activity) geçirilen etkinliği belirtilen giriş parametreleri ve belirtilen IDictionary<TKey,TValue> zaman aşımı aralığıyla zaman uyumlu olarak çağırır.

Invoke(IDictionary<String,Object>)

Oluşturucuya WorkflowInvoker(Activity) geçirilen etkinliği belirtilen IDictionary<TKey,TValue> giriş parametreleriyle zaman uyumlu olarak çağırır.

Invoke(Activity)

Belirtilen iş akışı tanımını kullanarak bir iş akışını zaman uyumlu olarak çağırır.

Invoke()

Oluşturucuya geçirilen WorkflowInvoker(Activity) iş akışı tanımını kullanarak bir iş akışını zaman uyumlu olarak çağırır.

Invoke(TimeSpan)

Bir iş akışını belirtilen zaman aşımı aralığıyla zaman uyumlu olarak çağırır.

Invoke<TResult>(Activity<TResult>)

Oluşturucuya geçirilen WorkflowInvoker(Activity) iş akışı tanımını kullanarak bir iş akışını zaman uyumlu olarak çağırır.

Invoke<TResult>(Activity<TResult>, IDictionary<String,Object>)

Belirtilen iş akışı tanımını ve IDictionary<TKey,TValue> giriş parametrelerini kullanarak bir iş akışını zaman uyumlu olarak çağırır.

Invoke<TResult>(Activity<TResult>, IDictionary<String,Object>, TimeSpan)

Belirtilen iş akışı tanımını, IDictionary<TKey,TValue> giriş parametrelerini ve zaman aşımı aralığını kullanarak bir iş akışını zaman uyumlu olarak çağırır.

Invoke<TResult>(Activity<TResult>, IDictionary<String,Object>, IDictionary<String,Object>, TimeSpan)

Belirtilen iş akışı tanımını, giriş parametrelerini, IDictionary<TKey,TValue> ek çıkış parametrelerini IDictionary<TKey,TValue> ve zaman aşımı aralığını kullanarak bir iş akışını zaman uyumlu olarak çağırır.

Açıklamalar

Bu yöntem, boşta kalma süresi de dahil olmak üzere iş akışı tamamlanana kadar engeller. Tüm iş akışı yürütmesinin çağırma iş parçacığında yürütülmesi garanti edilir. İş akışının tamamlanması gereken bir zaman aşımı aralığı yapılandırmak için, kullanan aşırı yüklemelerden TimeSpanbirini Invoke kullanın.

Invoke(Activity, IDictionary<String,Object>, TimeSpan)

Belirtilen iş akışı tanımını, IDictionary<TKey,TValue> giriş parametrelerini ve zaman aşımı aralığını kullanarak bir iş akışını zaman uyumlu olarak çağırır.

public:
 static System::Collections::Generic::IDictionary<System::String ^, System::Object ^> ^ Invoke(System::Activities::Activity ^ workflow, System::Collections::Generic::IDictionary<System::String ^, System::Object ^> ^ inputs, TimeSpan timeout);
public static System.Collections.Generic.IDictionary<string,object> Invoke (System.Activities.Activity workflow, System.Collections.Generic.IDictionary<string,object> inputs, TimeSpan timeout);
static member Invoke : System.Activities.Activity * System.Collections.Generic.IDictionary<string, obj> * TimeSpan -> System.Collections.Generic.IDictionary<string, obj>
Public Shared Function Invoke (workflow As Activity, inputs As IDictionary(Of String, Object), timeout As TimeSpan) As IDictionary(Of String, Object)

Parametreler

workflow
Activity

Çağrılacak iş akışının iş akışı tanımı.

inputs
IDictionary<String,Object>

Bağımsız değişken adıyla anahtarlanan, iş akışına giriş parametrelerinin sözlüğü.

timeout
TimeSpan

İş akışının durdurulmadan ve bir TimeoutException oluşmadan önce tamamlanması gereken aralık.

Döndürülenler

İş akışının çıkışlarını temsil eden bağımsız değişken adıyla anahtarlanan kök etkinliğin OutArgument ve InOutArgument değerlerinin sözlüğü.

Örnekler

Aşağıdaki örnek, iki WriteLine etkinlik ve bir dakika ile yapılandırılmış bir etkinlik içeren bir DelayDuration iş akışını çağırır. Bu iş akışı iki kez çağrılır; zaman aşımı aralığı iki dakika olan ilk ve 30 saniyelik zaman aşımı aralığıyla ikinci kez. İlk iş akışı başarıyla tamamlanır, ancak ikinci iş akışı tamamlanmaz ve bir TimeoutException oluşturulur.

Activity wf = new Sequence()
{
    Activities =
    {
        new WriteLine()
        {
            Text = "Before the 1 minute delay."
        },
        new Delay()
        {
            Duration = TimeSpan.FromMinutes(1)
        },
        new WriteLine()
        {
            Text = "After the 1 minute delay."
        }
    }
};

// This workflow completes successfully.
WorkflowInvoker.Invoke(wf, TimeSpan.FromMinutes(2));

// This workflow does not complete and a TimeoutException
// is thrown.
try
{
    WorkflowInvoker.Invoke(wf, TimeSpan.FromSeconds(30));
}
catch (TimeoutException ex)
{
    Console.WriteLine(ex.Message);
}

Giriş ve çıkış bağımsız değişkenleriyle kullanma Invoke örneği için, zaman aşımı aralığı olmadan bu aşırı yüklemeyle Invoke aynı parametrelerle öğesinin aşırı yüklemesine bakın.

Açıklamalar

Bu yöntem, boşta kalma süresi de dahil olmak üzere iş akışı tamamlanana kadar engeller. Tüm iş akışı yürütmesinin çağırma iş parçacığında yürütülmesi garanti edilir. İş akışı belirtilen zaman aşımı aralığı içinde tamamlanmazsa iş akışı durdurulup oluşturulur TimeoutException .

Not

TimeoutException yalnızca zaman aşımı aralığı geçtiğinde ve iş akışı yürütme sırasında boşta olduğunda oluşturulur. İş akışı boşta kalmazsa, tamamlanması belirtilen zaman aşımı aralığından daha uzun süren bir iş akışı başarıyla tamamlanır.

Şunlara uygulanır

Invoke(Activity, TimeSpan)

Belirtilen iş akışı tanımını ve zaman aşımı aralığını kullanarak bir iş akışını zaman uyumlu olarak çağırır.

public:
 static System::Collections::Generic::IDictionary<System::String ^, System::Object ^> ^ Invoke(System::Activities::Activity ^ workflow, TimeSpan timeout);
public static System.Collections.Generic.IDictionary<string,object> Invoke (System.Activities.Activity workflow, TimeSpan timeout);
static member Invoke : System.Activities.Activity * TimeSpan -> System.Collections.Generic.IDictionary<string, obj>
Public Shared Function Invoke (workflow As Activity, timeout As TimeSpan) As IDictionary(Of String, Object)

Parametreler

workflow
Activity

Çağrılacak iş akışının iş akışı tanımı.

timeout
TimeSpan

İş akışının durdurulmadan ve bir TimeoutException oluşmadan önce tamamlanması gereken aralık.

Döndürülenler

İş akışının çıkışlarını temsil eden bağımsız değişken adıyla anahtarlanan kök etkinliğin OutArgument ve InOutArgument değerlerinin sözlüğü.

Örnekler

Aşağıdaki örnek, iki WriteLine etkinlik ve bir dakika ile yapılandırılmış bir etkinlik içeren bir DelayDuration iş akışını çağırır. Bu iş akışı iki kez çağrılır; zaman aşımı aralığı iki dakika olan ilk ve 30 saniyelik zaman aşımı aralığıyla ikinci kez. İlk iş akışı başarıyla tamamlanır, ancak ikinci iş akışı tamamlanmaz ve bir TimeoutException oluşturulur.

Activity wf = new Sequence()
{
    Activities =
    {
        new WriteLine()
        {
            Text = "Before the 1 minute delay."
        },
        new Delay()
        {
            Duration = TimeSpan.FromMinutes(1)
        },
        new WriteLine()
        {
            Text = "After the 1 minute delay."
        }
    }
};

// This workflow completes successfully.
WorkflowInvoker.Invoke(wf, TimeSpan.FromMinutes(2));

// This workflow does not complete and a TimeoutException
// is thrown.
try
{
    WorkflowInvoker.Invoke(wf, TimeSpan.FromSeconds(30));
}
catch (TimeoutException ex)
{
    Console.WriteLine(ex.Message);
}

Çıkış bağımsız değişkenleriyle kullanma Invoke örneği için, zaman aşımı aralığı olmadan bu aşırı yüklemeyle Invoke aynı parametrelerle öğesinin aşırı yüklemesine bakın.

Açıklamalar

Bu yöntem, boşta kalma süresi de dahil olmak üzere iş akışı tamamlanana kadar engeller. Tüm iş akışı yürütmesinin çağırma iş parçacığında yürütülmesi garanti edilir. İş akışı belirtilen zaman aşımı aralığı içinde tamamlanmazsa iş akışı durdurulup oluşturulur TimeoutException .

Not

TimeoutException yalnızca zaman aşımı aralığı geçtiğinde ve iş akışı yürütme sırasında boşta olduğunda oluşturulur. İş akışı boşta kalmazsa, tamamlanması belirtilen zaman aşımı aralığından daha uzun süren bir iş akışı başarıyla tamamlanır.

Şunlara uygulanır

Invoke(Activity, IDictionary<String,Object>)

Belirtilen iş akışı tanımını ve IDictionary<TKey,TValue> giriş parametrelerini kullanarak bir iş akışını zaman uyumlu olarak çağırır.

public:
 static System::Collections::Generic::IDictionary<System::String ^, System::Object ^> ^ Invoke(System::Activities::Activity ^ workflow, System::Collections::Generic::IDictionary<System::String ^, System::Object ^> ^ inputs);
public static System.Collections.Generic.IDictionary<string,object> Invoke (System.Activities.Activity workflow, System.Collections.Generic.IDictionary<string,object> inputs);
static member Invoke : System.Activities.Activity * System.Collections.Generic.IDictionary<string, obj> -> System.Collections.Generic.IDictionary<string, obj>
Public Shared Function Invoke (workflow As Activity, inputs As IDictionary(Of String, Object)) As IDictionary(Of String, Object)

Parametreler

workflow
Activity

Çağrılacak iş akışının iş akışı tanımı.

inputs
IDictionary<String,Object>

Bağımsız değişken adıyla anahtarlanan, iş akışına giriş parametrelerinin sözlüğü.

Döndürülenler

İş akışının çıkışlarını temsil eden bağımsız değişken adıyla anahtarlanan kök etkinliğin OutArgument ve InOutArgument değerlerinin sözlüğü.

Örnekler

Aşağıdaki örnekte, iki giriş bağımsız değişkeni ve iki çıkış bağımsız değişkeni olan tek Divide bir etkinlik içeren bir iş akışı çağrılır. İş akışı çağrıldığında, her giriş bağımsız değişkeninin arguments değerlerini içeren ve bağımsız değişken adına göre anahtarlanan sözlük geçirilir. çağrısı Invoke döndürdüğünde, her çıkış bağımsız değişkeni sözlükte outputs döndürülür ve bağımsız değişken adıyla da anahtarlanır.

public sealed class Divide : CodeActivity
{
    [RequiredArgument]
    public InArgument<int> Dividend { get; set; }

    [RequiredArgument]
    public InArgument<int> Divisor { get; set; }

    public OutArgument<int> Remainder { get; set; }
    public OutArgument<int> Result { get; set; }

    protected override void Execute(CodeActivityContext context)
    {
        int quotient = Dividend.Get(context) / Divisor.Get(context);
        int remainder = Dividend.Get(context) % Divisor.Get(context);

        Result.Set(context, quotient);
        Remainder.Set(context, remainder);
    }
}
int dividend = 500;
int divisor = 36;

Dictionary<string, object> arguments = new Dictionary<string, object>();
arguments.Add("Dividend", dividend);
arguments.Add("Divisor", divisor);

IDictionary<string, object> outputs =
    WorkflowInvoker.Invoke(new Divide(), arguments);

Console.WriteLine("{0} / {1} = {2} Remainder {3}",
    dividend, divisor, outputs["Result"], outputs["Remainder"]);

İş akışı veya gibi öğesinden ActivityWithResulttüretiliyorsa ve iyi tanımlanmış Result çıkış bağımsız değişkenine ek olarak çıkış bağımsız değişkenleri varsa, ek bağımsız değişkenleri almak için bunun gibi genel olmayan bir aşırı yükleme InvokeCodeActivity<TResult> kullanılmalıdır.Activity<TResult> Bunu yapmak için içine geçirilen Invoke iş akışı tanımının türünde Activityolması gerekir. Bu örnekte Divide etkinlik , 'den CodeActivity<int>türetilir, ancak tek bir dönüş değeri yerine bağımsız değişkenlerin sözlüğünü döndüren bu aşırı yüklemesinin Invokekullanılması için olarak Activity bildirilir.

public sealed class Divide : CodeActivity<int>
{
    public InArgument<int> Dividend { get; set; }
    public InArgument<int> Divisor { get; set; }
    public OutArgument<int> Remainder { get; set; }

    protected override int Execute(CodeActivityContext context)
    {
        int quotient = Dividend.Get(context) / Divisor.Get(context);
        int remainder = Dividend.Get(context) % Divisor.Get(context);

        Remainder.Set(context, remainder);

        return quotient;
    }
}
int dividend = 500;
int divisor = 36;

Dictionary<string, object> arguments = new Dictionary<string, object>();
arguments.Add("Dividend", dividend);
arguments.Add("Divisor", divisor);

Activity wf = new Divide();

IDictionary<string, object> outputs =
    WorkflowInvoker.Invoke(wf, arguments);

Console.WriteLine("{0} / {1} = {2} Remainder {3}",
    dividend, divisor, outputs["Result"], outputs["Remainder"]);

Açıklamalar

Bu yöntem, boşta kalma süresi de dahil olmak üzere iş akışı tamamlanana kadar engeller. Tüm iş akışı yürütmesinin çağırma iş parçacığında yürütülmesi garanti edilir. İş akışının tamamlanması gereken bir zaman aşımı aralığı yapılandırmak için, kullanan aşırı yüklemelerden TimeSpanbirini Invoke kullanın.

Şunlara uygulanır

Invoke(IDictionary<String,Object>, TimeSpan)

Oluşturucuya WorkflowInvoker(Activity) geçirilen etkinliği belirtilen giriş parametreleri ve belirtilen IDictionary<TKey,TValue> zaman aşımı aralığıyla zaman uyumlu olarak çağırır.

public:
 System::Collections::Generic::IDictionary<System::String ^, System::Object ^> ^ Invoke(System::Collections::Generic::IDictionary<System::String ^, System::Object ^> ^ inputs, TimeSpan timeout);
public System.Collections.Generic.IDictionary<string,object> Invoke (System.Collections.Generic.IDictionary<string,object> inputs, TimeSpan timeout);
member this.Invoke : System.Collections.Generic.IDictionary<string, obj> * TimeSpan -> System.Collections.Generic.IDictionary<string, obj>
Public Function Invoke (inputs As IDictionary(Of String, Object), timeout As TimeSpan) As IDictionary(Of String, Object)

Parametreler

inputs
IDictionary<String,Object>

Bağımsız değişken adıyla anahtarlanan, iş akışına giriş parametrelerinin sözlüğü.

timeout
TimeSpan

İş akışının durdurulmadan ve bir TimeoutException oluşmadan önce tamamlanması gereken aralık.

Döndürülenler

İş akışının çıkışlarını temsil eden bağımsız değişken adıyla anahtarlanan kök etkinliğin OutArgument ve InOutArgument değerlerinin sözlüğü.

Örnekler

Aşağıdaki örnek, iki WriteLine etkinlik ve bir dakika ile yapılandırılmış bir etkinlik içeren bir DelayDuration iş akışını çağırır. Bu iş akışı iki kez çağrılır; zaman aşımı aralığı iki dakika olan ilk ve 30 saniyelik zaman aşımı aralığıyla ikinci kez. İlk iş akışı başarıyla tamamlanır, ancak ikinci iş akışı tamamlanmaz ve oluşturulur TimeoutException ve aşağıdaki ileti görüntülenir.

The operation did not complete within the allotted timeout of 00:00:30.   
The time allotted to this operation may have been a portion of a longer timeout.  
Activity wf = new Sequence()
{
    Activities =
    {
        new WriteLine()
        {
            Text = "Before the 1 minute delay."
        },
        new Delay()
        {
            Duration = TimeSpan.FromMinutes(1)
        },
        new WriteLine()
        {
            Text = "After the 1 minute delay."
        }
    }
};

WorkflowInvoker invoker = new WorkflowInvoker(wf);

// This workflow completes successfully.
invoker.Invoke(TimeSpan.FromMinutes(2));

// This workflow does not complete and a TimeoutException
// is thrown.
try
{
    invoker.Invoke(TimeSpan.FromSeconds(30));
}
catch (TimeoutException ex)
{
    Console.WriteLine(ex.Message);
}

Giriş ve çıkış bağımsız değişkenleriyle kullanma Invoke örneği için, zaman aşımı aralığı olmadan bu aşırı yüklemeyle Invoke aynı parametrelerle öğesinin aşırı yüklemesine bakın.

Açıklamalar

Bu yöntem, boşta kalma süresi de dahil olmak üzere iş akışı tamamlanana kadar engeller. Tüm iş akışı yürütmesinin çağırma iş parçacığında yürütülmesi garanti edilir. İş akışı belirtilen zaman aşımı aralığı içinde tamamlanmazsa iş akışı durdurulup oluşturulur TimeoutException .

Not

TimeoutException yalnızca zaman aşımı aralığı geçtiğinde ve iş akışı yürütme sırasında boşta olduğunda oluşturulur. İş akışı boşta kalmazsa, tamamlanması belirtilen zaman aşımı aralığından daha uzun süren bir iş akışı başarıyla tamamlanır.

Şunlara uygulanır

Invoke(IDictionary<String,Object>)

Oluşturucuya WorkflowInvoker(Activity) geçirilen etkinliği belirtilen IDictionary<TKey,TValue> giriş parametreleriyle zaman uyumlu olarak çağırır.

public:
 System::Collections::Generic::IDictionary<System::String ^, System::Object ^> ^ Invoke(System::Collections::Generic::IDictionary<System::String ^, System::Object ^> ^ inputs);
public System.Collections.Generic.IDictionary<string,object> Invoke (System.Collections.Generic.IDictionary<string,object> inputs);
member this.Invoke : System.Collections.Generic.IDictionary<string, obj> -> System.Collections.Generic.IDictionary<string, obj>
Public Function Invoke (inputs As IDictionary(Of String, Object)) As IDictionary(Of String, Object)

Parametreler

inputs
IDictionary<String,Object>

Bağımsız değişken adıyla anahtarlanan, iş akışına giriş parametrelerinin sözlüğü.

Döndürülenler

İş akışının çıkışlarını temsil eden bağımsız değişken adıyla anahtarlanan kök etkinliğin OutArgument ve InOutArgument değerlerinin sözlüğü.

Örnekler

Aşağıdaki örnekte, iki giriş bağımsız değişkeni ve iki çıkış bağımsız değişkeni olan tek Divide bir etkinlik içeren bir iş akışı çağrılır. İş akışı çağrıldığında, her giriş bağımsız değişkeninin arguments değerlerini içeren ve bağımsız değişken adına göre anahtarlanan sözlük geçirilir. çağrısı Invoke döndürdüğünde, her çıkış bağımsız değişkeni sözlükte outputs döndürülür ve bağımsız değişken adıyla da anahtarlanır.

public sealed class Divide : CodeActivity
{
    [RequiredArgument]
    public InArgument<int> Dividend { get; set; }

    [RequiredArgument]
    public InArgument<int> Divisor { get; set; }

    public OutArgument<int> Remainder { get; set; }
    public OutArgument<int> Result { get; set; }

    protected override void Execute(CodeActivityContext context)
    {
        int quotient = Dividend.Get(context) / Divisor.Get(context);
        int remainder = Dividend.Get(context) % Divisor.Get(context);

        Result.Set(context, quotient);
        Remainder.Set(context, remainder);
    }
}
int dividend = 500;
int divisor = 36;

Dictionary<string, object> arguments = new Dictionary<string, object>();
arguments.Add("Dividend", dividend);
arguments.Add("Divisor", divisor);

WorkflowInvoker invoker = new WorkflowInvoker(new Divide());

IDictionary<string, object> outputs = invoker.Invoke(arguments);

Console.WriteLine("{0} / {1} = {2} Remainder {3}",
    dividend, divisor, outputs["Result"], outputs["Remainder"]);

İş akışı veya gibi öğesinden ActivityWithResulttüretiliyorsa ve iyi tanımlanmış Result çıkış bağımsız değişkenine ek olarak çıkış bağımsız değişkenleri varsa, ek bağımsız değişkenleri almak için bunun gibi genel olmayan bir aşırı yükleme InvokeCodeActivity<TResult> kullanılmalıdır.Activity<TResult> Bunu yapmak için oluşturucuya WorkflowInvoker geçirilen iş akışı tanımı türünde Activityolmalıdır. Bu örnekte Divide etkinlik , 'den CodeActivity<int>türetilir, ancak tek bir dönüş değeri yerine bağımsız değişkenlerin sözlüğünü döndüren bu aşırı yüklemesinin Invokekullanılması için olarak Activity bildirilir.

public sealed class Divide : CodeActivity<int>
{
    public InArgument<int> Dividend { get; set; }
    public InArgument<int> Divisor { get; set; }
    public OutArgument<int> Remainder { get; set; }

    protected override int Execute(CodeActivityContext context)
    {
        int quotient = Dividend.Get(context) / Divisor.Get(context);
        int remainder = Dividend.Get(context) % Divisor.Get(context);

        Remainder.Set(context, remainder);

        return quotient;
    }
}
int dividend = 500;
int divisor = 36;

Dictionary<string, object> arguments = new Dictionary<string, object>();
arguments.Add("Dividend", dividend);
arguments.Add("Divisor", divisor);

Activity wf = new Divide();

WorkflowInvoker invoker = new WorkflowInvoker(wf);

IDictionary<string, object> outputs = invoker.Invoke(arguments);

Console.WriteLine("{0} / {1} = {2} Remainder {3}",
    dividend, divisor, outputs["Result"], outputs["Remainder"]);

Açıklamalar

Bu yöntem, boşta kalma süresi de dahil olmak üzere iş akışı tamamlanana kadar engeller. Tüm iş akışı yürütmesinin çağırma iş parçacığında yürütülmesi garanti edilir. İş akışının tamamlanması gereken bir zaman aşımı aralığı yapılandırmak için, kullanan aşırı yüklemelerden TimeSpanbirini Invoke kullanın.

Şunlara uygulanır

Invoke(Activity)

Belirtilen iş akışı tanımını kullanarak bir iş akışını zaman uyumlu olarak çağırır.

public:
 static System::Collections::Generic::IDictionary<System::String ^, System::Object ^> ^ Invoke(System::Activities::Activity ^ workflow);
public static System.Collections.Generic.IDictionary<string,object> Invoke (System.Activities.Activity workflow);
static member Invoke : System.Activities.Activity -> System.Collections.Generic.IDictionary<string, obj>
Public Shared Function Invoke (workflow As Activity) As IDictionary(Of String, Object)

Parametreler

workflow
Activity

Çağrılacak iş akışının iş akışı tanımı.

Döndürülenler

İş akışının çıkışlarını temsil eden bağımsız değişken adıyla anahtarlanan kök etkinliğin OutArgument ve InOutArgument değerlerinin sözlüğü.

Örnekler

Aşağıdaki örnek, tek DiceRoll bir etkinlik içeren bir iş akışını çağırır. Etkinlikte DiceRoll zar atma işleminin sonuçlarını temsil eden iki çıkış bağımsız değişkeni vardır. çağrısı Invoke döndürdüğünde, her çıkış bağımsız değişkeni, bağımsız değişken adıyla anahtarlanan çıkış sözlüğünde döndürülür.

public sealed class DiceRoll : CodeActivity
{
    public OutArgument<int> D1 { get; set; }
    public OutArgument<int> D2 { get; set; }

    static Random r = new Random();

    protected override void Execute(CodeActivityContext context)
    {
        D1.Set(context, r.Next(1, 7));
        D2.Set(context, r.Next(1, 7));
    }
}
IDictionary<string, object> outputs =
    WorkflowInvoker.Invoke(new DiceRoll());

Console.WriteLine("The two dice are {0} and {1}.",
    outputs["D1"], outputs["D2"]);

İş akışının kök etkinliğinde çıkış bağımsız değişkeni yoksa veya konak tarafından gerekli değilse, bunlar göz ardı edilebilir. Aşağıdaki örnek, herhangi bir çıkış bağımsız değişkeni olmayan tek WriteLine bir etkinlik içeren bir iş akışını çağırır.

Activity wf = new WriteLine
{
    Text = "Hello World."
};

WorkflowInvoker.Invoke(wf);

Açıklamalar

Bu yöntem, boşta kalma süresi de dahil olmak üzere iş akışı tamamlanana kadar engeller. Tüm iş akışı yürütmesinin çağırma iş parçacığında yürütülmesi garanti edilir. İş akışının tamamlanması gereken bir zaman aşımı aralığı yapılandırmak için, kullanan aşırı yüklemelerden TimeSpanbirini Invoke kullanın.

Şunlara uygulanır

Invoke()

Oluşturucuya geçirilen WorkflowInvoker(Activity) iş akışı tanımını kullanarak bir iş akışını zaman uyumlu olarak çağırır.

public:
 System::Collections::Generic::IDictionary<System::String ^, System::Object ^> ^ Invoke();
public System.Collections.Generic.IDictionary<string,object> Invoke ();
member this.Invoke : unit -> System.Collections.Generic.IDictionary<string, obj>
Public Function Invoke () As IDictionary(Of String, Object)

Döndürülenler

İş akışının çıkışlarını temsil eden bağımsız değişken adıyla anahtarlanan kök etkinliğin OutArgument ve InOutArgument değerlerinin sözlüğü.

Örnekler

Aşağıdaki örnek, tek DiceRoll bir etkinlik içeren bir iş akışını çağırır. Etkinlikte DiceRoll zar atma işleminin sonuçlarını temsil eden iki çıkış bağımsız değişkeni vardır. çağrısı Invoke döndürdüğünde, her çıkış bağımsız değişkeni, bağımsız değişken adıyla anahtarlanan çıkış sözlüğünde döndürülür. oluşturucuya WorkflowInvoker geçirilen iş akışı tanımı kullanılarak iş akışı iki kez çağrılır.

public sealed class DiceRoll : CodeActivity
{
    public OutArgument<int> D1 { get; set; }
    public OutArgument<int> D2 { get; set; }

    static Random r = new Random();

    protected override void Execute(CodeActivityContext context)
    {
        D1.Set(context, r.Next(1, 7));
        D2.Set(context, r.Next(1, 7));
    }
}
WorkflowInvoker invoker = new WorkflowInvoker(new DiceRoll());

IDictionary<string, object> outputs =
    invoker.Invoke();

Console.WriteLine("The two dice are {0} and {1}.",
    outputs["D1"], outputs["D2"]);

outputs = invoker.Invoke();

Console.WriteLine("The next two dice are {0} and {1}.",
    outputs["D1"], outputs["D2"]);

İş akışının kök etkinliğinde çıkış bağımsız değişkeni yoksa veya konak tarafından gerekli değilse, bunlar göz ardı edilebilir. Aşağıdaki örnek, herhangi bir çıkış bağımsız değişkeni olmayan tek WriteLine bir etkinlik içeren bir iş akışını çağırır.

Activity wf = new WriteLine
{
    Text = "Hello World."
};

WorkflowInvoker invoker = new WorkflowInvoker(wf);

invoker.Invoke();

Açıklamalar

Bu yöntem, boşta kalma süresi de dahil olmak üzere iş akışı tamamlanana kadar engeller. Tüm iş akışı yürütmesinin çağırma iş parçacığında yürütülmesi garanti edilir. İş akışının tamamlanması gereken bir zaman aşımı aralığı yapılandırmak için, kullanan aşırı yüklemelerden TimeSpanbirini Invoke kullanın.

Şunlara uygulanır

Invoke(TimeSpan)

Bir iş akışını belirtilen zaman aşımı aralığıyla zaman uyumlu olarak çağırır.

public:
 System::Collections::Generic::IDictionary<System::String ^, System::Object ^> ^ Invoke(TimeSpan timeout);
public System.Collections.Generic.IDictionary<string,object> Invoke (TimeSpan timeout);
member this.Invoke : TimeSpan -> System.Collections.Generic.IDictionary<string, obj>
Public Function Invoke (timeout As TimeSpan) As IDictionary(Of String, Object)

Parametreler

timeout
TimeSpan

İş akışının durdurulmadan ve bir TimeoutException oluşmadan önce tamamlanması gereken aralık.

Döndürülenler

İş akışının çıkışlarını temsil eden bağımsız değişken adıyla anahtarlanan kök etkinliğin OutArgument ve InOutArgument değerlerinin sözlüğü.

Örnekler

Aşağıdaki örnek, iki WriteLine etkinlik ve bir dakika ile yapılandırılmış bir etkinlik içeren bir DelayDuration iş akışını çağırır. Bu iş akışı iki kez çağrılır; zaman aşımı aralığı iki dakika olan ilk ve 30 saniyelik zaman aşımı aralığıyla ikinci kez. İlk iş akışı başarıyla tamamlanır, ancak ikinci iş akışı tamamlanmaz ve oluşturulur TimeoutException ve aşağıdaki ileti görüntülenir.

The operation did not complete within the allotted timeout of 00:00:30.   
The time allotted to this operation may have been a portion of a longer timeout.  
Activity wf = new Sequence()
{
    Activities =
    {
        new WriteLine()
        {
            Text = "Before the 1 minute delay."
        },
        new Delay()
        {
            Duration = TimeSpan.FromMinutes(1)
        },
        new WriteLine()
        {
            Text = "After the 1 minute delay."
        }
    }
};

WorkflowInvoker invoker = new WorkflowInvoker(wf);

// This workflow completes successfully.
invoker.Invoke(TimeSpan.FromMinutes(2));

// This workflow does not complete and a TimeoutException
// is thrown.
try
{
    invoker.Invoke(TimeSpan.FromSeconds(30));
}
catch (TimeoutException ex)
{
    Console.WriteLine(ex.Message);
}

Çıkış bağımsız değişkenleriyle kullanma Invoke örneği için, zaman aşımı aralığı olmadan bu aşırı yüklemeyle Invoke aynı parametrelerle öğesinin aşırı yüklemesine bakın.

Açıklamalar

Bu yöntem, boşta kalma süresi de dahil olmak üzere iş akışı tamamlanana kadar engeller. Tüm iş akışı yürütmesinin çağırma iş parçacığında yürütülmesi garanti edilir. İş akışı belirtilen zaman aşımı aralığı içinde tamamlanmazsa iş akışı durdurulup oluşturulur TimeoutException .

Not

TimeoutException yalnızca zaman aşımı aralığı geçtiğinde ve iş akışı yürütme sırasında boşta olduğunda oluşturulur. İş akışı boşta kalmazsa, tamamlanması belirtilen zaman aşımı aralığından daha uzun süren bir iş akışı başarıyla tamamlanır.

Şunlara uygulanır

Invoke<TResult>(Activity<TResult>)

Oluşturucuya geçirilen WorkflowInvoker(Activity) iş akışı tanımını kullanarak bir iş akışını zaman uyumlu olarak çağırır.

public:
generic <typename TResult>
 static TResult Invoke(System::Activities::Activity<TResult> ^ workflow);
public static TResult Invoke<TResult> (System.Activities.Activity<TResult> workflow);
static member Invoke : System.Activities.Activity<'Result> -> 'Result
Public Shared Function Invoke(Of TResult) (workflow As Activity(Of TResult)) As TResult

Tür Parametreleri

TResult

İş akışının türü.

Parametreler

workflow
Activity<TResult>

Çağrılacak iş akışının iş akışı tanımı. İş akışı tanımının öğesinden ActivityWithResulttüretilmesi gerekir.

Döndürülenler

TResult

Etkinliğin yürütülmesinin sonucuyla TResult türünde bir değer.

Örnekler

Aşağıdaki örnek, iki giriş bağımsız değişkeni olan tek Add bir etkinlikten oluşan bir iş akışını çağırır ve bundan türetilirken CodeActivity<int> iyi tanımlanmış Result bir çıkış bağımsız değişkeni vardır. İş akışı çağrıldığında, her giriş bağımsız değişkeninin arguments değerlerini içeren ve bağımsız değişken adına göre anahtarlanan sözlük geçirilir. çağrısı Invoke döndürdüğünde, çıkış bağımsız değişkeninin Result değeri döndürülür.

public sealed class Add : CodeActivity<int>
{
    public InArgument<int> X { get; set; }
    public InArgument<int> Y { get; set; }

    protected override int Execute(CodeActivityContext context)
    {
        int x = X.Get(context);
        int y = Y.Get(context);

        return x + y;
    }
}
int x = 1;
int y = 2;

Dictionary<string, object> arguments = new Dictionary<string, object>();
arguments.Add("X", x);
arguments.Add("Y", y);

Console.WriteLine("Invoking Add.");

int result = WorkflowInvoker.Invoke(new Add(), arguments);

Console.WriteLine("{0} + {1} = {2}", x, y, result);

Açıklamalar

Bu yöntem, boşta kalma süresi de dahil olmak üzere iş akışı tamamlanana kadar engeller. Tüm iş akışı yürütmesinin çağırma iş parçacığında yürütülmesi garanti edilir. İş akışının tamamlanması gereken bir zaman aşımı aralığı yapılandırmak için, kullanan aşırı yüklemelerden TimeSpanbirini Invoke kullanın.

Şunlara uygulanır

Invoke<TResult>(Activity<TResult>, IDictionary<String,Object>)

Belirtilen iş akışı tanımını ve IDictionary<TKey,TValue> giriş parametrelerini kullanarak bir iş akışını zaman uyumlu olarak çağırır.

public:
generic <typename TResult>
 static TResult Invoke(System::Activities::Activity<TResult> ^ workflow, System::Collections::Generic::IDictionary<System::String ^, System::Object ^> ^ inputs);
public static TResult Invoke<TResult> (System.Activities.Activity<TResult> workflow, System.Collections.Generic.IDictionary<string,object> inputs);
static member Invoke : System.Activities.Activity<'Result> * System.Collections.Generic.IDictionary<string, obj> -> 'Result
Public Shared Function Invoke(Of TResult) (workflow As Activity(Of TResult), inputs As IDictionary(Of String, Object)) As TResult

Tür Parametreleri

TResult

İş akışının türü.

Parametreler

workflow
Activity<TResult>

Çağrılacak iş akışının iş akışı tanımı.

inputs
IDictionary<String,Object>

Bağımsız değişken adıyla anahtarlanan, iş akışına giriş parametrelerinin sözlüğü.

Döndürülenler

TResult

Etkinliğin yürütülmesinin sonucuyla TResult türünde bir değer.

Örnekler

Aşağıdaki örnek, iki giriş bağımsız değişkeni olan tek Add bir etkinlikten oluşan bir iş akışını çağırır ve bundan türetilirken CodeActivity<int> iyi tanımlanmış Result bir çıkış bağımsız değişkeni vardır. İş akışı çağrıldığında, her giriş bağımsız değişkeninin arguments değerlerini içeren ve bağımsız değişken adına göre anahtarlanan sözlük geçirilir. çağrısı Invoke döndürdüğünde, çıkış bağımsız değişkeninin Result değeri döndürülür.

public sealed class Add : CodeActivity<int>
{
    public InArgument<int> X { get; set; }
    public InArgument<int> Y { get; set; }

    protected override int Execute(CodeActivityContext context)
    {
        int x = X.Get(context);
        int y = Y.Get(context);

        return x + y;
    }
}
int x = 1;
int y = 2;

Dictionary<string, object> arguments = new Dictionary<string, object>();
arguments.Add("X", x);
arguments.Add("Y", y);

Console.WriteLine("Invoking Add.");

int result = WorkflowInvoker.Invoke(new Add(), arguments);

Console.WriteLine("{0} + {1} = {2}", x, y, result);

Açıklamalar

Bu yöntem, boşta kalma süresi de dahil olmak üzere iş akışı tamamlanana kadar engeller. Tüm iş akışı yürütmesinin çağırma iş parçacığında yürütülmesi garanti edilir. İş akışının tamamlanması gereken bir zaman aşımı aralığı yapılandırmak için, kullanan aşırı yüklemelerden TimeSpanbirini Invoke kullanın.

Not

TimeoutException yalnızca zaman aşımı aralığı geçtiğinde ve iş akışı yürütme sırasında boşta olduğunda oluşturulur. Tamamlanması belirtilen zaman aşımı aralığından daha uzun süren bir iş akışı, iş akışı boşta kalmazsa başarıyla tamamlanır.

Şunlara uygulanır

Invoke<TResult>(Activity<TResult>, IDictionary<String,Object>, TimeSpan)

Belirtilen iş akışı tanımını, IDictionary<TKey,TValue> giriş parametrelerini ve zaman aşımı aralığını kullanarak bir iş akışını zaman uyumlu olarak çağırır.

public:
generic <typename TResult>
 static TResult Invoke(System::Activities::Activity<TResult> ^ workflow, System::Collections::Generic::IDictionary<System::String ^, System::Object ^> ^ inputs, TimeSpan timeout);
public static TResult Invoke<TResult> (System.Activities.Activity<TResult> workflow, System.Collections.Generic.IDictionary<string,object> inputs, TimeSpan timeout);
static member Invoke : System.Activities.Activity<'Result> * System.Collections.Generic.IDictionary<string, obj> * TimeSpan -> 'Result
Public Shared Function Invoke(Of TResult) (workflow As Activity(Of TResult), inputs As IDictionary(Of String, Object), timeout As TimeSpan) As TResult

Tür Parametreleri

TResult

İş akışının türü.

Parametreler

workflow
Activity<TResult>

Çağrılacak iş akışının iş akışı tanımı.

inputs
IDictionary<String,Object>

Bağımsız değişken adıyla anahtarlanan, iş akışına giriş parametrelerinin sözlüğü.

timeout
TimeSpan

İş akışının durdurulmadan ve bir TimeoutException oluşmadan önce tamamlanması gereken aralık.

Döndürülenler

TResult

Etkinliğin yürütülmesinin sonucuyla TResult türünde bir değer.

Örnekler

Aşağıdaki örnek, iki giriş bağımsız değişkeni olan tek Add bir etkinlikten oluşan bir iş akışını çağırır ve bundan türetilirken CodeActivity<int> iyi tanımlanmış Result bir çıkış bağımsız değişkeni vardır. İş akışı çağrıldığında, her giriş bağımsız değişkeninin arguments değerlerini içeren ve bağımsız değişken adına göre anahtarlanan sözlük geçirilir. çağrısı Invoke döndürdüğünde, çıkış bağımsız değişkeninin Result değeri döndürülür.

public sealed class Add : CodeActivity<int>
{
    public InArgument<int> X { get; set; }
    public InArgument<int> Y { get; set; }

    protected override int Execute(CodeActivityContext context)
    {
        int x = X.Get(context);
        int y = Y.Get(context);

        return x + y;
    }
}
int x = 1;
int y = 2;

Dictionary<string, object> arguments = new Dictionary<string, object>();
arguments.Add("X", x);
arguments.Add("Y", y);

Console.WriteLine("Invoking Add.");

int result = WorkflowInvoker.Invoke(new Add(), arguments);

Console.WriteLine("{0} + {1} = {2}", x, y, result);

Açıklamalar

Bu yöntem, boşta kalma süresi de dahil olmak üzere iş akışı tamamlanana kadar engeller. Tüm iş akışı yürütmesinin çağırma iş parçacığında yürütülmesi garanti edilir. İş akışı belirtilen zaman aşımı aralığı içinde tamamlanmazsa iş akışı durdurulup oluşturulur TimeoutException .

Not

TimeoutException yalnızca zaman aşımı aralığı geçtiğinde ve iş akışı yürütme sırasında boşta olduğunda oluşturulur. Tamamlanması belirtilen zaman aşımı aralığından daha uzun süren bir iş akışı, iş akışı boşta kalmazsa başarıyla tamamlanır.

Şunlara uygulanır

Invoke<TResult>(Activity<TResult>, IDictionary<String,Object>, IDictionary<String,Object>, TimeSpan)

Belirtilen iş akışı tanımını, giriş parametrelerini, IDictionary<TKey,TValue> ek çıkış parametrelerini IDictionary<TKey,TValue> ve zaman aşımı aralığını kullanarak bir iş akışını zaman uyumlu olarak çağırır.

public:
generic <typename TResult>
 static TResult Invoke(System::Activities::Activity<TResult> ^ workflow, System::Collections::Generic::IDictionary<System::String ^, System::Object ^> ^ inputs, [Runtime::InteropServices::Out] System::Collections::Generic::IDictionary<System::String ^, System::Object ^> ^ % additionalOutputs, TimeSpan timeout);
public static TResult Invoke<TResult> (System.Activities.Activity<TResult> workflow, System.Collections.Generic.IDictionary<string,object> inputs, out System.Collections.Generic.IDictionary<string,object> additionalOutputs, TimeSpan timeout);
static member Invoke : System.Activities.Activity<'Result> * System.Collections.Generic.IDictionary<string, obj> * IDictionary * TimeSpan -> 'Result
Public Shared Function Invoke(Of TResult) (workflow As Activity(Of TResult), inputs As IDictionary(Of String, Object), ByRef additionalOutputs As IDictionary(Of String, Object), timeout As TimeSpan) As TResult

Tür Parametreleri

TResult

İş akışının türü.

Parametreler

workflow
Activity<TResult>

Çağrılacak iş akışının iş akışı tanımı.

inputs
IDictionary<String,Object>

Bağımsız değişken adıyla anahtarlanan, iş akışına giriş parametrelerinin sözlüğü.

additionalOutputs
IDictionary<String,Object>

İş akışının bağımsız değişken adıyla anahtarlanan ek çıkış parametrelerinin sözlüğü.

timeout
TimeSpan

İş akışının durdurulmadan ve bir TimeoutException oluşmadan önce tamamlanması gereken aralık.

Döndürülenler

TResult

Etkinliğin yürütülmesinin sonucuyla TResult türünde bir değer.

Örnekler

Aşağıdaki örnek, iki giriş bağımsız değişkeni olan tek Add bir etkinlikten oluşan bir iş akışını çağırır ve bundan türetilirken CodeActivity<int> iyi tanımlanmış Result bir çıkış bağımsız değişkeni vardır. İş akışı çağrıldığında, her giriş bağımsız değişkeninin arguments değerlerini içeren ve bağımsız değişken adına göre anahtarlanan sözlük geçirilir. çağrısı Invoke döndürdüğünde, çıkış bağımsız değişkeninin Result değeri döndürülür.

public sealed class Add : CodeActivity<int>
{
    public InArgument<int> X { get; set; }
    public InArgument<int> Y { get; set; }

    protected override int Execute(CodeActivityContext context)
    {
        int x = X.Get(context);
        int y = Y.Get(context);

        return x + y;
    }
}
int x = 1;
int y = 2;

Dictionary<string, object> arguments = new Dictionary<string, object>();
arguments.Add("X", x);
arguments.Add("Y", y);

Console.WriteLine("Invoking Add.");

int result = WorkflowInvoker.Invoke(new Add(), arguments);

Console.WriteLine("{0} + {1} = {2}", x, y, result);

Açıklamalar

Bu yöntem, boşta kalma süresi de dahil olmak üzere iş akışı tamamlanana kadar engeller. Tüm iş akışı yürütmesinin çağırma iş parçacığında yürütülmesi garanti edilir. İş akışı belirtilen zaman aşımı aralığı içinde tamamlanmazsa iş akışı durdurulup oluşturulur TimeoutException .

Not

TimeoutException yalnızca zaman aşımı aralığı geçtiğinde ve iş akışı yürütme sırasında boşta olduğunda oluşturulur. Tamamlanması belirtilen zaman aşımı aralığından daha uzun süren bir iş akışı, iş akışı boşta kalmazsa başarıyla tamamlanır.

Şunlara uygulanır