Passo a passo: Criar um fluxo de trabalho com formulários de associação e iniciação
Este passo a passo demonstra como criar um fluxo de trabalho sequencial básico que incorpora o uso de formulários de associação e iniciação. São formulários ASPX que permitem que os parâmetros sejam adicionados a um fluxo de trabalho quando ele é associado pela primeira vez pelo administrador do SharePoint (o formulário de associação) e quando o fluxo de trabalho é iniciado pelo usuário (o formulário de iniciação).
Este passo a passo descreve um cenário em que um usuário deseja criar um fluxo de trabalho de aprovação para relatórios de despesas que tenha os seguintes requisitos:
Quando o fluxo de trabalho é associado a uma lista, o administrador é solicitado com um formulário de associação em que ele insere um limite de dólar para relatórios de despesas.
Os funcionários carregam seus relatórios de despesas na lista Documentos Compartilhados, iniciam o fluxo de trabalho e inserem o total de despesas no formulário de iniciação do fluxo de trabalho.
Se um total de relatório de despesas do funcionário exceder o limite predefinido do administrador, uma tarefa será criada para que o gerente do funcionário aprove o relatório de despesas. No entanto, se o total do relatório de despesas de um funcionário for menor ou igual ao limite de despesas, uma mensagem aprovada automaticamente será gravada na lista de histórico do fluxo de trabalho.
Este passo a passo ilustra as seguintes tarefas:
Criar um projeto de fluxo de trabalho sequencial de definição de lista do SharePoint no Visual Studio.
Criando um agendamento de fluxo de trabalho.
Liar com eventos de atividade de fluxo de trabalho.
Criar formulários de associação e iniciação de fluxo de trabalho.
Associando o fluxo de trabalho.
Iniciando manualmente o fluxo de trabalho.
Observação
Embora este passo a passo use um projeto de fluxo de trabalho sequencial, o processo é o mesmo que um fluxo de trabalho da máquina de estado.
Além disso, o computador pode mostrar nomes ou locais diferentes para alguns dos elementos de interface do usuário do Visual Studio nas instruções a seguir. A edição do Visual Studio que você possui e as configurações que você usa determinam esses elementos. Para obter mais informações, confira Personalizar o IDE do Visual Studio.
Pré-requisitos
Você precisará dos seguintes componentes para concluir este passo a passo:
Edições do Microsoft Windows e do SharePoint com suporte.
Visual Studio.
Criar um projeto de fluxo de trabalho sequencial do SharePoint
Primeiro, crie um projeto de fluxo de trabalho sequencial no Visual Studio. Um fluxo de trabalho sequencial é uma série de etapas executado em ordem até que a última atividade seja concluída. Neste procedimento, você criará um fluxo de trabalho sequencial que se aplica à lista documentos compartilhados no SharePoint. O assistente do fluxo de trabalho permite associar o fluxo de trabalho site ou à lista e permite determinar quando o fluxo de trabalho será iniciado.
Para criar um projeto de fluxo de trabalho sequencial do SharePoint
Na barra de menus, escolha Arquivo>Novo>Projeto para exibir a caixa de diálogo Novo Projeto.
Expanda o nó do SharePoint em Visual C# ou em Visual Basic e escolha o nó 2010.
No painel Modelos, escolha o modelo de projeto Projeto do SharePoint 2010.
Na caixa Nome, insira ExpenseReport e clique no botão OK.
O Assistente de Personalização do SharePoint é exibido.
Na página Especificar o site e o nível de segurança para depuração, escolha o botão de opção Implantar como uma solução de farm e escolha o botão Concluir para aceitar o nível de confiança e o site padrão.
Esta etapa também define o nível de confiança da solução como solução de farm, que é a única opção disponível para projetos de fluxo de trabalho.
No Gerenciador de Soluções, escolha o nó do projeto.
Na barra de menus, escolha Projeto>Adicionar Novo Item.
No Visual C# ou no Visual Basic, expanda o nó do SharePoint e, em seguida, o nó 2010.
No painel Modelos, escolha o modelo Fluxo de Trabalho Sequencial (somente Solução de Farm) e, em seguida, o botão Adicionar.
O Assistente de Personalização do SharePoint é exibido.
Na página Especificar o nome do fluxo de trabalho para depuração, aceite o nome padrão (ExpenseReport – Workflow1). Mantenha o valor padrão do tipo de modelo de fluxo de trabalho (Fluxo de Trabalho de Lista). Escolha o botão Avançar.
Na página Deseja que o Visual Studio associe automaticamente o fluxo de trabalho em uma sessão de depuração? desmarque a caixa que associa automaticamente o modelo de fluxo de trabalho se ele estiver marcado.
Esta etapa permite associar manualmente o fluxo de trabalho à lista Documentos Compartilhados posteriormente, que exibe o formulário de associação.
Escolha o botão Concluir.
Adicionar um formulário de associação ao fluxo de trabalho
Em seguida, crie um Formulário de associação .ASPX exibido pela primeira vez quando o administrador do SharePoint associa o fluxo de trabalho a um documento de relatório de despesas.
Para adicionar um formulário de associação ao fluxo de trabalho
Selecione o nó Workflow1, no Gerenciador de soluções.
Na barra de menus, escolha Projeto>Adicionar Novo Item para exibir a caixa de diálogo Adicionar Novo Item.
No modo de exibição de árvore da caixa de diálogo, expanda Visual C# ou Visual Basic (dependendo da linguagem do projeto), expanda o nó do SharePoint e escolha o nó 2010.
Na lista de modelos, escolha o modelo Formulário de Associação de Fluxo de Trabalho.
Na caixa de texto Nome , insira ExpenseReportAssocForm.aspx.
Clique no botão Adicionar para incluir o formulário no projeto.
Projetar e codificar o formulário de associação
Neste procedimento, você introduz funcionalidade ao formulário de associação adicionando controles e código a ele.
Para projetar e codificar o formulário de associação
No formulário de associação (ExpenseReportAssocForm.aspx), localize o elemento
asp:Content
que temID="Main"
.Logo após a primeira linha neste elemento de conteúdo, adicione o seguinte código para criar um rótulo e uma caixa de texto que solicita o limite de aprovação de despesas (AutoApproveLimit):
<asp:Label ID="lblAutoApproveLimit" Text="Auto Approval Limit:" runat="server" /> <asp:TextBox ID="AutoApproveLimit" runat="server" /> <br /><br />
Expanda o arquivo ExpenseReportAssocForm.aspx em Gerenciador de Soluções para exibir seus arquivos dependentes.
Observação
Se o projeto estiver no Visual Basic, você deverá escolher o botão Exibir Todos os Arquivos para executar esta etapa.
Abra o menu de atalho do arquivo ExpenseReportAssocForm.aspx e escolha Exibir Código.
Substitua o método
GetAssociationData
por:
Adicionar um formulário de iniciação ao fluxo de trabalho
Em seguida, crie o formulário de iniciação que aparece quando os usuários executam o fluxo de trabalho em seus relatórios de despesas.
Para criar um formulário de iniciação
Selecione o nó Workflow1, no Gerenciador de soluções.
Na barra de menus, escolha Projeto>Adicionar Novo Item para exibir a caixa de diálogo Adicionar Novo Item.
No modo de exibição de árvore da caixa de diálogo, expanda Visual C# ou Visual Basic (dependendo da linguagem do projeto), expanda o nó do SharePoint e escolha o nó 2010.
Na lista de modelos, escolha o modelo Formulário de Iniciação de Fluxo de Trabalho.
Na caixa de texto Nome, insira ExpenseReportInitAssocForm.aspx.
Clique no botão Adicionar para incluir o formulário no projeto.
Projetar e codificar o formulário de iniciação
Em seguida, introduza a funcionalidade ao formulário de iniciação adicionando controles e código a ele.
Para codificar o formulário de iniciação
No formulário de iniciação (ExpenseReportInitForm.aspx), localize o elemento
asp:Content
que contémID="Main"
.Logo após a primeira linha neste elemento de conteúdo, adicione o código a seguir para criar um rótulo e uma caixa de texto que exibe o limite de aprovação de despesas (AutoApproveLimit) que foi inserido no formulário de associação e outro rótulo e caixa de texto para solicitar o total de despesas (ExpenseTotal):
<asp:Label ID="lblAutoApproveLimit" Text="Auto Approval Limit:" runat="server" /> <asp:TextBox ID="AutoApproveLimit" ReadOnly="true" runat="server" /> <br /><br /> <asp:Label ID="lblExpenseTotal" Text="Expense Total:" runat="server" /> <asp:TextBox ID="ExpenseTotal" runat="server" /> <br /><br />
Expanda o arquivo ExpenseReportInitForm.aspx em Gerenciador de Soluções para exibir seus arquivos dependentes.
Abra o menu de atalho do arquivo ExpenseReportInitForm.aspx e escolha Exibir Código.
Substitua o método
Page_Load
pelo seguinte exemplo:Substitua o método
GetInitiationData
pelo seguinte exemplo:
Personalizar o fluxo de trabalho
Depois, personalize o fluxo de trabalho. Posteriormente, você associará dois formulários ao fluxo de trabalho.
Para personalizar o fluxo de trabalho
Exiba o fluxo de trabalho no designer de fluxo de trabalho abrindo Workflow1 no projeto.
Na Caixa de Ferramentas, expanda o nó Fluxo de Trabalho do Windows v3.0 e localize a atividade IfElse.
Adicione essa atividade ao fluxo de trabalho executando uma das seguintes etapas:
Abra o menu de atalho da atividade IfElse, escolha Copiar, abra o menu de atalho da linha na atividade onWorkflowActivated1 no designer de fluxo de trabalho e escolha Colar.
Arraste a atividade IfElse da Caixa de Ferramentas e conecte-a à linha sob a atividade onWorkflowActiviated1 no designer de fluxo de trabalho.
Na Caixa de Ferramentas, expanda o nó Fluxo de Trabalho do SharePoint e localize a atividade CreateTask.
Adicione essa atividade ao fluxo de trabalho executando uma das seguintes etapas:
Abra o menu de atalho para a atividade CreateTask, escolha Copiar, abra o menu de atalho para uma das duas áreas Remover Atividades Aqui em IfElseActivity1 no designer de fluxo de trabalho e escolha Colar.
Arraste a atividade CreateTask da Caixa de Ferramentas para uma das duas áreas Soltar Atividades Aqui em IfElseActivity1.
Na janela Propriedades, insira um valor de propriedade taskToken para a propriedade CorrelationToken.
Expanda a propriedade CorrelationToken selecionando o sinal de adição () ao lado dele.
Escolha a seta suspensa na subpropriedade OwnerActivityName e defina o valor Workflow1.
Selecione a propriedade TaskId e o botão de reticências () para exibir a caixa de diálogo Propriedade de associação.
Escolha a guia Associar a um novo membro, escolha o botão de opção Criar Campo e, em seguida, escolha o botão OK.
Selecione a propriedade TaskProperties e o botão de reticências () para exibir a caixa de diálogo Propriedade de associação.
Escolha a guia Associar a um novo membro, escolha o botão de opção Criar Campo e, em seguida, escolha o botão OK.
Na Caixa de Ferramentas, expanda o nó Fluxo de Trabalho do SharePoint e localize a atividade LogToHistoryListActivity.
Adicione essa atividade ao fluxo de trabalho executando uma das seguintes etapas:
Abra o menu de atalho para a atividade LogToHistoryListActivity, escolha Copiar, abra o menu de atalho para outra área Soltar Atividades Aqui em IfElseActivity1 no designer de fluxo de trabalho e escolha Colar.
Arraste a atividade LogToHistoryListActivity da Caixa de Ferramentas e solte-a na outra área Soltar Atividades Aqui dentro de IfElseActivity1.
Adicionar código ao fluxo de trabalho
Em seguida, adicione código ao fluxo de trabalho para fornecer a ele funcionalidade.
Para adicionar código ao fluxo de trabalho
Abra o menu de atalho para a atividade createTask1 no designer de fluxo de trabalho e escolha Exibir Código.
Adicione o seguinte método:
private void createTask1_MethodInvoking(object sender, EventArgs e) { createTask1_TaskId1 = Guid.NewGuid(); createTask1_TaskProperties1.AssignedTo = "somedomain\\someuser"; createTask1_TaskProperties1.Description = "Please approve the expense report"; createTask1_TaskProperties1.Title = "Expense Report Approval Needed"; }
Observação
No código, substitua
somedomain\\someuser
por um domínio e um nome de usuário para o qual uma tarefa será criada, como "Office\\JoeSch
". Para testar, é mais fácil usar a conta com a qual você está desenvolvendo.Abaixo do método
MethodInvoking
, adicione o seguinte exemplo:No designer de fluxo de trabalho, escolha a atividade ifElseBranchActivity1.
Na janela Propriedades, escolha a seta suspensa da propriedade Condição e defina o valor Condição do Código.
Expanda a propriedade Condição selecionando o sinal de adição () ao lado dela e defina seu valor como checkApprovalNeeded.
No designer de fluxo de trabalho, abra o menu de atalho da atividade logToHistoryListActivity1 e escolha Gerar Manipuladores para gerar um método vazio para o
MethodInvoking
evento.Substitua o código
MethodInvoking
pelo seguinte:Escolha a tecla F5 para depurar o programa.
Isso compila o aplicativo, empacota-o, implanta-o, ativa seus recursos, recicla o pool de aplicativos do IIS e inicia o navegador no local especificado na propriedade URL do Site.
Associando o fluxo de trabalho à lista de documentos
Em seguida, exiba o formulário de associação de fluxo de trabalho associando o fluxo de trabalho à lista SharedDocuments no site do SharePoint.
Para associar o fluxo de trabalho
Clique no link Documentos Compartilhados na barra QuickLaunch.
Selecione o link Biblioteca na guia Ferramentas de Biblioteca e, em seguida, escolha o botão da faixa de opções Configurações da Biblioteca.
Na seção Permissões e Gerenciamento, escolha o link Configurações de Fluxo de Trabalho e, em seguida, escolha o link Adicionar um fluxo de trabalho na página Fluxos de Trabalho.
Na lista superior da página de configurações de fluxo de trabalho, escolha o modelo ExpenseReport – Workflow1.
No próximo campo, insira ExpenseReportWorkflow e, em seguida, escolha o botão Avançar.
Isso associa o fluxo de trabalho à lista Documentos Compartilhados e exibe o formulário de associação de fluxo de trabalho.
Na caixa de texto Limite de Aprovação Automática, insira 1200 e escolha o botão Associar Fluxo de Trabalho.
Iniciar o fluxo de trabalho
Em seguida, associe o fluxo de trabalho a um dos documentos na lista Documentos Compartilhados para exibir o formulário de iniciação do fluxo de trabalho.
Para iniciar o fluxo de trabalho
Na página do SharePoint, escolha o botão Página Inicial.
Escolha o link Documentos Compartilhados na barra QuickLaunch para exibir a lista Documentos Compartilhados.
Selecione o link na guia Documentos na guia de Ferramentas de Biblioteca na parte superior da página e escolha o botão Carregar Documento na faixa de opções para carregar um novo documento na lista Documentos Compartilhados.
Na caixa de diálogo Carregar Documento, escolha o botão Procurar, escolha qualquer arquivo de documento, escolha o botão Abrir e, em seguida, o botão OK.
Você pode alterar as configurações do documento na caixa de diálogo, mas deixe-as com os valores padrão escolhendo o botão Salvar.
Escolha o documento carregado, escolha a seta suspensa exibida e, em seguida, escolha o item Fluxos de trabalho.
Escolha a imagem ao lado de ExpenseReportWorkflow.
Isso exibe o formulário de inicialização do fluxo de trabalho. (Observe que o valor exibido na caixa Limite de Aprovação Automática é somente leitura porque foi inserido no formulário de associação.)
Na caixa de texto Total de Despesas, insira 1600 e, em seguida, escolha o botão Iniciar Fluxo de Trabalho.
Isso exibe a lista documentos compartilhados novamente. Uma nova coluna chamada ExpenseReportWorkflow com o valor Completed é adicionada ao item que o fluxo de trabalho acabou de iniciar.
Escolha a seta suspensa ao lado do documento carregado e escolha o item Fluxos de trabalho para exibir a página de status do fluxo de trabalho. Escolha o valor Concluído em Fluxos de Trabalho Concluídos. A tarefa está listada na seção Tarefas.
Escolha o título da tarefa para exibir os detalhes da tarefa.
Volte à lista SharedDocuments e reinicie o fluxo de trabalho usando o mesmo documento ou outro.
Insira um valor na página de inicialização que seja menor ou igual ao valor inserido na página de associação (1200).
Quando isso ocorre, uma entrada na lista de histórico é criada em vez de uma tarefa. A entrada é exibida na seção Histórico do Fluxo de Trabalho da página de status do fluxo de trabalho. Observe a mensagem na coluna Resultado do evento de histórico. Ele contém o texto inserido no evento
logToHistoryListActivity1.MethodInvoking
que inclui o valor que foi aprovado automaticamente.