Configuración de aprobadores en el flujo de trabajo de aprobación utilizando la acción del flujo de trabajo SPD

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

  •  09-12-2019
  •  | 
  •  

Pregunta

Necesito crear un flujo de trabajo de aprobación de documentos para una biblioteca de documentos de SharePoint. El flujo de trabajo debe ser exactamente como el flujo de trabajo de aprobación de OOTB con la excepción de que los aprobadores dependen de un campo de metadatos en el documento. Por ejemplo, los documentos de HR deben ser aprobados por aprobación), pero los documentos financieros deben ser aprobados por aprobador2.

Hice una copia del flujo de trabajo de aprobación de OOTB y desea personalizarlo agregando una acción para establecer el valor del parámetro de aprobación como se muestra aquí (En el flujo de trabajo real, agregaré una condición para establecer el valor real del parámetro, pero por ahora solo necesito asegurarme de que este enfoque esté funcionando).

ingrese la descripción de la imagen aquí

Establecí el valor del parámetro de aprobación 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>

Sigo obteniendo el siguiente error en los registros 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

¿Alguna idea de lo que podría estar equivocado?

Medio ambiente: Windows 2008 R2, SP2010 Empresa Edición.

¿Fue útil?

Solución

He configurado un aprobador dinámico cambiando la configuración "con [estos usuarios]" en la búsqueda de los datos del elemento actual, como se muestra en el Paso 11 aquí: http://roykimsharepoint.wordpress.com / 2011/02/15 / SharePoint-Designer-Walkthrough-Copy-Modify-Publishing-Workflow /

Asistencia de tarea de aprobación personalizada del campo de los usuarios de metadatos / grupo

Este blogpost sugiere que necesita envolver la asignación XML dentro de un elemento "Asignaciones" cuando se usa dentro de un flujo de trabajo: http://blog.symprogress.com/2011/10/sharepoint-2010- Dynamic-Aprooks-For-Oob-ApProval-WorkFlow-Part-2/

Otros consejos

Si establece un campo de tipo de persona o grupo como los parámetros: los aprobadores anteriores asegúrese de establecer el 'campo de retorno como' algo que puede identificar a sus usuarios de manera inequívoca.Por ejemplo, el nombre de inicio de sesión hace, el nombre completo no.

Licenciado bajo: CC-BY-SA con atribución
scroll top