Configurando aprovadores no fluxo de trabalho de aprovação usando a ação de fluxo de trabalho SPD

sharepoint.stackexchange https://sharepoint.stackexchange.com//questions/38858

  •  09-12-2019
  •  | 
  •  

Pergunta

Preciso criar um fluxo de trabalho de aprovação de documentos para uma biblioteca de documentos do SharePoint.O fluxo de trabalho precisa ser exatamente igual ao fluxo de trabalho de aprovação OOTB, com a exceção de que os Aprovadores dependem de um campo de metadados no documento.por exemplo, os documentos de RH precisam ser aprovados pelo aprovador1, mas os documentos financeiros precisam ser aprovados pelo aprovador2.

Fiz uma cópia do fluxo de trabalho de aprovação do OOTB e quero personalizá -lo adicionando uma ação para definir o valor do parâmetro aprovadores, como mostrado aqui (no fluxo de trabalho real, adicionarei uma condição para definir o valor real do parâmetro, mas por enquanto Eu só preciso garantir que essa abordagem esteja funcionando).

enter image description here

Eu configurei o valor do parâmetro Approvers como:

<d:Approvers xmlns:d="http://schemas.microsoft.com/office/infopath/2009/WSSList/dataFields"
       xmlns:pc="http://schemas.microsoft.com/office/infopath/2007/PartnerControls">
  <d:Assignment>
    <d:Assignee>      
      <pc:Person>
        <pc:DisplayName>Approver1</pc:DisplayName>
        <pc:AccountId>DEMO\approver1</pc:AccountId>
        <pc:AccountType>User</pc:AccountType>
      </pc:Person>
    </d:Assignee>
    <d:Stage xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" />
    <d:AssignmentType>Serial</d:AssignmentType>
  </d:Assignment>
</d:Approvers>

Continuo recebendo o seguinte erro nos logs do SP:

    System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> 
  System.NullReferenceException: Object reference not set to an instance of an object.     
  at Microsoft.Office.Workflow.Actions.StageContainer.UpdateFromString(SPWeb web, SPItemKey itemId, String assignmentString)     
  at Microsoft.Office.Workflow.Actions.OfficeTask.get_ParticipantList()     --- End of inner exception stack trace ---     
  at System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)     
  at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)     
  at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)     
  at System.Workflow.ComponentModel.ActivityBindPropertyInfo.GetValue(Object obj, BindingFlags invokeAttr, Binder binder, Object[] index, CultureInfo culture)     
  at System.Reflection.PropertyInfo.GetValue(Object obj, Object[] index)     
  at System.Workflow.ComponentModel.MemberBind.<>c__DisplayClass1.<GetValue>b__0(Object sender, PathMemberInfoEventArgs eventArgs)     
  at System.Workflow.ComponentModel.PathWalker.TryWalkPropertyPath(Type rootType, String path)     
  at System.Workflow.ComponentModel.MemberBind.GetValue(MemberInfo memberInfo, Object dataContext, String path)     
  at System.Workflow.ComponentModel.ActivityBind.GetMemberValue(Object dataSourceObject, MemberInfo memberInfo, String path, Type targetType)     
  at System.Workflow.ComponentModel.ActivityBind.InternalGetRuntimeValue(Activity activity, Type targetType)     
  at System.Workflow.ComponentModel.DependencyObject.GetBoundValue(ActivityBind bind, Type targetType)     
  at System.Workflow.ComponentModel.DependencyObject.GetValueCommon(DependencyProperty dependencyProperty, PropertyMetadata metadata)     
  at Microsoft.SharePoint.WorkflowActions.CoerceActivity.get_Value()     
  at Microsoft.SharePoint.WorkflowActions.CoerceActivity.Coerce()     
  at Microsoft.SharePoint.WorkflowActions.CoerceActivity.Execute(ActivityExecutionContext provider)     
  at System.Workflow.ComponentModel.ActivityExecutor`1.Execute(T activity, ActivityExecutionContext executionContext)     
  at System.Workflow.ComponentModel.ActivityExecutor`1.Execute(Activity activity, ActivityExecutionContext executionContext)     
  at System.Workflow.ComponentModel.ActivityExecutorOperation.Run(IWorkflowCoreRuntime workflowCoreRuntime)     
  at System.Workflow.Runtime.Scheduler.Run()    49157206-76a1-4fe0-8b74-0567086a80ff

Alguma ideia do que pode estar errado?

Ambiente:Windows 2008 R2, edição SP2010 Enterprise.

Foi útil?

Solução

Configurei um aprovador dinâmico alterando as configurações "com [estes usuários]" para pesquisar os dados do item atual, conforme mostrado na etapa 11 aqui:http://roykimsharepoint.wordpress.com/2011/02/15/sharepoint-designer-walkthrough-copy-modify-publishing-workflow/

custom approval task assigment from item metadata user/group field

Esta postagem do blog sugere que você precisa agrupar o XML de atribuição dentro de um elemento "Atribuições" quando usado dentro de um fluxo de trabalho:http://blog.symprogress.com/2011/10/sharepoint-2010-dynamic-approvers-for-oob-approval-workflow-part-2/

Outras dicas

Se você definir qualquer campo de tipo Pessoa ou grupo como Parâmetros: Aprovadores acima, certifique-se de definir 'Campo de retorno como' algo que possa identificar seus usuários de forma inequívoca.Por exemplo, o nome de login sim, o nome completo não.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a sharepoint.stackexchange
scroll top