
- Post History
- Subscribe to RSS Feed
- Mark as New
- Mark as Read
- Bookmark
- Subscribe
- Printer Friendly Page
- Report Inappropriate Content
on 03-27-2018 09:17 AM
Hola a todos
Hoy me tocó enfrentarme a una situación nueva, un workflow con error y que no tenía mucha más información que esa en el mapa del workflow, más allá de que había fallado no había generado los "autorizadores" y el item estaba en "waiting for approval".
Lo primero es ir a ver la dashboard "Workflow Operations Dashboard", que nos da bastante información, sobretodo de los contextos de workflow que han fallado.
Una vez allí, cuando vamos a ver los que están en error, podemos relanzarlos gracias a un script include OOTB específico para ello:
Workflow().restartWorkflow(glideRecord,boolean);
Según pude ver, este script include y método dice lo siguiente:
/**
* Restart workflows associated with a GlideRecord.
*
* If maintainStateFlag is true, then all approvals and tasks will maintain their state. This is used when you want to
* recalculate the approvals and tasks for a workflow by only adding new approvals and tasks that are required without impacting
* the current approvals and tasks. (An example of when this would be used is when adding an affected company to a change
* request. In this case, we want to recalc the approvals so that the new affected company is added as an approver, but none of
* the existing approvals are affected in any way - that is, we do not want to reset all of the approval processing, we just
* want to add the one new affected company approval.)
*/
restartWorkflow: function(/* GlideRecord */current, maintainStateFlag) {
workflowScriptAPI.restartWorkflow(current, maintainStateFlag);
},
Cuando el workflow está en error, tenía esto en su mapa: Un mensaje de error y la hora. No había ninguna actividad en marcha
Si voy a ver el contexto del workflow con el link de "Show context", no tenemos el botón "Nudge" (que permite relanzarlo luego de usar el script include).
Para solucionarlo, segui estos pasos
- Crear un fix script que hace restart del workflow
- Una vez lanzado el fix script, ir al contexto del workflow y darle al botón de "Nudge"
En mi caso, creé un fix script muy simple (y nada dinámico 😞 pero que me ayudó a solventar la situación:
var gr = new GlideRecord("sc_req_item");
gr.addQuery("sys_id", 'sys_id'); //sys_id de sc_req_item. el sc_req_item lo obtengo de la tabla wf_context con aquellos state = faulted, que es lo mismo que muestra la dashboard de los contextos de workflow con error
gr.query();
if (gr.next()) {
new Workflow().restartWorkflow(gr,false);
}
Una vez ejecutado esto, el workflow comienza otra vez, pero se posiciona en el "Begin" y no avanza
Si vamos de nuevo al contexto, ya tenemos el botón de "Nudge" y eso hace que avance el workflow a la siguiente actividad y el workflow siga su camino
En mi caso funcionó. Seguramente si el workflow está para otras tablas sea aplicable este workaround.
Espero que os sirva, a mi me salvó y por eso quise compartirlo
Ariel
PD: por favor marque mi respuesta correcta o útil si le he ayudado. También puede poner un marcador. Gracias
- 406 Views