ProcessMaker: Unserialize case APP_DATA and show into a GRID in a DYNAFORM

Referencia: Unserialize case APP_DATA and show into a GRID in a DYNAFORM

Estuve usando ProcessMaker BPM para desarrollar algunos workflows en el trabajo. Como siempre, al final me pidieron reportes.

La cuestión es que Process Maker tiene un modelo de base de datos interesante, y guarda toda la data de los procesos en la tabla APPLICATION, en el campo APP_DATA. La data, en este caso, es guardada serializada. Por tanto, para hacer un reporte, hay que deserializarla.

Process Maker tiene una interfaz web para crear procesos y publicarlos. Así que lo que hicé fue crear un proceso para ver los reportes de otro proceso🙂

Este proceso contiene un trigger:

El código es el siguiente:
————————————————————————
$columns=array(‘NOMBRE’,’DNI’,’RAZONSOCIAL’,’NROTARJETA’,’AREA’,’FECHAPERMISO’);
$pro_uid = ‘7044982914c6e9436a40906053295944′;
$app_status=’COMPLETED’;
$result = executeQuery(“SELECT APP_NUMBER, APP_DATA FROM APPLICATION WHERE APP_STATUS=’$app_status’ AND PRO_UID=’$pro_uid’ ORDER BY APP_CREATE_DATE DESC”);
if (is_array($result) && count($result) > 0)
{
$indicex=1;
foreach ($result as $row){
$aVars = unserialize($row[‘APP_DATA’]);
$temp= array();
$temp[‘APP_NUMBER’]= $row[‘APP_NUMBER’];
foreach($aVars as $key => $value){
if(in_array($key,$columns)){
$temp[$key]=$value;
}
}
@@PERMISOS[$indicex] = $temp;
$indicex++;
}
}
————————————————————————-
$columns array contains the names of the case variables belonging to the process with PRO_UID=’7044982914c6e9436a40906053295944′ in my case.

Make sure the resulting array (@@PERMISOS) starts a index 1: in this case I used $indicex variable to start with 1 and step by 1.

To show it in a Dynaform, just create a Grid form with the same fields like in the $columns variable. Then, put that Grid into a Dynaform. Make sure the grid has the same name as the case variable (in my case @@PERMISOS).

Mas información:

ProcessMaker Wiki

ProcessMaker Forum thread

One response to this post.

  1. Posted by Javier Chogllo on 26 diciembre, 2010 at 17:03

    Hola, no se si puedan ayudarme estoy queriendo cargar los datos de un grid a una tabla pero solo se me carga el primer registro. Les coloco el codigo a continuacion:

    $iRow = count(@=GridRequerimientos);
    $myArray = @=GridRequerimientos;
    $i = 1;
    $repRow = 0;
    for ($i = 1; $i <= $iRow; $i++)
    {

    $repRow = $myArray[$i]['repEquipo'];

    $query = "SELECT DESCRIPCION FROM EQUIPOS WHERE ID='$repRow'";
    $result = executeQuery($query);
    $repSeccion= $result[1]['DESCRIPCION'];
    @@repEquipo = $repSeccion;
    @@repCaracteristicas = $myArray[$i]['repCaracteristicas'];
    @@repJustificacion = $myArray[$i]['repJustificacion'];

    $qry="INSERT INTO REQUERIMIENTOS
    (
    APP_UID,
    REPDATE,
    REPUSERNAME,
    REPDEP,
    REPEQUIPO,
    REPCARACT,
    REPJUST)
    VALUES
    (
    '".@@APPLICATION."',
    '".@@repDate."',
    '".@@repUserName."',
    '".@@repUserDep."',
    '".@@repEquipo."',
    '".@@repCaracteristicas."',
    '".@@repJustificacion."'
    )
    ";
    executeQuery($qry);
    }

    Responder

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: