web services - crear - Disparar un flujo de trabajo de SharePoint actualizando un elemento de la lista a través del servicio web de la lista
como crear un flujo de trabajo en sharepoint 2016 (4)
Estoy desarrollando un Flujo de trabajo secuencial simple de SharePoint que debe vincularse a una biblioteca de documentos. Al asociar el pequeño flujo de trabajo a una biblioteca de documentos, verifiqué estas opciones
- Permita que un usuario autenticado inicie manualmente este flujo de trabajo con Editar permisos de elementos.
- Comience este flujo de trabajo cuando se crea un nuevo elemento.
- Comience este flujo de trabajo cuando se cambie un artículo.
Ahora, cargué un documento en esta biblioteca y se inicia el flujo de trabajo y, por ejemplo, envía un correo. Se completa y todo está bien.
Cuando selecciono Editar propiedades en el nuevo elemento y guardo un cambio, el flujo de trabajo se activa nuevamente. Absolutamente lo que esperábamos
Incluso cuando se copia un nuevo elemento en la biblioteca con la ayuda del servicio web Copy.asmx, el flujo de trabajo comienza normalmente.
Pero ahora quiero actualizar el elemento a través de SharePoint WebService Lists.asmx .
Mi CAML va aquí:
<Method ID=''1'' Cmd=''Update''>
<Field Name=''ID''>1</Field>
<Field Name=''myDummyPropertyField''>NewValue</Field>
</Method>
El elemento se está actualizando (la marca de tiempo modificada y también una propiedad ficticia) pero el flujo de trabajo NO se inicia nuevamente.
Este comportamiento es reproducible en nuestro sistema de desarrollo y prueba.
Comprobando los registros de errores (C: / Archivos de programa / Archivos comunes / Microsoft Shared / web server extensions / 12 / LOGS) Descubrí un extraño mensaje de error:
09/25/2008 16:51:40.17 w3wp.exe (0x1D94) 0x1D60 Windows SharePoint Services General 6875 Critical Error loading and running event receiver Microsoft.SharePoint.Workflow.SPWorkflowAutostartEventReceiver in Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c. Additional information is below. : The object specified does not belong to a list.
¿Alguien que pueda confirmar este comportamiento? O cualquier sugerencia de solución?
Lo mantengo informado de cualquier avance en este tema.
Finalmente, pasamos por los procesos de servicios de soporte en Microsoft y obtuvimos una solución.
Primero, Microsoft dijo que esto era un error. Es un error menor, porque hay una buena solución, por lo que puede tomar más tiempo, hasta que este error se solucione (el técnico de soporte dijo algo con el próximo service pack o la próxima versión (!)).
Pero ahora por el problema.
El reaseon
Echemos un vistazo al código CAML de mi pregunta:
<Method ID=''1'' Cmd=''Update''>
<Field Name=''ID''>1</Field>
<Field Name=''myDummyPropertyField''>NewValue</Field>
</Method>
Por alguna razón, Workflow Manager no funciona con la ID, ingresamos en la segunda línea. Extraño, todos los otros comandos de SharePoint están trabajando con el ID, pero no con el Administrador de flujo de trabajo. Workflow Manager funciona con el nombre del documento "totalmente calificado". Entonces, como no teníamos ni idea ni ingresamos ningún nombre de documento totalmente calificado, el Administrador de flujo de trabajo adopta de forma predeterminada el nombre de la biblioteca de documentos actual. Y ahora el mensaje de error comienza a tener sentido:
The object specified does not belong to a list.
Por supuesto, el objeto (biblioteca de documentos) no pertenece a una lista, ES la lista.
La solución
Tenemos que agregar una línea más a nuestra consulta CAML:
<Field Name=''FileRef''>/sites/mySite/myDocLib/myFolder/myDocument.txt</Field>
FileRef transfiere el nombre del documento completamente calificado al Administrador de flujo de trabajo, que, ahora totalmente satisfecho, inicia el flujo de trabajo del elemento.
Tenga cuidado, debe incluir la ruta completa del servidor, omitiendo su nombre de servidor (que se encuentra, por ejemplo, en la propiedad ServerRelativePath de su SPItem).
Completo trabajo CAML Query:
<Method ID=''1'' Cmd=''Update''>
<Field Name=''ID''>1</Field>
<Field Name=''FileRef''>/sites/mySite/myDocLib/myFolder/myDocument.txt</Field>
<Field Name=''myDummyPropertyField''>NewValue</Field>
</Method>
El futuro
Quizás este comportamiento no documentado será reparado en uno de los próximos service packs, quizás no. El soporte técnico de Microsoft se disculpó y lanzará un artículo de MSDN sobre este tema. Para el próximo mes espero que este artículo sobre ayude a los desarrolladores en la misma situación.
¡Gracias por leer!
También me he encontrado con este problema y descubrí que una vez que se inicia un flujo de trabajo, no se puede reiniciar automáticamente, sin importar cómo actualice el elemento. Sin embargo, puede iniciar manualmente el flujo de trabajo nuevamente tantas veces como desee.
Nos enfrentamos a un problema similar con un flujo de trabajo de aprobación. Para resolverlo, escribimos nuestro propio Receptor de eventos y lo adjuntamos a la lista. Dependiendo de si el artículo fue actualizado o editado, disparamos el flujo de trabajo de aprobación.
Espero que esto ayude...
He visto el mismo comportamiento. Pero luego aparece una publicación como esta , que muestra a las personas cómo crear una por día para configurar recordatorios por correo electrónico.