SharePoint Tip #12: Forms InfoPath em Workflows criados com Visual Studio

Criar forms InfoPath para usar com Workflows criados no Visual Studio para o SharePoint é, à partida, mais simples do que criar páginas ASPX. No entanto, apesar de existir um walk-through no SDK do MOSS 2007 (http://msdn2.microsoft.com/en-us/library/ms564355.aspx) que descreve todos os passos para criar um workflow utilizando Visual Studio e InfoPath, a parte do deployment é remetida para o SDK do WSS 3.0 (http://msdn2.microsoft.com/en-us/library/ms461324.aspx).

Seguindo todos os passos, em ambos os SDK, é possível criar com sucesso um Workflow com forms InfoPath e instalá-lo no MOSS. Mas quando chegar a altura de o associar a uma lista, o mais provável é que que o Forms Services mostre o erro Form Not Found. O problema está exactamente no deployment que não foi bem executado já que os forms InfoPath requerem um passo que não está presente em nenhum dos tutoriais.

No ficheiro de configuração da feature (feature.xml) é necessário indicar um Receiver Assembly (ou seja, um event handler que trata os eventos de instalação, activação, desactivação e desinstalação da feature) pertencente ao Office SharePoint Server, como indicado abaixo.

<Feature
 
Id="C2D16482-0891-4303-A097-60D7DA1AE41E"
 
Title=" Workflow Sample"
 
Description="Workflow sample description."
 
Version="12.0.0.0"
 
Scope="Site"
 
ReceiverAssembly = "Microsoft.Office.Workflow.Feature, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"
 
ReceiverClass = "Microsoft.Office.Workflow.Feature.WorkflowFeatureReceiver"
 
xmlns="http://schemas.microsoft.com/sharepoint/">
 
<ElementManifests>
   
<ElementManifest Location="Workflow.xml" />
 
</ElementManifests>
 
<Properties>
   
<Property Key="GloballyAvailable" Value="true" />
   
<Property Key="RegisterForms" Value="*.xsn" />
 
</Properties>
</Feature>

O Assembly indicado é instalado com o MOSS (e não com o WSS) e é responsável pelo deployment dos forms InfoPath no Office SharePoint Server. Podemos ver o resultado desse deployment acedendo à Central Administration, secção Application Management, opção Manage Form Templates. Na lista de forms instalados constam todos os que são instalados através do dito Receiver Assembly ou através da opção Upload. No entanto, a opção Upload não permite a utilização do form em Workflows.

A terceira linha assinalada no exemplo acima serve para que o Receiver Assembly saiba onde encontrar os ficheiros .XSN na pasta da feature.