arielgritti
Mega Sage

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.

find_real_file.png

 

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

find_real_file.png

 

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).

find_real_file.png

 

Para solucionarlo, segui estos pasos

  1. Crear un fix script que hace restart del workflow
  2. 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

find_real_file.png

 

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

find_real_file.png

 

find_real_file.png

 

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

Version history
Last update:
‎03-27-2018 09:17 AM
Updated by: