Classe base NativeActivity
NativeActivity é uma classe abstrata com um construtor protegido. Como CodeActivity, NativeActivity é usado para escrever comportamento imperativo implementando um Execute método. Ao contrário CodeActivitydo , NativeActivity tem acesso a todos os recursos expostos do tempo de execução do fluxo de trabalho através do NativeActivityContext objeto passado para o Execute método.
Usando NativeActivityContext
Os recursos do tempo de execução do fluxo de trabalho podem ser acessados de dentro do Execute método usando membros do context
parâmetro, do tipo NativeActivityContext. Os recursos disponíveis incluem NativeActivityContext o seguinte:
Obtenção e definição de argumentos e variáveis.
Agendar atividades infantis com ScheduleActivity
Abortando a execução da atividade usando Aborto .
Cancelando a execução filho usando CancelChild e CancelChildren.
Acesso a marcadores de atividade usando métodos como CreateBookmark, RemoveBookmarke ResumeBookmark.
Recursos de rastreamento personalizados usando Tracko .
Acesso às propriedades de execução da atividade e às propriedades de valor usando GetProperty e GetValue.
Agendamento de atividades e funções usando ScheduleAction e ScheduleFunc.
Para criar uma atividade personalizada que herda de NativeActivity
OpenVisual Studio 2010.
Selecione Arquivo, Novo e, em seguida, Projeto. Selecione Workflow 4.0 em Visual C# na janela Project Types e selecione o nó v2010 . Selecione Biblioteca de atividades na janela Modelos . Nomeie o novo projeto como HelloActivity.
Clique com o botão direito do mouse em Activity1.xaml no projeto HelloActivity e selecione Excluir.
Clique com o botão direito do mouse no projeto HelloActivity e selecione Adicionar e, em seguida , Classe. Nomeie a nova classe HelloActivity.cs.
No arquivo HelloActivity.cs, adicione as seguintes
using
diretivas.using System.Activities; using System.Activities.Statements;
Faça a nova classe herdar adicionando uma classe base à declaração de NativeActivity classe.
class HelloActivity : NativeActivity
Adicione funcionalidade à classe adicionando um Execute método.
protected override void Execute(NativeActivityContext context) { Console.WriteLine("Hello World!"); }
Substitua o CacheMetadata método e chame o método Add apropriado para permitir que o tempo de execução do fluxo de trabalho saiba sobre as variáveis, argumentos, filhos e delegados da atividade personalizada. Para obter mais informações, consulte a NativeActivityMetadata classe.
Use o NativeActivityContext objeto para agendar um marcador. Consulte Bookmarks para obter detalhes sobre como criar, agendar e retomar um marcador.
protected override void Execute(NativeActivityContext context) { // Create a Bookmark and wait for it to be resumed. context.CreateBookmark(BookmarkName.Get(context), new BookmarkCallback(OnResumeBookmark)); }