Overview

A algum tempo atrás me deparei com um problema relacioado a um workflow customizado que criei. Nenhum documento que estava sob o fluxo conseguia ser editado. Toda vez que tentava editá-lo dava erro.

Pesquisei e descobri que o erro era causado apenas quando a feature de publicação do SharePoint Server estava ativa. Mas isso não poderia ser a solução, aí fiquei um tempo no escuro. Hoje, finalmente encontrei a solução.

Solução

Para simular o problema fiz o passo-a-passo abaixo, o fluxo que está rodando no exemplo é um fluxo padrão do SharePoint.

1. Iniciei com a feature desativada:

clip_image001

2. Acessando o menu para editar as propriedades do item:

editaritem1

3. A tela de edição de item funciona:

editaritem2

4. Ativei a feature:

clip_image004

5. Acessando o menu para editar as propriedades do item:

editaritem3

6. Tela de erro:

clip_image006

7. Erro no log do SharePoint:

System.ArgumentNullException: Valor não pode ser nulo. Nome do parâmetro: s

em System.IO.StringReader..ctor(String s)

em System.Xml.XmlDocument.LoadXml(String xml)

em Microsoft.SharePoint.Publishing.Internal.WorkflowUtilities.FlattenXmlToHashtable(String strXml)

em Microsoft.SharePoint.Publishing.Internal.WorkflowUtilities.DoesWorkflowCancelWhenItemEdited(String associationXml)

em Microsoft.SharePoint.Publishing.WebControls.ConsoleDataSource.EnsurePageNotInLockingWorkflowIfInEditMode()

em Microsoft.SharePoint.Publishing.WebControls.ConsoleDataSource.LoadDataSource()

em Microsoft.SharePoint.Publishing.WebControls.ConsoleDataSource.OnLoad(EventArgs e)

em Microsoft.SharePoint.Publishing.WebControls.XmlConsoleDataSource.OnLoad(EventArgs e)

em Microsoft.SharePoint.Publishing.WebControls.PublishingSiteActionsMenuCustomizer.OnLoad(EventArgs e)

em System.Web.UI.Control.LoadRecursive()

em System.Web.UI.Control.LoadRecursive()

em System.Web.UI.Control.LoadRecursive()

em System.Web.UI.Control.LoadRecursive()

em System.Web.UI.Control.LoadRecursive()

em System.Web.UI.Control.LoadRecursive()

em System.Web.UI.Control.LoadRecursive()

em System.Web.UI.Control.LoadRecursive()

em System.Web.UI.Control.LoadRecursive()

em System.Web.UI.Control.LoadRecursive()

em System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

Encontrei a solução no fórum do TechNet de SharePoint: http://social.technet.microsoft.com/Forums/en/sharepoint2010programming/thread/66d97848-68e2-4342-b857-eb86af16544d

A solução foi bem simples, como o meu fluxo em questão não tinha o AssociationData configurado dava este erro.

Para solucionar o problema só seguir os passos abaixo:

1. Remover o fluxo da biblioteca

2. Editar o arquivo Elements.xml (do fluxo) e incluir abaixo da tag <Categories /> o conteúdo abaixo:

<AssociationData>

    <SharePoint></SharePoint>

</AssociationData>

3. Reinstale o workflow

4. Teste.

Com essa solução acima o erros que estava tendo no fluxo foram resolvidos, espero que os de vocês também sejam.

Anúncios