CÓMO AVANZAR TUS BUSINESS PROCESS FLOWS DE FORMA AUTOMATIZADA (PARTE II)

Existen dos formas de avanzar tus Business Process Flows (BPF) de forma automatizada: del lado del servidor o del lado del cliente. En la primera parte de blog pudimos ver como avanzarlo del lado del cliente con JavaScript y ahora veremos como avanzarlo con Power Automate.


Avanzar el BPF del lado del servidor.


Para ello dentro del entorno en nuestra solución, crearemos un flujo de nube.



Siguiendo con el ejemplo de la primera parte del blog, avanzaremos el BPF cuando se cree el registro y cuando se cambie el campo mar_stage. Luego simplemente incorporaremos los GUIDs de los stage del BPF.


Para obtener estos GUIDs, deberemos ejecutar en una ventana del navegador lo siguiente:

https://org.crm4.dynamics.com/api/data/v9.0/processstages?$select=stagename&$filter=processid/workflowid eq <processID>

Sustituyendo los campos resaltados por los nuestros.


Esto nos mostrará lo siguiente:


{
"@odata.context":"https://org.crm4.dynamics.com/api/data/v9.0/$metadata#processstages(stagename)",
   "value":[
       {
           "@odata.etag":"W/\"761116\"",
           "stagename":"Stage 4",
           "processstageid":"73df2774-b083-4325-9804-845186962671"
       },
       {
           "@odata.etag":"W/\"761118\"",
           "stagename":"Stage 1",
           "processstageid":"7da32b9a-6994-ff0b-0cdc-b9c0c3bde713"
       },
       {
           "@odata.etag":"W/\"761112\"",
           "stagename":"Stage 2",
           "processstageid":"5148b38e-5fcd-4459-98e2-c778710192dd"
       },
       {
           "@odata.etag":"W/\"761114\"",
           "stagename":"Stage 3",
           "processstageid":"97b24b6c-0ac6-4d7d-8388-f47fec8af6fc"
       }
    ]
}

En este código encontraremos los GUID de los stages que tendremos en el BPF para poder preparar nuestros automatismos y hacer que el proceso avance.


Estos GUIDs los incorporaremos en acciones de redactar (compose) o en variables.

Lo siguiente que deberemos hacer es obtener el BPF relacionado con el registro que obtendremos en el desencadenador (trigger). Para ello, incorporaremos la acción enumerar filas (List row) y filtraremos por el GUID del registro del desencadenador.

_bpf_mar_expedienteid_value eq RegistroID

A continuación haremos un parse JSON para obtener el valor de las etiquetas de la salida de esta acción. La salida es una matriz, por lo tanto, en el valor de la acción del parse JSON añadiremos la siguiente expresión con la finalidad de que no nos incorpore un Aplicar a cada uno (Apply to each) ya que solo esperamos que haya un BPF por registro.


first(outputs('Get_BPF')?['body/value']) 

y generaremos el esquema con la salida de la acción Get_BPF



En la siguiente imagen podemos ver las acciones comentadas hasta el momento.



Por ultimo solo nos quedará hacer un switch, al igual que lo hicimos en código en la parte I del blog, pero esta vez con Power Automate.




Con una acción de redactar y la siguiente expresión que concatena el valor del trasversedpath actual del proceso y el GUID del stage, compondremos el nuevo traversedpath según el valor del campo mar_stage.


concat(body('Análisis_del_archivo_JSON')?['traversedpath'],',',outputs('Stage_1_ID'))

Es importante que al finalizar actualicemos la tabla de nuestro BPF para avanzar este proceso indicando en el identificador del registro (Row ID) el valor del businessprocessflowinstanceid obtenido en el parse JSON


Como recomendación, llegados al final del proceso, podemos incorporar una acción que finalice el BPF y que desactive el registro o bien si fuera una Oportunidad de Dynamics 365 crear una actividad de cierre de oportunidad.