Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
DynamicActivity é uma classe concreta e selada com um construtor público. DynamicActivity pode ser usado para montar a funcionalidade de atividade em runtime usando um DOM de atividade.
Recursos de DynamicActivity
DynamicActivity tem acesso a propriedades de execução, argumentos e variáveis, mas nenhum acesso a serviços de runtime, como agendamento de atividades filho ou acompanhamento.
As propriedades de nível superior podem ser definidas usando objetos de fluxo Argument de trabalho. No código imperativo, esses argumentos são criados usando propriedades CLR em um novo tipo. No XAML, eles são declarados usando as tags x:Class e x:Member.
Atividades construídas usando DynamicActivity interagem com o designer usando ICustomTypeDescriptor. As atividades criadas no designer podem ser carregadas dinamicamente usando Load, conforme demonstrado no procedimento a seguir.
Para criar uma atividade em runtime usando código imperativo
OpenVisual Studio 2010.
Selecione Arquivo, Novo, Projeto. Selecione Fluxo de Trabalho 4.0 no Visual C# na janela Tipos de Projeto e selecione o nó v2010 . Selecione Aplicativo de Console de Fluxo de Trabalho Sequencial na janela Modelos . Nomeie o novo projeto DynamicActivitySample.
Clique com o botão direito do mouse em Workflow1.xaml no projeto HelloActivity e selecione Excluir.
Abra Program.cs. Adicione a diretiva a seguir à parte superior do arquivo.
using System.Collections.Generic;Substitua o conteúdo do método
Mainpelo seguinte código, que cria uma atividade Sequence que contém uma única atividade WriteLine e a atribui à propriedade Implementation de uma nova atividade dinâmica.//Define the input argument for the activity var textOut = new InArgument<string>(); //Create the activity, property, and implementation Activity dynamicWorkflow = new DynamicActivity() { Properties = { new DynamicActivityProperty { Name = "Text", Type = typeof(InArgument<String>), Value = textOut } }, Implementation = () => new Sequence() { Activities = { new WriteLine() { Text = new InArgument<string>(env => textOut.Get(env)) } } } }; //Execute the activity with a parameter dictionary WorkflowInvoker.Invoke(dynamicWorkflow, new Dictionary<string, object> { { "Text", "Hello World!" } }); Console.ReadLine();Execute o aplicativo. Uma janela do console com o texto "Olá, Mundo!" é exibida.
Para criar uma atividade em runtime usando XAML
Abra o Visual Studio 2010.
Selecione Arquivo, Novo, Projeto. Selecione Fluxo de Trabalho 4.0 no Visual C# na janela Tipos de Projeto e selecione o nó v2010 . Selecione Aplicativo de Console de Fluxo de Trabalho na janela Modelos . Nomeie o novo projeto DynamicActivitySample.
Abra Workflow1.xaml no projeto HelloActivity. Clique na opção Argumentos na parte inferior do designer. Crie um novo
Inargumento chamadoTextToWritede tipoString.Arraste uma atividade WriteLine da seção Primitivas da caixa de ferramentas para a superfície do designer. Atribua o valor
TextToWriteà propriedade Text da atividade.Abra Program.cs. Adicione a diretiva a seguir à parte superior do arquivo.
using System.Activities.XamlIntegration;Substitua o conteúdo do
Mainmétodo pelo código a seguir.Activity act2 = ActivityXamlServices.Load(@"Workflow1.xaml"); results = WorkflowInvoker.Invoke(act2, new Dictionary<string, object> { { "TextToWrite", "HelloWorld!" } }); Console.ReadLine();Execute o aplicativo. Uma janela do console com o texto "Olá, Mundo!" é exibida.
Clique com o botão direito do mouse no arquivo Workflow1.xaml no Gerenciador de Soluções e selecione Exibir Código. Observe que a classe de atividade é criada com
x:Classe a propriedade é criada comx:Property.