WorkflowInvoker.Invoke Método

Definição

Invoca um fluxo de trabalho de forma síncrona e retorna um dicionário de OutArgument da atividade raiz e valores de InOutArgument inseridos por nome de argumento que representam as saídas do fluxo de trabalho.Invokes a workflow synchronously and returns a dictionary of the root activity's OutArgument and InOutArgument values keyed by argument name that represent the outputs of the workflow.

Sobrecargas

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

Invoca um fluxo de trabalho de forma síncrona usando a definição de fluxo de trabalho, o IDictionary<TKey,TValue> de parâmetros de entrada e o intervalo de tempo limite especificados.Invokes a workflow synchronously using the specified workflow definition, IDictionary<TKey,TValue> of input parameters, and time-out interval.

Invoke(Activity, TimeSpan)

Invoca um fluxo de trabalho de forma síncrona usando a definição de fluxo de trabalho e o intervalo de tempo limite especificados.Invokes a workflow synchronously using the specified workflow definition and time-out interval.

Invoke(Activity, IDictionary<String,Object>)

Invoca um fluxo de trabalho de forma síncrona usando a definição de fluxo de trabalho especificada e IDictionary<TKey,TValue> de parâmetros de entrada.Invokes a workflow synchronously using the specified workflow definition and IDictionary<TKey,TValue> of input parameters.

Invoke(IDictionary<String,Object>, TimeSpan)

Invoca a atividade passada para o construtor de WorkflowInvoker(Activity) de forma síncrona com os parâmetros de entrada de IDictionary<TKey,TValue> especificados e o intervalo de tempo limite especificado.Invokes the activity passed to the WorkflowInvoker(Activity) constructor synchronously with the specified IDictionary<TKey,TValue> of input parameters and the specified time-out interval.

Invoke(IDictionary<String,Object>)

Invoca a atividade passada para o construtor WorkflowInvoker(Activity) de forma síncrona com o IDictionary<TKey,TValue> especificado dos parâmetros de entrada.Invokes the activity passed to the WorkflowInvoker(Activity) constructor synchronously with the specified IDictionary<TKey,TValue> of input parameters.

Invoke(Activity)

Invoca um fluxo de trabalho usando a definição de fluxo de trabalho especificada.Invokes a workflow synchronously using the specified workflow definition.

Invoke()

Invoca um fluxo de trabalho de forma síncrona usando a definição de fluxo de trabalho passada para o construtor de WorkflowInvoker(Activity).Invokes a workflow synchronously using the workflow definition passed to the WorkflowInvoker(Activity) constructor.

Invoke(TimeSpan)

Invoca um fluxo de trabalho de forma síncrona com o intervalo de tempo limite especificado.Invokes a workflow synchronously with the specified time-out interval.

Invoke<TResult>(Activity<TResult>)

Invoca um fluxo de trabalho de forma síncrona usando a definição de fluxo de trabalho passada para o construtor de WorkflowInvoker(Activity).Invokes a workflow synchronously using the workflow definition passed to the WorkflowInvoker(Activity) constructor.

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

Invoca um fluxo de trabalho de forma síncrona usando a definição de fluxo de trabalho especificada e IDictionary<TKey,TValue> de parâmetros de entrada.Invokes a workflow synchronously using the specified workflow definition and IDictionary<TKey,TValue> of input parameters.

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

Invoca um fluxo de trabalho de forma síncrona usando a definição de fluxo de trabalho, o IDictionary<TKey,TValue> de parâmetros de entrada e o intervalo de tempo limite especificados.Invokes a workflow synchronously using the specified workflow definition, IDictionary<TKey,TValue> of input parameters, and time-out interval.

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

Invoca um fluxo de trabalho usando a definição de fluxo de trabalho, o IDictionary<TKey,TValue> de parâmetros de entrada, o IDictionary<TKey,TValue> de parâmetros de saída adicionais e o intervalo de tempo limite especificados.Invokes a workflow synchronously using the specified workflow definition, IDictionary<TKey,TValue> of input parameters, IDictionary<TKey,TValue> of additional output parameters, and time-out interval.

Comentários

Esse método é bloqueado até que o fluxo de trabalho seja concluído, incluindo o tempo ocioso.This method blocks until the workflow has completed, including idle time. Toda a execução do fluxo de trabalho é garantida para ser executada no thread de invocação.All workflow execution is guaranteed to execute on the invoking thread. Para configurar um intervalo de tempo limite no qual o fluxo de trabalho deve ser concluído, use Invoke uma das sobrecargas que TimeSpanusam um.To configure a time-out interval in which the workflow must complete, use one of the Invoke overloads that take a TimeSpan.

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

Invoca um fluxo de trabalho de forma síncrona usando a definição de fluxo de trabalho, o IDictionary<TKey,TValue> de parâmetros de entrada e o intervalo de tempo limite especificados.Invokes a workflow synchronously using the specified workflow definition, IDictionary<TKey,TValue> of input parameters, and time-out interval.

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)

Parâmetros

workflow
Activity

A definição de fluxo de trabalho do fluxo de trabalho a ser invocado.The workflow definition of the workflow to invoke.

inputs
IDictionary<String,Object>

O dicionário de parâmetros de entrada para o fluxo de trabalho, inseridos por nome de argumento.The dictionary of input parameters to the workflow, keyed by argument name.

timeout
TimeSpan

O intervalo no qual o fluxo de trabalho deve ser concluído antes de ele ser anulado e um TimeoutException ser gerado.The interval in which the workflow must complete before it is aborted and a TimeoutException is thrown.

Retornos

Um dicionário dos valores OutArgument e InOutArgument da atividade raiz inseridos pelo nome do argumento que representam as saídas do fluxo de trabalho.A dictionary of the root activity's OutArgument and InOutArgument values keyed by argument name that represent the outputs of the workflow.

Exemplos

O exemplo a seguir invoca um fluxo de trabalho que WriteLine contém duas atividades Delay e uma atividade configurada com um Duration de um minuto.The following example invokes a workflow that contains two WriteLine activities and a Delay activity configured with a Duration of one minute. Este fluxo de trabalho é invocado duas vezes; a primeira vez com um intervalo de tempo limite de dois minutos e a segunda vez com um intervalo de tempo limite de 30 segundos.This workflow is invoked twice; the first time with a time-out interval of two minutes, and the second time with a time-out interval of 30 seconds. O primeiro fluxo de trabalho é concluído com êxito, mas o segundo não e um TimeoutException é lançado.The first workflow completes successfully, but the second one does not and a TimeoutException is thrown.

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);
}

Para obter um exemplo de Invoke como usar com argumentos de entrada e saída, consulte Invoke a sobrecarga de com os mesmos parâmetros que essa sobrecarga sem o intervalo de tempo limite.For an example of using Invoke with input and output arguments, see the overload of Invoke with the same parameters as this overload without the time-out interval.

Comentários

Esse método é bloqueado até que o fluxo de trabalho seja concluído, incluindo o tempo ocioso.This method blocks until the workflow has completed, including idle time. Toda a execução do fluxo de trabalho é garantida para ser executada no thread de invocação.All workflow execution is guaranteed to execute on the invoking thread. Se o fluxo de trabalho não for concluído dentro do intervalo de tempo limite especificado, o fluxo de trabalho TimeoutException será anulado e um será gerado.If the workflow does not complete within the specified time-out interval the workflow is aborted and a TimeoutException is thrown.

Observação

TimeoutException é acionada somente se o intervalo de tempo limite decorre e fluxo de trabalho se torna ocioso durante a execução.The TimeoutException is only thrown if the time-out interval elapses and the workflow becomes idle during execution. Um fluxo de trabalho que recebe mais tempo do intervalo de tempo limite especificado para concluir concluída com êxito se o fluxo de trabalho não se torna ocioso.A workflow that takes longer than the specified time-out interval to complete completes successfully if the workflow does not become idle.

Invoke(Activity, TimeSpan)

Invoca um fluxo de trabalho de forma síncrona usando a definição de fluxo de trabalho e o intervalo de tempo limite especificados.Invokes a workflow synchronously using the specified workflow definition and time-out interval.

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)

Parâmetros

workflow
Activity

A definição de fluxo de trabalho do fluxo de trabalho a ser invocado.The workflow definition of the workflow to invoke.

timeout
TimeSpan

O intervalo no qual o fluxo de trabalho deve ser concluído antes de ele ser anulado e um TimeoutException ser gerado.The interval in which the workflow must complete before it is aborted and a TimeoutException is thrown.

Retornos

Um dicionário dos valores OutArgument e InOutArgument da atividade raiz inseridos pelo nome do argumento que representam as saídas do fluxo de trabalho.A dictionary of the root activity's OutArgument and InOutArgument values keyed by argument name that represent the outputs of the workflow.

Exemplos

O exemplo a seguir invoca um fluxo de trabalho que WriteLine contém duas atividades Delay e uma atividade configurada com um Duration de um minuto.The following example invokes a workflow that contains two WriteLine activities and a Delay activity configured with a Duration of one minute. Este fluxo de trabalho é invocado duas vezes; a primeira vez com um intervalo de tempo limite de dois minutos e a segunda vez com um intervalo de tempo limite de 30 segundos.This workflow is invoked twice; the first time with a time-out interval of two minutes, and the second time with a time-out interval of 30 seconds. O primeiro fluxo de trabalho é concluído com êxito, mas o segundo não e um TimeoutException é lançado.The first workflow completes successfully, but the second one does not and a TimeoutException is thrown.

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);
}

Para obter um exemplo de Invoke como usar com argumentos de saída, consulte Invoke a sobrecarga de com os mesmos parâmetros que essa sobrecarga sem o intervalo de tempo limite.For an example of using Invoke with output arguments, see the overload of Invoke with the same parameters as this overload without the time-out interval.

Comentários

Esse método é bloqueado até que o fluxo de trabalho seja concluído, incluindo o tempo ocioso.This method blocks until the workflow has completed, including idle time. Toda a execução do fluxo de trabalho é garantida para ser executada no thread de invocação.All workflow execution is guaranteed to execute on the invoking thread. Se o fluxo de trabalho não for concluído dentro do intervalo de tempo limite especificado, o fluxo de trabalho TimeoutException será anulado e um será gerado.If the workflow does not complete within the specified time-out interval the workflow is aborted and a TimeoutException is thrown.

Observação

TimeoutException é acionada somente se o intervalo de tempo limite decorre e fluxo de trabalho se torna ocioso durante a execução.The TimeoutException is only thrown if the time-out interval elapses and the workflow becomes idle during execution. Um fluxo de trabalho que recebe mais tempo do intervalo de tempo limite especificado para concluir concluída com êxito se o fluxo de trabalho não se torna ocioso.A workflow that takes longer than the specified time-out interval to complete completes successfully if the workflow does not become idle.

Invoke(Activity, IDictionary<String,Object>)

Invoca um fluxo de trabalho de forma síncrona usando a definição de fluxo de trabalho especificada e IDictionary<TKey,TValue> de parâmetros de entrada.Invokes a workflow synchronously using the specified workflow definition and IDictionary<TKey,TValue> of input parameters.

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)

Parâmetros

workflow
Activity

A definição de fluxo de trabalho do fluxo de trabalho a ser invocado.The workflow definition of the workflow to invoke.

inputs
IDictionary<String,Object>

O dicionário de parâmetros de entrada para o fluxo de trabalho, inseridos por nome de argumento.The dictionary of input parameters to the workflow, keyed by argument name.

Retornos

Um dicionário dos valores OutArgument e InOutArgument da atividade raiz inseridos pelo nome do argumento que representam as saídas do fluxo de trabalho.A dictionary of the root activity's OutArgument and InOutArgument values keyed by argument name that represent the outputs of the workflow.

Exemplos

O exemplo a seguir chama um fluxo de trabalho que consiste em uma única atividade de Divide que tem dois argumentos conectados e dois argumentos de saída.The following example invokes a workflow consisting of a single Divide activity that has two input arguments and two output arguments. Quando o fluxo de trabalho é chamado, o dicionário de arguments é passado que contém os valores para cada argumento de entrada, fechado pelo nome do argumento.When the workflow is invoked, the arguments dictionary is passed which contains the values for each input argument, keyed by argument name. Quando o Invoke a chamada retorna, cada argumento de saída é retornado no dicionário de outputs , também fechado pelo nome do argumento.When the call to Invoke returns, each output argument is returned in the outputs dictionary, also keyed by argument name.

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"]);

Se o fluxo de trabalho for ActivityWithResultderivado de, CodeActivity<TResult> como Activity<TResult>ou, e houver argumentos de saída além do argumento de saída bem Result definido, uma sobrecarga não genérica de Invoke, como esta, deverá ser usada em para recuperar os argumentos adicionais.If the workflow derives from ActivityWithResult, such as CodeActivity<TResult> or Activity<TResult>, and there are output arguments in addition to the well-defined Result output argument, a non-generic overload of Invoke, such as this one, must be used in order to retrieve the additional arguments. Para fazer isso, a definição de fluxo de trabalho passada em Invoke deve ser do tipo Activity.To do this, the workflow definition passed into Invoke must be of type Activity. Divide Neste exemplo CodeActivity<int> ,aatividadeéInvokederivada de, mas é declarada de formaqueessasobrecargade,queretornaumdicionáriodeargumentosemvezdeumúnicovalorderetorno,sejausada.ActivityIn this example the Divide activity derives from CodeActivity<int>, but is declared as Activity so that this overload of Invoke, which returns a dictionary of arguments instead of a single return value, is used.

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"]);

Comentários

Esse método é bloqueado até que o fluxo de trabalho seja concluído, incluindo o tempo ocioso.This method blocks until the workflow has completed, including idle time. Toda a execução do fluxo de trabalho é garantida para ser executada no thread de invocação.All workflow execution is guaranteed to execute on the invoking thread. Para configurar um intervalo de tempo limite no qual o fluxo de trabalho deve ser concluído, use Invoke uma das sobrecargas que TimeSpanusam um.To configure a time-out interval in which the workflow must complete, use one of the Invoke overloads that take a TimeSpan.

Invoke(IDictionary<String,Object>, TimeSpan)

Invoca a atividade passada para o construtor de WorkflowInvoker(Activity) de forma síncrona com os parâmetros de entrada de IDictionary<TKey,TValue> especificados e o intervalo de tempo limite especificado.Invokes the activity passed to the WorkflowInvoker(Activity) constructor synchronously with the specified IDictionary<TKey,TValue> of input parameters and the specified time-out interval.

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)

Parâmetros

inputs
IDictionary<String,Object>

O dicionário de parâmetros de entrada para o fluxo de trabalho, inseridos por nome de argumento.The dictionary of input parameters to the workflow, keyed by argument name.

timeout
TimeSpan

O intervalo no qual o fluxo de trabalho deve ser concluído antes de ele ser anulado e um TimeoutException ser gerado.The interval in which the workflow must complete before it is aborted and a TimeoutException is thrown.

Retornos

Um dicionário dos valores OutArgument e InOutArgument da atividade raiz inseridos pelo nome do argumento que representam as saídas do fluxo de trabalho.A dictionary of the root activity's OutArgument and InOutArgument values keyed by argument name that represent the outputs of the workflow.

Exemplos

O exemplo a seguir invoca um fluxo de trabalho que WriteLine contém duas atividades Delay e uma atividade configurada com um Duration de um minuto.The following example invokes a workflow that contains two WriteLine activities and a Delay activity configured with a Duration of one minute. Este fluxo de trabalho é invocado duas vezes; a primeira vez com um intervalo de tempo limite de dois minutos e a segunda vez com um intervalo de tempo limite de 30 segundos.This workflow is invoked twice; the first time with a time-out interval of two minutes, and the second time with a time-out interval of 30 seconds. O primeiro fluxo de trabalho é concluído com êxito, mas o segundo não e um TimeoutException é gerado e a seguinte mensagem é exibida.The first workflow completes successfully, but the second one does not and a TimeoutException is thrown and the following message is displayed.

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);
}

Para obter um exemplo de Invoke como usar com argumentos de entrada e saída, consulte Invoke a sobrecarga de com os mesmos parâmetros que essa sobrecarga sem o intervalo de tempo limite.For an example of using Invoke with input and output arguments, see the overload of Invoke with the same parameters as this overload without the time-out interval.

Comentários

Esse método é bloqueado até que o fluxo de trabalho seja concluído, incluindo o tempo ocioso.This method blocks until the workflow has completed, including idle time. Toda a execução do fluxo de trabalho é garantida para ser executada no thread de invocação.All workflow execution is guaranteed to execute on the invoking thread. Se o fluxo de trabalho não for concluído dentro do intervalo de tempo limite especificado, o fluxo de trabalho TimeoutException será anulado e um será gerado.If the workflow does not complete within the specified time-out interval the workflow is aborted and a TimeoutException is thrown.

Observação

TimeoutException é acionada somente se o intervalo de tempo limite decorre e fluxo de trabalho se torna ocioso durante a execução.The TimeoutException is only thrown if the time-out interval elapses and the workflow becomes idle during execution. Um fluxo de trabalho que recebe mais tempo do intervalo de tempo limite especificado para concluir concluída com êxito se o fluxo de trabalho não se torna ocioso.A workflow that takes longer than the specified time-out interval to complete completes successfully if the workflow does not become idle.

Invoke(IDictionary<String,Object>)

Invoca a atividade passada para o construtor WorkflowInvoker(Activity) de forma síncrona com o IDictionary<TKey,TValue> especificado dos parâmetros de entrada.Invokes the activity passed to the WorkflowInvoker(Activity) constructor synchronously with the specified IDictionary<TKey,TValue> of input parameters.

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)

Parâmetros

inputs
IDictionary<String,Object>

O dicionário de parâmetros de entrada para o fluxo de trabalho, inseridos por nome de argumento.The dictionary of input parameters to the workflow, keyed by argument name.

Retornos

Um dicionário dos valores OutArgument e InOutArgument da atividade raiz inseridos pelo nome do argumento que representam as saídas do fluxo de trabalho.A dictionary of the root activity's OutArgument and InOutArgument values keyed by argument name that represent the outputs of the workflow.

Exemplos

O exemplo a seguir chama um fluxo de trabalho que consiste em uma única atividade de Divide que tem dois argumentos conectados e dois argumentos de saída.The following example invokes a workflow consisting of a single Divide activity that has two input arguments and two output arguments. Quando o fluxo de trabalho é chamado, o dicionário de arguments é passado que contém os valores para cada argumento de entrada, fechado pelo nome do argumento.When the workflow is invoked, the arguments dictionary is passed which contains the values for each input argument, keyed by argument name. Quando o Invoke a chamada retorna, cada argumento de saída é retornado no dicionário de outputs , também fechado pelo nome do argumento.When the call to Invoke returns, each output argument is returned in the outputs dictionary, also keyed by argument name.

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"]);

Se o fluxo de trabalho for ActivityWithResultderivado de, CodeActivity<TResult> como Activity<TResult>ou, e houver argumentos de saída além do argumento de saída bem Result definido, uma sobrecarga não genérica de Invoke, como esta, deverá ser usada em para recuperar os argumentos adicionais.If the workflow derives from ActivityWithResult, such as CodeActivity<TResult> or Activity<TResult>, and there are output arguments in addition to the well-defined Result output argument, a non-generic overload of Invoke, such as this one, must be used in order to retrieve the additional arguments. Para fazer isso, a definição de fluxo de trabalho WorkflowInvoker passada para o construtor deve Activityser do tipo.To do this, the workflow definition passed into the WorkflowInvoker constructor must be of type Activity. Divide Neste exemplo CodeActivity<int> ,aatividadeéInvokederivada de, mas é declarada de formaqueessasobrecargade,queretornaumdicionáriodeargumentosemvezdeumúnicovalorderetorno,sejausada.ActivityIn this example the Divide activity derives from CodeActivity<int>, but is declared as Activity so that this overload of Invoke, which returns a dictionary of arguments instead of a single return value, is used.

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"]);

Comentários

Esse método é bloqueado até que o fluxo de trabalho seja concluído, incluindo o tempo ocioso.This method blocks until the workflow has completed, including idle time. Toda a execução do fluxo de trabalho é garantida para ser executada no thread de invocação.All workflow execution is guaranteed to execute on the invoking thread. Para configurar um intervalo de tempo limite no qual o fluxo de trabalho deve ser concluído, use Invoke uma das sobrecargas que TimeSpanusam um.To configure a time-out interval in which the workflow must complete, use one of the Invoke overloads that take a TimeSpan.

Invoke(Activity)

Invoca um fluxo de trabalho usando a definição de fluxo de trabalho especificada.Invokes a workflow synchronously using the specified workflow definition.

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)

Parâmetros

workflow
Activity

A definição de fluxo de trabalho do fluxo de trabalho a ser invocado.The workflow definition of the workflow to invoke.

Retornos

Um dicionário dos valores OutArgument e InOutArgument da atividade raiz inseridos pelo nome do argumento que representam as saídas do fluxo de trabalho.A dictionary of the root activity's OutArgument and InOutArgument values keyed by argument name that represent the outputs of the workflow.

Exemplos

O exemplo a seguir invoca um fluxo de trabalho que consiste em DiceRoll uma única atividade.The following example invokes a workflow consisting of a single DiceRoll activity. A atividade de DiceRoll tem dois argumentos de saída que representam os resultados da operação de rolagem de dados.The DiceRoll activity has two output arguments that represent the results of the dice roll operation. Quando a chamada a Invoke retorna, cada argumento de saída é retornado no dicionário de saídas, com chave pelo nome do argumento.When the call to Invoke returns, each output argument is returned in the outputs dictionary, keyed by argument name.

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"]);

Se a atividade raiz do fluxo de trabalho não tiver argumentos de saída ou não forem necessários para o host, elas poderão ser desconsideradas.If the workflow's root activity has no output arguments or they are not needed by the host, they can be disregarded. O exemplo a seguir invoca um fluxo de trabalho que consiste em WriteLine uma única atividade que não tem nenhum argumento de saída.The following example invokes a workflow consisting of a single WriteLine activity that does not have any output arguments.

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

WorkflowInvoker.Invoke(wf);

Comentários

Esse método é bloqueado até que o fluxo de trabalho seja concluído, incluindo o tempo ocioso.This method blocks until the workflow has completed, including idle time. Toda a execução do fluxo de trabalho é garantida para ser executada no thread de invocação.All workflow execution is guaranteed to execute on the invoking thread. Para configurar um intervalo de tempo limite no qual o fluxo de trabalho deve ser concluído, use Invoke uma das sobrecargas que TimeSpanusam um.To configure a time-out interval in which the workflow must complete, use one of the Invoke overloads that take a TimeSpan.

Invoke()

Invoca um fluxo de trabalho de forma síncrona usando a definição de fluxo de trabalho passada para o construtor de WorkflowInvoker(Activity).Invokes a workflow synchronously using the workflow definition passed to the WorkflowInvoker(Activity) constructor.

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)

Retornos

Um dicionário dos valores OutArgument e InOutArgument da atividade raiz inseridos pelo nome do argumento que representam as saídas do fluxo de trabalho.A dictionary of the root activity's OutArgument and InOutArgument values keyed by argument name that represent the outputs of the workflow.

Exemplos

O exemplo a seguir invoca um fluxo de trabalho que consiste em DiceRoll uma única atividade.The following example invokes a workflow consisting of a single DiceRoll activity. A atividade de DiceRoll tem dois argumentos de saída que representam os resultados da operação de rolagem de dados.The DiceRoll activity has two output arguments that represent the results of the dice roll operation. Quando a chamada a Invoke retorna, cada argumento de saída é retornado no dicionário de saídas, com chave pelo nome do argumento.When the call to Invoke returns, each output argument is returned in the outputs dictionary, keyed by argument name. O fluxo de trabalho é invocado duas vezes, usando a definição WorkflowInvoker de fluxo de trabalho passada para o construtor.The workflow is invoked twice, using the workflow definition passed into the WorkflowInvoker constructor.

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"]);

Se a atividade raiz do fluxo de trabalho não tiver argumentos de saída ou não forem necessários para o host, elas poderão ser desconsideradas.If the workflow's root activity has no output arguments or they are not needed by the host, they can be disregarded. O exemplo a seguir invoca um fluxo de trabalho que consiste em WriteLine uma única atividade que não tem nenhum argumento de saída.The following example invokes a workflow consisting of a single WriteLine activity that does not have any output arguments.

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

WorkflowInvoker invoker = new WorkflowInvoker(wf);

invoker.Invoke();

Comentários

Esse método é bloqueado até que o fluxo de trabalho seja concluído, incluindo o tempo ocioso.This method blocks until the workflow has completed, including idle time. Toda a execução do fluxo de trabalho é garantida para ser executada no thread de invocação.All workflow execution is guaranteed to execute on the invoking thread. Para configurar um intervalo de tempo limite no qual o fluxo de trabalho deve ser concluído, use Invoke uma das sobrecargas que TimeSpanusam um.To configure a time-out interval in which the workflow must complete, use one of the Invoke overloads that take a TimeSpan.

Invoke(TimeSpan)

Invoca um fluxo de trabalho de forma síncrona com o intervalo de tempo limite especificado.Invokes a workflow synchronously with the specified time-out interval.

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)

Parâmetros

timeout
TimeSpan

O intervalo no qual o fluxo de trabalho deve ser concluído antes de ele ser anulado e um TimeoutException ser gerado.The interval in which the workflow must complete before it is aborted and a TimeoutException is thrown.

Retornos

Um dicionário dos valores OutArgument e InOutArgument da atividade raiz inseridos pelo nome do argumento que representam as saídas do fluxo de trabalho.A dictionary of the root activity's OutArgument and InOutArgument values keyed by argument name that represent the outputs of the workflow.

Exemplos

O exemplo a seguir invoca um fluxo de trabalho que WriteLine contém duas atividades Delay e uma atividade configurada com um Duration de um minuto.The following example invokes a workflow that contains two WriteLine activities and a Delay activity configured with a Duration of one minute. Este fluxo de trabalho é invocado duas vezes; a primeira vez com um intervalo de tempo limite de dois minutos e a segunda vez com um intervalo de tempo limite de 30 segundos.This workflow is invoked twice; the first time with a time-out interval of two minutes, and the second time with a time-out interval of 30 seconds. O primeiro fluxo de trabalho é concluído com êxito, mas o segundo não e um TimeoutException é gerado e a seguinte mensagem é exibida.The first workflow completes successfully, but the second one does not and a TimeoutException is thrown and the following message is displayed.

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);
}

Para obter um exemplo de Invoke como usar com argumentos de saída, consulte Invoke a sobrecarga de com os mesmos parâmetros que essa sobrecarga sem o intervalo de tempo limite.For an example of using Invoke with output arguments, see the overload of Invoke with the same parameters as this overload without the time-out interval.

Comentários

Esse método é bloqueado até que o fluxo de trabalho seja concluído, incluindo o tempo ocioso.This method blocks until the workflow has completed, including idle time. Toda a execução do fluxo de trabalho é garantida para ser executada no thread de invocação.All workflow execution is guaranteed to execute on the invoking thread. Se o fluxo de trabalho não for concluído dentro do intervalo de tempo limite especificado, o fluxo de trabalho TimeoutException será anulado e um será gerado.If the workflow does not complete within the specified time-out interval the workflow is aborted and a TimeoutException is thrown.

Observação

TimeoutException é acionada somente se o intervalo de tempo limite decorre e fluxo de trabalho se torna ocioso durante a execução.The TimeoutException is only thrown if the time-out interval elapses and the workflow becomes idle during execution. Um fluxo de trabalho que recebe mais tempo do intervalo de tempo limite especificado para concluir concluída com êxito se o fluxo de trabalho não se torna ocioso.A workflow that takes longer than the specified time-out interval to complete completes successfully if the workflow does not become idle.

Invoke<TResult>(Activity<TResult>)

Invoca um fluxo de trabalho de forma síncrona usando a definição de fluxo de trabalho passada para o construtor de WorkflowInvoker(Activity).Invokes a workflow synchronously using the workflow definition passed to the WorkflowInvoker(Activity) constructor.

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

Parâmetros de tipo

TResult

O tipo do fluxo de trabalho.The type of the workflow.

Parâmetros

workflow
Activity<TResult>

A definição de fluxo de trabalho do fluxo de trabalho a ser invocado.The workflow definition of the workflow to invoke. A definição de fluxo de trabalho precisa ser derivada de ActivityWithResult.The workflow definition needs to derive from ActivityWithResult.

Retornos

TResult

Um valor do tipo TResult com o resultado da execução da atividade.A value of type TResult with the result of the execution of the activity.

Exemplos

O exemplo a seguir invoca um fluxo de trabalho que consiste em Add uma única atividade que tem dois argumentos de entrada e uma vez CodeActivity<int> que ele é derivado dele tem Result um argumento de saída bem definido.The following example invokes a workflow consisting of a single Add activity that has two input arguments and since it derives from CodeActivity<int> it has one well-defined Result output argument. Quando o fluxo de trabalho é chamado, o dicionário de arguments é passado que contém os valores para cada argumento de entrada, fechado pelo nome do argumento.When the workflow is invoked, the arguments dictionary is passed which contains the values for each input argument, keyed by argument name. Quando a chamada a Invoke retorna, o valor Result do argumento de saída é retornado.When the call to Invoke returns, the value of the Result output argument is returned. Este exemplo de código se baseia no exemplo usando a classe WorkflowInvoker .This code example is based off of the Using the WorkflowInvoker Class sample.

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);

Comentários

Esse método é bloqueado até que o fluxo de trabalho seja concluído, incluindo o tempo ocioso.This method blocks until the workflow has completed, including idle time. Toda a execução do fluxo de trabalho é garantida para ser executada no thread de invocação.All workflow execution is guaranteed to execute on the invoking thread. Para configurar um intervalo de tempo limite no qual o fluxo de trabalho deve ser concluído, use Invoke uma das sobrecargas que TimeSpanusam um.To configure a time-out interval in which the workflow must complete, use one of the Invoke overloads that take a TimeSpan.

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

Invoca um fluxo de trabalho de forma síncrona usando a definição de fluxo de trabalho especificada e IDictionary<TKey,TValue> de parâmetros de entrada.Invokes a workflow synchronously using the specified workflow definition and IDictionary<TKey,TValue> of input parameters.

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

Parâmetros de tipo

TResult

O tipo do fluxo de trabalho.The type of the workflow.

Parâmetros

workflow
Activity<TResult>

A definição de fluxo de trabalho do fluxo de trabalho a ser invocado.The workflow definition of the workflow to invoke.

inputs
IDictionary<String,Object>

O dicionário de parâmetros de entrada para o fluxo de trabalho, inseridos por nome de argumento.The dictionary of input parameters to the workflow, keyed by argument name.

Retornos

TResult

Um valor do tipo TResult com o resultado da execução da atividade.A value of type TResult with the result of the execution of the activity.

Exemplos

O exemplo a seguir invoca um fluxo de trabalho que consiste em Add uma única atividade que tem dois argumentos de entrada e uma vez CodeActivity<int> que ele é derivado dele tem Result um argumento de saída bem definido.The following example invokes a workflow consisting of a single Add activity that has two input arguments and since it derives from CodeActivity<int> it has one well-defined Result output argument. Quando o fluxo de trabalho é chamado, o dicionário de arguments é passado que contém os valores para cada argumento de entrada, fechado pelo nome do argumento.When the workflow is invoked, the arguments dictionary is passed which contains the values for each input argument, keyed by argument name. Quando a chamada a Invoke retorna, o valor Result do argumento de saída é retornado.When the call to Invoke returns, the value of the Result output argument is returned. Este exemplo de código se baseia no exemplo usando a classe WorkflowInvoker .This code example is based off of the Using the WorkflowInvoker Class sample.

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);

Comentários

Esse método é bloqueado até que o fluxo de trabalho seja concluído, incluindo o tempo ocioso.This method blocks until the workflow has completed, including idle time. Toda a execução do fluxo de trabalho é garantida para ser executada no thread de invocação.All workflow execution is guaranteed to execute on the invoking thread. Para configurar um intervalo de tempo limite no qual o fluxo de trabalho deve ser concluído, use Invoke uma das sobrecargas que TimeSpanusam um.To configure a time-out interval in which the workflow must complete, use one of the Invoke overloads that take a TimeSpan.

Observação

TimeoutException é acionada somente se o intervalo de tempo limite decorre e fluxo de trabalho se torna ocioso durante a execução.The TimeoutException is only thrown if the time-out interval elapses and the workflow becomes idle during execution. Um fluxo de trabalho que leva mais tempo do que o intervalo de tempo limite especificado para ser concluído, será concluído com êxito se o fluxo de trabalho não se tornar ocioso.A workflow that takes longer than the specified time-out interval to complete, completes successfully if the workflow does not become idle.

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

Invoca um fluxo de trabalho de forma síncrona usando a definição de fluxo de trabalho, o IDictionary<TKey,TValue> de parâmetros de entrada e o intervalo de tempo limite especificados.Invokes a workflow synchronously using the specified workflow definition, IDictionary<TKey,TValue> of input parameters, and time-out interval.

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

Parâmetros de tipo

TResult

O tipo do fluxo de trabalho.The type of the workflow.

Parâmetros

workflow
Activity<TResult>

A definição de fluxo de trabalho do fluxo de trabalho a ser invocado.The workflow definition of the workflow to invoke.

inputs
IDictionary<String,Object>

O dicionário de parâmetros de entrada para o fluxo de trabalho, inseridos por nome de argumento.The dictionary of input parameters to the workflow, keyed by argument name.

timeout
TimeSpan

O intervalo no qual o fluxo de trabalho deve ser concluído antes de ele ser anulado e um TimeoutException ser gerado.The interval in which the workflow must complete before it is aborted and a TimeoutException is thrown.

Retornos

TResult

Um valor do tipo TResult com o resultado da execução da atividade.A value of type TResult with the result of the execution of the activity.

Exemplos

O exemplo a seguir invoca um fluxo de trabalho que consiste em Add uma única atividade que tem dois argumentos de entrada e uma vez CodeActivity<int> que ele é derivado dele tem Result um argumento de saída bem definido.The following example invokes a workflow consisting of a single Add activity that has two input arguments and since it derives from CodeActivity<int> it has one well-defined Result output argument. Quando o fluxo de trabalho é chamado, o dicionário de arguments é passado que contém os valores para cada argumento de entrada, fechado pelo nome do argumento.When the workflow is invoked, the arguments dictionary is passed which contains the values for each input argument, keyed by argument name. Quando a chamada a Invoke retorna, o valor Result do argumento de saída é retornado.When the call to Invoke returns, the value of the Result output argument is returned. Este exemplo de código se baseia no exemplo usando a classe WorkflowInvoker .This code example is based off of the Using the WorkflowInvoker Class sample.

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);

Comentários

Esse método é bloqueado até que o fluxo de trabalho seja concluído, incluindo o tempo ocioso.This method blocks until the workflow has completed, including idle time. Toda a execução do fluxo de trabalho é garantida para ser executada no thread de invocação.All workflow execution is guaranteed to execute on the invoking thread. Se o fluxo de trabalho não for concluído dentro do intervalo de tempo limite especificado, o fluxo de trabalho TimeoutException será anulado e um será gerado.If the workflow does not complete within the specified time-out interval the workflow is aborted and a TimeoutException is thrown.

Observação

TimeoutException é acionada somente se o intervalo de tempo limite decorre e fluxo de trabalho se torna ocioso durante a execução.The TimeoutException is only thrown if the time-out interval elapses and the workflow becomes idle during execution. Um fluxo de trabalho que leva mais tempo do que o intervalo de tempo limite especificado para ser concluído, será concluído com êxito se o fluxo de trabalho não se tornar ocioso.A workflow that takes longer than the specified time-out interval to complete, completes successfully if the workflow does not become idle.

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

Invoca um fluxo de trabalho usando a definição de fluxo de trabalho, o IDictionary<TKey,TValue> de parâmetros de entrada, o IDictionary<TKey,TValue> de parâmetros de saída adicionais e o intervalo de tempo limite especificados.Invokes a workflow synchronously using the specified workflow definition, IDictionary<TKey,TValue> of input parameters, IDictionary<TKey,TValue> of additional output parameters, and time-out interval.

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

Parâmetros de tipo

TResult

O tipo do fluxo de trabalho.The type of the workflow.

Parâmetros

workflow
Activity<TResult>

A definição de fluxo de trabalho do fluxo de trabalho a ser invocado.The workflow definition of the workflow to invoke.

inputs
IDictionary<String,Object>

O dicionário de parâmetros de entrada para o fluxo de trabalho, inseridos por nome de argumento.The dictionary of input parameters to the workflow, keyed by argument name.

additionalOutputs
IDictionary<String,Object>

O dicionário de parâmetros de saída adicionais do fluxo de trabalho, inseridos por nome de argumento.The dictionary of additional output parameters of the workflow, keyed by argument name.

timeout
TimeSpan

O intervalo no qual o fluxo de trabalho deve ser concluído antes de ele ser anulado e um TimeoutException ser gerado.The interval in which the workflow must complete before it is aborted and a TimeoutException is thrown.

Retornos

TResult

Um valor do tipo TResult com o resultado da execução da atividade.A value of type TResult with the result of the execution of the activity.

Exemplos

O exemplo a seguir invoca um fluxo de trabalho que consiste em Add uma única atividade que tem dois argumentos de entrada e uma vez CodeActivity<int> que ele é derivado dele tem Result um argumento de saída bem definido.The following example invokes a workflow consisting of a single Add activity that has two input arguments and since it derives from CodeActivity<int> it has one well-defined Result output argument. Quando o fluxo de trabalho é chamado, o dicionário de arguments é passado que contém os valores para cada argumento de entrada, fechado pelo nome do argumento.When the workflow is invoked, the arguments dictionary is passed which contains the values for each input argument, keyed by argument name. Quando a chamada a Invoke retorna, o valor Result do argumento de saída é retornado.When the call to Invoke returns, the value of the Result output argument is returned. Este exemplo de código se baseia no exemplo usando a classe WorkflowInvoker .This code example is based off of the Using the WorkflowInvoker Class sample.

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);

Comentários

Esse método é bloqueado até que o fluxo de trabalho seja concluído, incluindo o tempo ocioso.This method blocks until the workflow has completed, including idle time. Toda a execução do fluxo de trabalho é garantida para ser executada no thread de invocação.All workflow execution is guaranteed to execute on the invoking thread. Se o fluxo de trabalho não for concluído dentro do intervalo de tempo limite especificado, o fluxo de trabalho TimeoutException será anulado e um será gerado.If the workflow does not complete within the specified time-out interval the workflow is aborted and a TimeoutException is thrown.

Observação

TimeoutException é acionada somente se o intervalo de tempo limite decorre e fluxo de trabalho se torna ocioso durante a execução.The TimeoutException is only thrown if the time-out interval elapses and the workflow becomes idle during execution. Um fluxo de trabalho que leva mais tempo do que o intervalo de tempo limite especificado para ser concluído, será concluído com êxito se o fluxo de trabalho não se tornar ocioso.A workflow that takes longer than the specified time-out interval to complete, completes successfully if the workflow does not become idle.

Aplica-se a