Você está na página 1de 25

WorkFlow State Machine no SharePoint 2010 Thiago Silva

Pgina 1 de 25

Thiago Silva
My Personal SharePoint Knowledge Base Home About
Type text to search here... Enviar Consulta

Home > SharePoint Technologies > WorkFlow State Machine no SharePoint 2010

WorkFlow State Machine no SharePoint 2010


September 29, 2010 Thiago Silva Leave a comment Go to comments Rate This Overview Podemos desenvolver alguns tipos de WorkFlows no SharePoint 2010 para listas, e agora, tambm para sites. O WorkFlow pode ser Sequential (Sequencial) ou State-Machine (baseado em um estado). Um Sequential WorkFlow pode ser facilmente criado usando o SharePoint Designer 2010, e bem utilizado por ser muito simples e rpido de contru-lo. Informaes adicionais de como contruir um WorkFlow via SharePoint Designer: http://office.microsoft.com/en-us/sharepoint-designer-help/create-a-workflowHA010100591.aspx. Neste artigo irei abordar a contruo de um WorkFlow State-Machine para SharePoint 2010 usando Visual Studio 2010. Em muitos casos, um WorkFlow simples, sequencial, no consegue atender a necessidade do cenrio desejado. Por exemplo, imaginem uma estrutura de Aprovao de Documentos, onde teremos que basear o WorkFlow em um estado de aprovao como: InProgress, Reviso e Finalizado. Sendo que, o documento s passar para o Status Finalizado quando for aprovado na Reviso. Caso seja reprovado, deve voltar para InProgress, assim por diante. Usando um WorkFlow sequncial no conseguiramos alcanar este feito de uma forma legal. Seria possvel construir workarounds para atender o cenrio. Mas, j temos um template de WorkFlow que atende perfeitamente esta causa, por que no utiliz-lo? Vamos ento ao WorkFlow State-Machine! Soluo Para essa soluo vou trabalhar com os seguintes produtos e tecnologias: Windows 7 Enterprise; SharePoint 2010 Foundation; SQL Server 2008;

http://thiagottss.wordpress.com/2010/09/29/workflow-state-machine-no-sharepoint-20... 22/06/2011

WorkFlow State Machine no SharePoint 2010 Thiago Silva

Pgina 2 de 25

Visual Studio 2010 Ultimate. Hoje na web, difcil encontrar informaes simples de como criar um WorkFlow State-Machine para SharePoint 2010 usando Visual Studio 2010. Por este motivo, resolvi escrever este artigo com o exemplo simples. 1. Criando um projeto de WorkFlow State-Machine no Visual Studio 2010 1.1. Abra o Visual Studio 2010, clique em New > Project;
image

1.2. Na tela de seleo de Templates, escolha a linguagem (no meu caso, usarei C#), ento v at SharePoint > 2010 e escolha State Machine WorkFlow; 1.3. Em Name d o nome para o seu projeto (WorkFlowDemo) e ento clica em OK;

http://thiagottss.wordpress.com/2010/09/29/workflow-state-machine-no-sharepoint-20... 22/06/2011

WorkFlow State Machine no SharePoint 2010 Thiago Silva

Pgina 3 de 25

image

1.4. No wizard Specify the site and security level for debugging especifique o site que iremos trabalhar e clique em Next;
image

http://thiagottss.wordpress.com/2010/09/29/workflow-state-machine-no-sharepoint-20... 22/06/2011

WorkFlow State Machine no SharePoint 2010 Thiago Silva

Pgina 4 de 25

1.5. No prximo wizard altere o nome, se necessrio. No meu caso, vou alterar para WorkflowDemo ApprovalProcess e mantenha o tipo do WorkFlow em List WorkFlow, em seguida, clique em Next;
image

1.6. No prximo wizard mantenha as configuraes para associar automaticamente o WorkFlow lista/biblioteca selecionada. Se preferir, altere a lista ou biblioteca que deseja associar o WorkFlow, e clique em Next;

http://thiagottss.wordpress.com/2010/09/29/workflow-state-machine-no-sharepoint-20... 22/06/2011

WorkFlow State Machine no SharePoint 2010 Thiago Silva

Pgina 5 de 25

image

1.7. No prximo wizard podemos especificar as condies em que o WorkFlow ir iniciar. Podemos deixar os valores padres e clique em Finish.

http://thiagottss.wordpress.com/2010/09/29/workflow-state-machine-no-sharepoint-20... 22/06/2011

WorkFlow State Machine no SharePoint 2010 Thiago Silva

Pgina 6 de 25

image

Criamos nosso projeto de WorkFlow State-Machine, agora vamos aos passos que iremos desempenhar nossa atividade de Aprovao de Documentos. 2. Criando o WorkFlow State-Machine 2.1. Ao concluir a criao do projeto, o Visual Studio 2010 nos mostra o Workflow1.cs[Design] com uma ilustrao inicial do nosso WorkFlow.
image

2.2. Agora, em Toolbox, iremos adicionar alguns estados para o nosso Workflow. Para isso clique e arraste trs State para o nosso Workflow. Ficando assim:

http://thiagottss.wordpress.com/2010/09/29/workflow-state-machine-no-sharepoint-20... 22/06/2011

WorkFlow State Machine no SharePoint 2010 Thiago Silva

Pgina 7 de 25

image

2.3. Vamos renomear nossos State para: InicialState, StateInProgress, StateRevisao e StateFinalizado.
image

2.4. Vamos designar nosso InitialState e CompletedState. Para isso, clique com o boto direito em cima de InitialSate e selecione Set as Initial State. Faa o mesmo para stateFinalizado, mas agora selecionando Set as Completed State.

http://thiagottss.wordpress.com/2010/09/29/workflow-state-machine-no-sharepoint-20... 22/06/2011

WorkFlow State Machine no SharePoint 2010 Thiago Silva

Pgina 8 de 25

image

http://thiagottss.wordpress.com/2010/09/29/workflow-state-machine-no-sharepoint-20... 22/06/2011

WorkFlow State Machine no SharePoint 2010 Thiago Silva

Pgina 9 de 25

image

2.5. Agora clique duas vezes em eventDrivenActivity1, dentro de InitialState. 2.6. Vamos fazer com que ao iniciar o WorkFlow, o estado v para InProgress. Para isso, em Toolbox, clique e arraste um SetState logo abaixo de onWorkflowActivated1.
image

2.7. Em Properties do setStateActivity1, em TargetStateName, defina para stateInProgress;

http://thiagottss.wordpress.com/2010/09/29/workflow-state-machine-no-sharepoint-20... 22/06/2011

WorkFlow State Machine no SharePoint 2010 Thiago Silva

Pgina 10 de 25

image

2.8. Clique em Workflow1 na barra de navegao (breadcrumb) para voltar ao WorkFlow. 2.9. Clique com o boto direito em stateInProgress e selecione Add StateInitialization. Com isso, definiremos o que dever acontecer sempre que um processo entrar neste passo.
image

http://thiagottss.wordpress.com/2010/09/29/workflow-state-machine-no-sharepoint-20... 22/06/2011

WorkFlow State Machine no SharePoint 2010 Thiago Silva

Pgina 11 de 25

2.10. Agora iremos arrastar um tarefa para o nosso WorkFlow. No Toolbox, clique e arraste um CreateTask;
image

2.11. Nas propriedades da Tarefa, em CorrelationToken, insira um novo token InProgressToken e em OwnerActivity, selecione stateInProgress.
image

2.12. Ainda nas propriedades da tarefa, em TaskId e TaskProperties, faa o mesmo procedimento. Clique nos para abrir a janela propriedades, clique na aba Bind to a new member, selecione Create Field e clique Ok.

http://thiagottss.wordpress.com/2010/09/29/workflow-state-machine-no-sharepoint-20... 22/06/2011

WorkFlow State Machine no SharePoint 2010 Thiago Silva

Pgina 12 de 25

image

2.13. Agora, clique duas vezes sobre createTask1 para gerar o MethodInvoking event handler. Vamos gerar um novo GUID para nossa tarefa, e adicionar algumas propriedades. Insira o seguinte cgio para o MethodInvoking.
Code Snippet 1. private void createTask1_MethodInvoking(object sender, EventArgs e) 2. { 3. createTask1_TaskId1 = Guid.NewGuid(); createTask1_TaskProperties1.Title = "Finalize o documento"; 4. 5. createTask1_TaskProperties1.AssignedTo = "notebook01 \\Thiago"; //troque para um usurio vlido do seu ambiente 6. createTask1_TaskProperties1.DueDate = DateTime.Now.AddDays (1.0); 7. }

2.14. Agora volte para o Workflow1.cs[Design], clique com boto direito em stateInProgress e selecione Add EventDriven. Clique e arraste uma tarefa OnTaskChanged para que possamos monitorar as mudanas da nossa primeira tarefa criada.

http://thiagottss.wordpress.com/2010/09/29/workflow-state-machine-no-sharepoint-20... 22/06/2011

WorkFlow State Machine no SharePoint 2010 Thiago Silva

Pgina 13 de 25

image

2.15. Nas propriedades de onTaskChanged1, em TaskId, selecione o id da tarefa que criamos anteriormente para vincul-las e clique Ok.
image

2.16. Ainda em propriedades, em AfterProperties e BeforProperties faa o mesmo que no passo 2.12. Clique em depois na tab Bind to a new member, selecione Create Field e depois OK para as duas propriedades.

http://thiagottss.wordpress.com/2010/09/29/workflow-state-machine-no-sharepoint-20... 22/06/2011

WorkFlow State Machine no SharePoint 2010 Thiago Silva

Pgina 14 de 25

image

2.17. Ainda em propriedades, em CorrelationToken, selecione o InProgressToken.


image

2.18. Clique duas vezes sobre onTaskChanged1 para gerar o mtodo Invoked, nele iremos assegurar que as mudanas que ocorrerem na tarefa, sejam sincronizadas. Adicione o seguinte trecho de cdigo no mtodo.
Code Snippet 1. private void onTaskChanged1_Invoked(object sender, ExternalDataEventArgs e) 2. { 3. onTaskChanged1_AfterProperties1 = onTaskChanged1.AfterProperties; 4. onTaskChanged1_BeforeProperties1 = onTaskChanged1.BeforeProperties; 5. }

2.19. Agora iremos adicionar uma condio (IfElse) para prosseguirmos com o WorkFlow, caso seja atendida nossa condio. Para isso, no Toolbox, adicione um IfElse.
image

2.20. Esta condio ir utilizar uma Code Condtion, ou seja, iremos colocar uma condio no cdigo para validao. Para isso, voltemos ao cdigo e iremos adicionar um mtodo para validar nossa condio. Adicione o seguinte trecho de cdigo para verificar se a tarefa teve seu status de completude alterado para 100%, ou seja, tarefa completada:

http://thiagottss.wordpress.com/2010/09/29/workflow-state-machine-no-sharepoint-20... 22/06/2011

WorkFlow State Machine no SharePoint 2010 Thiago Silva

Pgina 15 de 25

Code Snippet 1. private void ProntoParaRevisao(object sender, ConditionalEventArgs e) 2. { 3. if (onTaskChanged1_AfterProperties1.PercentComplete == 1.0) 4. { e.Result = true; 5. 6. } 7. else 8. { 9. e.Result = false; 10. } 11. }

2.21. Voltando para o Design, vamos adicionar nosso mtodo a validao do nosso IfElseBranchActivity1
image

2.22. Ento vamos arrastar um SetState para que quando a condio for verdadeira, o estado seja alterado para stateRevisao.

http://thiagottss.wordpress.com/2010/09/29/workflow-state-machine-no-sharepoint-20... 22/06/2011

WorkFlow State Machine no SharePoint 2010 Thiago Silva

Pgina 16 de 25

image

2.23. De volta ao Design, veja que agora temos um ligao do stateInProgress para stateRevisao. Em stateRevisao, vamos repitir os passos feitos em stateInProgress (passos 2.9 at 2.13) para criar a inicializao do estado e criar uma tarefa para reviso.

http://thiagottss.wordpress.com/2010/09/29/workflow-state-machine-no-sharepoint-20... 22/06/2011

WorkFlow State Machine no SharePoint 2010 Thiago Silva

Pgina 17 de 25

image

image

2.24. Da mesma forma, vamos repetir os passos (2.14 at 2.18) para adicionar um evento para monitorar a tarefa criada no passo anterior.

http://thiagottss.wordpress.com/2010/09/29/workflow-state-machine-no-sharepoint-20... 22/06/2011

WorkFlow State Machine no SharePoint 2010 Thiago Silva

Pgina 18 de 25

image

image

2.25. Da mesma forma, vamos repetir os passos (2.19 at 2.22) para adicionar uma condio que ir validar nosso estado de reviso.
Code Snippet 1. private void RevisaoFinalizada(object sender, ConditionalEventArgs e) 2. { 3. if (onTaskChanged2_AfterProperties1.PercentComplete == 1.0) 4. { 5. if (onTaskChanged2_AfterProperties1.Description.ToLower() == "<div>aprovado</div>") 6. { 7. e.Result = true; 8. } 9. else 10. { 11. e.Result = false; 12. } 13. } 14. }

http://thiagottss.wordpress.com/2010/09/29/workflow-state-machine-no-sharepoint-20... 22/06/2011

WorkFlow State Machine no SharePoint 2010 Thiago Silva

Pgina 19 de 25

image

2.26. Desta vez iremos adicionar um setState para as duas aes. Ou seja, se a tarefa for completada e estiver escrito Aprovado na descrio da tarefa, o estado ser alterado para stateFinalizado. Caso contrrio, o estado voltar para stateInProgress.

http://thiagottss.wordpress.com/2010/09/29/workflow-state-machine-no-sharepoint-20... 22/06/2011

WorkFlow State Machine no SharePoint 2010 Thiago Silva

Pgina 20 de 25

image

image

2.27. Finalizamos nosso Workflow. Vamos efetuar o deploy no nosso site e testar nosso workflow State Machine que acabamos de criar. Para isso, clique em Build e depois em Deploy Solution.

http://thiagottss.wordpress.com/2010/09/29/workflow-state-machine-no-sharepoint-20... 22/06/2011

WorkFlow State Machine no SharePoint 2010 Thiago Silva

Pgina 21 de 25

image

2.28. V at a biblioteca/lista o workflow foi associado, no caso deste artigo, a biblioteca Shared Documents. Faa upload de um novo documento para esta biblioteca, assim, iniciando nosso workflow. 2.29. O workflow s ser finalizado, se no estado de Reviso a tarefa criada para reviso, seja concluda (atribuindo 100% a tarefa) e escrevendo na descrio da tarefa, o texto Aprovado. Qualquer outra informao, no deixar que o workflow termine, sempre voltando ao estado InProgress.
image

http://thiagottss.wordpress.com/2010/09/29/workflow-state-machine-no-sharepoint-20... 22/06/2011

WorkFlow State Machine no SharePoint 2010 Thiago Silva

Pgina 22 de 25

image

image

Concluso Nesse artigo ns apresentamos como criar um WorkFlow State Machine para SharePoint 2010 via Visual Studio. Lembrando que ainda podemos criar workflows mais simples, usando a prpria interface via browser, ou um pouco mais avanado utilizando o SharePoint Designer 2010. As vantagens na utilizao do WorkFlow via Visual Studio so inmeras. Podemos aplicar regras de negcios muito mais complexas e tambm, o workflow compilado e aplicado no SharePoint usando o modelo de pacotes de soluo para SharePoint (.wsp). Share this: Email Print
2

Categories: SharePoint Technologies Tags: SharePoint 2010; Workflow; Visual Studio 2010; State Machine
Like Be the first to like this post.

Comments (0) Trackbacks (3) Leave a comment Trackback 1. No comments yet. 1. September 30, 2010 at 12:46 am | #1

http://thiagottss.wordpress.com/2010/09/29/workflow-state-machine-no-sharepoint-20... 22/06/2011

WorkFlow State Machine no SharePoint 2010 Thiago Silva

Pgina 23 de 25

Tweets that mention WorkFlow State Machine no SharePoint 2010 | Thiago Silva Topsy.com 2. December 14, 2010 at 11:22 pm | #2 Iniciando um Workflow programaticamente para um item de Lista no SharePoint Thiago Silva 3. January 2, 2011 at 10:49 pm | #3 2010 in review Thiago Silva

Leave a Reply
Enter your comment here...

Guest Log In Log In Log In

Gravatar

Email (required) Your email address will not be published. Name (required) Website
WordPress.com

Twitter

You are commenting using your Twitter account. (Log Out)


Facebook

You are commenting using your Facebook account. (Log Out) Connecting to %s

http://thiagottss.wordpress.com/2010/09/29/workflow-state-machine-no-sharepoint-20... 22/06/2011

WorkFlow State Machine no SharePoint 2010 Thiago Silva

Pgina 24 de 25

Notify me of follow-up comments via email. Notify me of new posts via email.
Post Comment

The remote server returned an error: (401) Unauthorized Dashboard Designer PerformancePoint 2010 An unexpected system error has occurred PerformancePoint 2010 Dashboard Designer RSS feed Google Youdao Xian Guo Zhua Xia My Yahoo! newsgator Bloglines iNezha

Top Posts
Error occurred in deployment step 'Recycle IIS Application Pool': 0x80070005 Access denied Microsoft SharePoint server 2010 encountered an error during setup. One or more required office components failed to complete successfully IIS Error: The process cannot access the file because it is being used by another process. (Exception from HRESULT: 0x80070020) Could not load file or assembly 'System.Web.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified. Sua aplicao customizada escrevendo no Logs (ULS) do SharePoint! Usando Named Sets no Analysis Services para entregar Ranges de datas pr-definidos para o usurio final Como saber verso do SQL Server rodando? An IIS web site by the name of SharePoint Central Administration v4 already exists on this server The remote server returned an error: (401) Unauthorized Dashboard Designer PerformancePoint 2010 Trabalhando com Campos Lookup e Lookup Multi Value no SharePoint programaticamente

Twitter
est voltando pra SP! :) 5 days ago Goinia linda demais! #aprovada #querovoltar 6 days ago "Aprendi que um homem s tem o direito de olhar outro de cima pra baixo quando o est ajudando a se levantar." - Gabriel Garca Mrquez 1 week ago Meu Blog bombou de visitas ontem!! :D 98 acessos! http://thiagottss.wordpress.com vou at preparar um post pro fim de semana #bomdemais 1 week ago Vixe.. agora que vi que ainda no almocei.. kkkk 3 weeks ago

http://thiagottss.wordpress.com/2010/09/29/workflow-state-machine-no-sharepoint-20... 22/06/2011

WorkFlow State Machine no SharePoint 2010 Thiago Silva

Pgina 25 de 25

Tag Cloud
Access Denied Backup BI Browser Campo Central Administration Client Object Model Compatibility Configuration Dashboard Designer ETL Excel Services Excel Services Web Services Field Filtros Foreach Loop Container HyperLink IIS Installation Integration Services Issue LOGS Management Shell MOSS 2007 Named Sets PerformancePoint Power
401 AAM

Shell Programaticamente Restore


State Machine SharePoint List Source Adapter

SharePoint 2010
Workflow

SharePoint 2010; Workflow; Visual Studio 2010;

SQL Server SSAS SSIS Tracing Troubleshooting Unauthorized

Visual Studio WebApplication WebPart WebPart de Grficos

Meta
Register Log in Entries RSS Comments RSS WordPress.com

Blog
Aline Maia Gabriel Nvoa Rodrigo Romano Thiago Cruz MVP SharePoint Wagner Amorim

Forums
MOSS TechNet SharePoint MSDN Windows SharePoint Services Top WordPress Copyright 2008-2011 Thiago Silva Blog at WordPress.com. Theme: INove by NeoEase.

http://thiagottss.wordpress.com/2010/09/29/workflow-state-machine-no-sharepoint-20... 22/06/2011

Você também pode gostar