Histórico da Página
HTML |
---|
<div id="main-content" class="wiki-content group">
<h3
id="id-7.InteraçãocomoEnginedeWorkflowAtravésdeFormuláriosMetadados-7.1.Objetivo">
<strong>7.1. Objetivo</strong>
</h3>
<p align="LEFT">Permitir que un formulario Metadatos pueda
interactuar con el engine de workflow del Fluig, realizando
operaciones tales como:</p>
<ul>
<ul>
<li><p align="LEFT" class="western">
<span>Iniciar un nuevo proceso (iniciar solicitud)</span>
</p></li>
<li><p align="LEFT" class="western">
<span>Cancelar una solicitud</span>
</p></li>
<li><p align="LEFT" class="western">
<span>Cambiar la fecha de plazo de una tarea</span>
</p></li>
<li><p align="LEFT" class="western">
<span>Cambiar los comentarios de la tarea</span>
</p></li>
<li><p align="LEFT" class="western">
<span>Devolver el valor de un campo de formulario de
workflow</span>
</p></li>
<li><p align="LEFT" class="western">
<span>Mover una solicitud a la próxima actividad</span>
</p></li>
<li><p align="LEFT" class="western">
<span>Seleccionar usuario(s) y promover la actividad
automática</span>
</p></li>
<li><p align="LEFT" class="western">
<span>Asumir una tarea</span>
</p></li>
<li><p align="LEFT" class="western">
<span>Obtener los anexos de una solicitud</span>
</p></li>
<li><p align="LEFT" class="western">
<span>Responder el número de la actividad en que se
encuentra una solicitud</span>
</p></li>
<li><p align="LEFT" class="western">
<span>Responder el número de la próxima actividad de una
solicitud</span>
</p></li>
<li><p align="LEFT" class="western">
<span>Responder con detalles de las actividades disponibles
para la selección</span>
</p></li>
<li><p align="LEFT" class="western">
<span>Responder con los colaboradores que pueden ejecutar la
tarea relativa a una solicitud</span>
</p></li>
<li><p align="LEFT" class="western">
<span>Responder con los procesos para que el colaborador
pueda iniciar una solicitud</span>
</p></li>
<li><p align="LEFT" class="western">
<span>Responder con los colaboradores disponibles en la
apertura de una solicitud</span>
</p></li>
<li><p align="LEFT" class="western">
<span>Busca procesos disponibles para inicialización </span>
</p></li>
</ul>
</ul>
<p align="LEFT">
La interacción con la engine de wokflow se hará a través de códigos
ABLScript utilizando el comando <strong>ECM-REQUEST-SERVICE()</strong>.
Este comando realizará llamadas al <strong>WorkflowEngineService</strong>,
como se muestra en el diagrama siguiente:
</p>
<p align="LEFT">
<img class="confluence-embedded-image image-center"
src="http://tdn.totvs.com/download/attachments/81789205/Screenshot1.png?version=1&modificationDate=1381259170000&api=v2"
data-image-src="http://tdn.totvs.com/download/attachments/81789205/Screenshot1.png?version=1&modificationDate=1381259170000&api=v2">
</p>
<p align="LEFT" style="text-align: center;">
<strong>Gráfico 6.1.a</strong>
</p>
<h3
id="id-7.InteraçãocomoEnginedeWorkflowAtravésdeFormuláriosMetadados-7.2.GuiadeProgramação">
<strong>7.2. Guía de Programación</strong>
</h3>
<p>
<strong>Sintaxis del comando ECM-petición-SERVICE:</strong>
</p>
<div class="code panel pdl" style="border-width: 1px;">
<div class="codeContent panelContent pdl">
<pre class="theme: Confluence; brush: xml; gutter: false"
style="font-size: 12px;">variable = ECM-REQUEST-SERVICE(serviceID, operationId, [param1, param2, param3, ...]).</pre>
</div>
</div>
<p> </p>
<p>
<strong>Donde:</strong>
</p>
<ul>
<li><p align="LEFT" class="western">
<strong>variable</strong>:<span> variable de tipo CHARACTER
que recibirá la respuesta de la ejecución del comando. La respuesta
puede llegar como un character simple, que se podrá convertir a
otro tipo a través de las funciones DECIMAL(), INTEGER() o DATE().
O podrá ser un character JSON que se convertirá en una TEMP-TABLE a
través del a función JSON-DECODE ().</span>
</p></li>
</ul>
<ul>
<li><p align="LEFT" class="western">
<strong>serviceID</strong>:<span> character con el ID del
servicio a ejecutar en Fluig. Para cumplir con los requisitos
definidos en este documento, deberá usarse el <strong>serviceId</strong>=
"<strong>WORKFLOW</strong>". En el futuro se implementarán métodos
para tener acceso a otros servicios de Fluig, como por ejemplo
DocumentService o FolderService.
</span>
</p></li>
</ul>
<ul>
<li><p align="LEFT" class="western">
<strong>operationID</strong>:<span> identifica la operación
(método) a ejecutar en el WorkflowEngineService. Ejemplo:
“START-PROCESS”.</span>
</p></li>
</ul>
<ul>
<li><p align="LEFT" class="western">
<strong>param1, param2, ...</strong>:<span> lista de
parámetros a enviar al servicio.</span>
</p></li>
</ul>
<h3
id="id-7.InteraçãocomoEnginedeWorkflowAtravésdeFormuláriosMetadados-Operações">
<strong>Operações</strong>
</h3>
<p>
<strong>Operación ID: <span style="color: rgb(255, 0, 0);">START-PROCESS</span></strong>
</p>
<p>
<strong>Descripción:</strong> Inicia umnproceso.
</p>
<p>
<strong>Volver:</strong>TempTable
</p>
<p>
<strong>Parámetros:</strong>
</p>
<div class="table-wrap">
<table class="confluenceTable">
<tbody>
<tr>
<th class="confluenceTh">Nombre</th>
<th class="confluenceTh">Tipo</th>
<th class="confluenceTh">Descripción</th>
<th class="confluenceTh">Detalles</th>
</tr>
<tr>
<td class="confluenceTd">processId</td>
<td class="confluenceTd">character</td>
<td class="confluenceTd">Código del proceso</td>
<td class="confluenceTd"> </td>
</tr>
<tr>
<td colspan="1" class="confluenceTd">colleagueIds</td>
<td colspan="1" class="confluenceTd">character</td>
<td colspan="1" class="confluenceTd">Empleados que recibirán
la tarea</td>
<td colspan="1" class="confluenceTd">usar character en el
formato: "colab1,colab2,colab3"</td>
</tr>
<tr>
<td class="confluenceTd">activityNumber</td>
<td class="confluenceTd">int</td>
<td class="confluenceTd">Número de la actividad</td>
<td class="confluenceTd"> </td>
</tr>
<tr>
<td colspan="1" class="confluenceTd">comments</td>
<td colspan="1" class="confluenceTd">character</td>
<td colspan="1" class="confluenceTd">Comentarios</td>
<td colspan="1" class="confluenceTd"> </td>
</tr>
<tr>
<td colspan="1" class="confluenceTd">completeTask</td>
<td colspan="1" class="confluenceTd">logical</td>
<td colspan="1" class="confluenceTd">Indica si debe completar
la tarea (true) o sólamente guardarla (false)</td>
<td colspan="1" class="confluenceTd"> </td>
</tr>
<tr>
<td colspan="1" class="confluenceTd">ttAttachments</td>
<td colspan="1" class="confluenceTd">TempTable</td>
<td colspan="1" class="confluenceTd">Adjuntos de la solicitud</td>
<td colspan="1" class="confluenceTd"><p>DEFINE TEMP-TABLE
ttAttach</p>
<p>    FIELD documentId AS INTEGER</p>
<p>    FIELD documentVersion AS INTEGER</p>
<p>    FIELD description AS CHARACTER</p>
<p>    FIELD filename AS CHARACTER</p>
<p>    FIELD filepath AS CHARACTER</p>
<p>    FIELD principal AS LOGICAL.</p></td>
</tr>
<tr>
<td colspan="1" class="confluenceTd">ttCardData</td>
<td colspan="1" class="confluenceTd">TempTable</td>
<td colspan="1" class="confluenceTd">Datos del formulario</td>
<td colspan="1" class="confluenceTd"><p>DEFINE TEMP-TABLE
ttUsers</p>
<p>    FIELD fieldName AS CHARACTER</p>
<p>    FIELD fieldName AS CHARACTER.</p></td>
</tr>
<tr>
<td colspan="1" class="confluenceTd">ttAppointment</td>
<td colspan="1" class="confluenceTd">TempTable</td>
<td colspan="1" class="confluenceTd">Nombramientos de la tarea</td>
<td colspan="1" class="confluenceTd"><p>DEFINE TEMP-TABLE
ttAppointment</p>
<p>    FIELD appointmentDate AS CHARACTER</p>
<p>    FIELD appointmentSeconds AS INTEGER</p>
<p>    FIELD appointmentSequence AS INTEGER.</p></td>
</tr>
<tr>
<td colspan="1" class="confluenceTd">managerMode</td>
<td colspan="1" class="confluenceTd">logical</td>
<td colspan="1" class="confluenceTd">Indica si el empleado se
encuentra iniciando la solicitud como gestor del proceso.</td>
<td colspan="1" class="confluenceTd"> </td>
</tr>
</tbody>
</table>
</div>
<p> </p>
<p>
<strong>Operation ID:</strong> <span style="color: rgb(255, 0, 0);"><strong>CANCEL-PROCESS</strong></span>
</p>
<p>
<strong>Descripción:</strong> Cancela un proceso.
</p>
<p>
<strong>Volver: character<br /></strong>
</p>
<p>
<strong>Parámetros:</strong>
</p>
<div class="table-wrap">
<table class="confluenceTable">
<tbody>
<tr>
<th class="confluenceTh">Nombre</th>
<th class="confluenceTh">Tipo</th>
<th class="confluenceTh">Descripción</th>
</tr>
<tr>
<td class="confluenceTd">processInstanceId</td>
<td class="confluenceTd">Integer</td>
<td class="confluenceTd">Código del proceso</td>
</tr>
<tr>
<td class="confluenceTd">cancelText</td>
<td class="confluenceTd"><p>character</p></td>
<td class="confluenceTd">Comentarios de la cancelación</td>
</tr>
</tbody>
</table>
</div>
<p>
<strong><br /></strong>
</p>
<p>
<strong>Operación ID: <span style="color: rgb(255, 0, 0);">SET-DUE-DATE</span><br /></strong>
</p>
<p>
<strong>Descripción: </strong>Cambia la fecha de plazo de la tarea.<strong><br /></strong>
</p>
<p>
<strong>Respuesta:</strong> character
</p>
<p>
<strong>Parámetros:</strong>
</p>
<div class="table-wrap">
<table class="confluenceTable">
<tbody>
<tr>
<th class="confluenceTh">Nombre</th>
<th class="confluenceTh">Tipo</th>
<th class="confluenceTh">Descripción</th>
</tr>
<tr>
<td class="confluenceTd">processInstanceId</td>
<td class="confluenceTd">Integer</td>
<td class="confluenceTd">Código del proceso</td>
</tr>
<tr>
<td class="confluenceTd">threadSequence </td>
<td class="confluenceTd">Integer</td>
<td class="confluenceTd"><p>Indica si existe actividad
paralela en el proceso. Si no existe el valor es 0 (cero),</p>
<p>Si está disponible, este valor puede ser desde 1 hasta
infinito dependiendo de la cantidad de actividades</p>
<p>paralelas existentes en el proceso. </p></td>
</tr>
<tr>
<td colspan="1" class="confluenceTd">newDueDate</td>
<td colspan="1" class="confluenceTd">character </td>
<td colspan="1" class="confluenceTd">Nueva fecha de plazo de
la tarea. </td>
</tr>
<tr>
<td colspan="1" class="confluenceTd">timeInSeconds</td>
<td colspan="1" class="confluenceTd">Integer</td>
<td colspan="1" class="confluenceTd">Tiempo de la tarea en
segundos.</td>
</tr>
</tbody>
</table>
</div>
<p> </p>
<p>
<strong>Operación ID: <span style="color: rgb(255, 0, 0);">SET-TASK-COMMENTS</span><br /></strong>
</p>
<p>
<strong>Descripción:</strong> Cambia los resultados de la tarea.
</p>
<p>
<strong>Retorno: </strong>character<strong><br /></strong>
</p>
<p>
<strong>Parámetros:</strong>
</p>
<div class="table-wrap">
<table class="confluenceTable">
<tbody>
<tr>
<th class="confluenceTh">Nombre</th>
<th class="confluenceTh">Tipo</th>
<th class="confluenceTh">Descripción</th>
</tr>
<tr>
<td class="confluenceTd">processInstanceId </td>
<td class="confluenceTd">Integer</td>
<td class="confluenceTd">Código del proceso </td>
</tr>
<tr>
<td class="confluenceTd">threadSequence </td>
<td class="confluenceTd">Integer</td>
<td class="confluenceTd"><p>Indica si existe actividad
paralela en el proceso. Si no existe el valor es 0 (cero),</p>
<p>si está disponible, este valor puede ser desde 1 a infinito
dependiendo de la cantidad de</p>
<p>actividades paralelas existentes en el proceso. </p></td>
</tr>
<tr>
<td colspan="1" class="confluenceTd">comments</td>
<td colspan="1" class="confluenceTd">character</td>
<td colspan="1" class="confluenceTd">Comentario </td>
</tr>
</tbody>
</table>
</div>
<p> </p>
<p>
<strong>Operación ID: <span style="color: rgb(255, 0, 0);">GET-CARD-VALUE</span><br /></strong>
</p>
<p>
<strong>Descripción: </strong>Devuelve el valor de un campo del
formulario.
</p>
<p>
<strong>Respuesta:</strong> character
</p>
<p>
<strong>Parámetros:</strong>
</p>
<div class="table-wrap">
<table class="confluenceTable">
<tbody>
<tr>
<th class="confluenceTh">Nombre</th>
<th class="confluenceTh">Tipo</th>
<th class="confluenceTh">Descripción</th>
</tr>
<tr>
<td class="confluenceTd">processInstanceId</td>
<td class="confluenceTd">Integer</td>
<td class="confluenceTd">Código del proceso</td>
</tr>
<tr>
<td class="confluenceTd">fieldName</td>
<td class="confluenceTd">character</td>
<td class="confluenceTd">Nombre del campo del formulario</td>
</tr>
</tbody>
</table>
</div>
<p> </p>
<p>
<strong>Operación ID: <span style="color: rgb(255, 0, 0);">SAVE-AND-SEND-TASK</span><br /></strong>
</p>
<p>
<strong>Descripción: </strong>Mueve solicitudes hacia la próxima
actividad.<strong><br /></strong>
</p>
<p>
<strong>Respuesta:</strong> TempTable
</p>
<p>
<strong>Parámetros:</strong>
</p>
<div class="table-wrap">
<table class="confluenceTable">
<tbody>
<tr>
<th class="confluenceTh">Nombre</th>
<th class="confluenceTh">Tipo</th>
<th class="confluenceTh">Descripción</th>
<th class="confluenceTh">Detalles</th>
</tr>
<tr>
<td class="confluenceTd">processInstanceId</td>
<td class="confluenceTd">Integer</td>
<td class="confluenceTd">Código del proceso</td>
<td class="confluenceTd"> </td>
</tr>
<tr>
<td colspan="1" class="confluenceTd">colleagueIds</td>
<td colspan="1" class="confluenceTd">character</td>
<td colspan="1" class="confluenceTd">Empleados que recibirán
la tarea</td>
<td colspan="1" class="confluenceTd">usar character en el
formato: "colab1,colab2,colab3"</td>
</tr>
<tr>
<td class="confluenceTd">activityNumber</td>
<td class="confluenceTd">Integer</td>
<td class="confluenceTd">Número de la actividad</td>
<td class="confluenceTd"> </td>
</tr>
<tr>
<td colspan="1" class="confluenceTd">comments</td>
<td colspan="1" class="confluenceTd">character</td>
<td colspan="1" class="confluenceTd">Comentarios</td>
<td colspan="1" class="confluenceTd"> </td>
</tr>
<tr>
<td colspan="1" class="confluenceTd">completeTask</td>
<td colspan="1" class="confluenceTd">logical</td>
<td colspan="1" class="confluenceTd">Indica si debe completar
la tarea (true) o sólamente guardarla (false)</td>
<td colspan="1" class="confluenceTd"> </td>
</tr>
<tr>
<td colspan="1" class="confluenceTd">ttAttachments</td>
<td colspan="1" class="confluenceTd">TempTable</td>
<td colspan="1" class="confluenceTd">Adjuntos de la solicitud</td>
<td colspan="1" class="confluenceTd"><p>DEFINE TEMP-TABLE
ttAttach</p>
<p>    FIELD documentId AS INTEGER</p>
<p>    FIELD documentVersion AS INTEGER</p>
<p>    FIELD description AS CHARACTER</p>
<p>    FIELD filename AS CHARACTER</p>
<p>    FIELD filepath AS CHARACTER</p>
<p>    FIELD principal AS LOGICAL.</p></td>
</tr>
<tr>
<td colspan="1" class="confluenceTd">ttCardData</td>
<td colspan="1" class="confluenceTd">TempTable</td>
<td colspan="1" class="confluenceTd">Datos del formulario</td>
<td colspan="1" class="confluenceTd"><p>DEFINE TEMP-TABLE
ttUsers</p>
<p>    FIELD fieldName AS CHARACTER</p>
<p>    FIELD fieldName AS CHARACTER.</p></td>
</tr>
<tr>
<td colspan="1" class="confluenceTd">ttAppointment</td>
<td colspan="1" class="confluenceTd">TempTable</td>
<td colspan="1" class="confluenceTd">Nombramientos de la tarea</td>
<td colspan="1" class="confluenceTd"><p>DEFINE TEMP-TABLE
ttAppointment</p>
<p>    FIELD appointmentDate AS CHARACTER</p>
<p>    FIELD appointmentSeconds AS INTEGER</p>
<p>    FIELD appointmentSequence AS INTEGER.</p></td>
</tr>
<tr>
<td colspan="1" class="confluenceTd">managerMode</td>
<td colspan="1" class="confluenceTd">logical</td>
<td colspan="1" class="confluenceTd"><p>Indica si el
empleado está iniciando la solicitud como</p>
<p>gestor del proceso.</p></td>
<td colspan="1" class="confluenceTd"> </td>
</tr>
<tr>
<td colspan="1" class="confluenceTd">threadSequence</td>
<td colspan="1" class="confluenceTd">Integer</td>
<td colspan="1" class="confluenceTd"><p>Indica si existe
actividad paralela en el proceso. Si no</p>
<p>existe el valor es 0 (cero). Si está disponible, este valor
puede ser</p>
<p>desde 1 hasta el infinito dependiendo de la cantidad de
actividades</p>
<p>paralelas existentes en el proceso.</p></td>
<td colspan="1" class="confluenceTd"> </td>
</tr>
</tbody>
</table>
</div>
<p> </p>
<p>
<strong>Operación ID: <span style="color: rgb(255, 0, 0);">SAVE-AND-SEND-TASK-BY-REPLACEMENT</span><br /></strong>
</p>
<p>
<strong>Descripción: </strong>Mueve solicitudes hacia la próxima
actividad utilizando usuario sustituto.<strong><br /></strong>
</p>
<p>
<strong>Respuesta </strong>TempTable<strong><br /></strong>
</p>
<p>
<strong>Parámetros:</strong>
</p>
<div class="table-wrap">
<table class="confluenceTable">
<tbody>
<tr>
<th class="confluenceTh">Nombre</th>
<th class="confluenceTh">Tipo</th>
<th class="confluenceTh">Descripción</th>
<th class="confluenceTh">Detalles</th>
</tr>
<tr>
<td class="confluenceTd">processInstanceId</td>
<td class="confluenceTd">Integer</td>
<td class="confluenceTd">Código del proceso</td>
<td class="confluenceTd"> </td>
</tr>
<tr>
<td colspan="1" class="confluenceTd">colleagueIds</td>
<td colspan="1" class="confluenceTd">character</td>
<td colspan="1" class="confluenceTd">Empleados que recibirán
la tarea</td>
<td colspan="1" class="confluenceTd">usar character en el
formato: "colab1,colab2,colab3"</td>
</tr>
<tr>
<td class="confluenceTd">activityNumber</td>
<td class="confluenceTd">Integer</td>
<td class="confluenceTd">Número de la actividad</td>
<td class="confluenceTd"> </td>
</tr>
<tr>
<td colspan="1" class="confluenceTd">comments</td>
<td colspan="1" class="confluenceTd">character</td>
<td colspan="1" class="confluenceTd">Comentarios</td>
<td colspan="1" class="confluenceTd"> </td>
</tr>
<tr>
<td colspan="1" class="confluenceTd">completeTask</td>
<td colspan="1" class="confluenceTd">logical</td>
<td colspan="1" class="confluenceTd">Indica si debe completar
la tarea (true) o sólamente guardarla (false)</td>
<td colspan="1" class="confluenceTd"> </td>
</tr>
<tr>
<td colspan="1" class="confluenceTd">ttAttachments</td>
<td colspan="1" class="confluenceTd">TempTable</td>
<td colspan="1" class="confluenceTd">Adjuntos de la solicitud</td>
<td colspan="1" class="confluenceTd"><p>DEFINE TEMP-TABLE
ttAttach</p>
<p>    FIELD documentId AS INTEGER</p>
<p>    FIELD documentVersion AS INTEGER</p>
<p>    FIELD description AS CHARACTER</p>
<p>    FIELD filename AS CHARACTER</p>
<p>    FIELD filepath AS CHARACTER</p>
<p>    FIELD principal AS LOGICAL.</p></td>
</tr>
<tr>
<td colspan="1" class="confluenceTd">ttCardData</td>
<td colspan="1" class="confluenceTd">TempTable</td>
<td colspan="1" class="confluenceTd">Datos del formulario</td>
<td colspan="1" class="confluenceTd"><p>DEFINE TEMP-TABLE
ttUsers</p>
<p>    FIELD fieldName AS CHARACTER</p>
<p>    FIELD fieldName AS CHARACTER.</p></td>
</tr>
<tr>
<td colspan="1" class="confluenceTd">ttAppointment</td>
<td colspan="1" class="confluenceTd">TempTable</td>
<td colspan="1" class="confluenceTd">Nombramientos de la tarea</td>
<td colspan="1" class="confluenceTd"><p>DEFINE TEMP-TABLE
ttAppointment</p>
<p>    FIELD appointmentDate AS CHARACTER</p>
<p>    FIELD appointmentSeconds AS INTEGER</p>
<p>    FIELD appointmentSequence AS INTEGER.</p></td>
</tr>
<tr>
<td colspan="1" class="confluenceTd">managerMode</td>
<td colspan="1" class="confluenceTd">logical</td>
<td colspan="1" class="confluenceTd"><p>Indica si el
empleado está iniciando la solicitud como</p>
<p>gestor del proceso.</p></td>
<td colspan="1" class="confluenceTd"> </td>
</tr>
<tr>
<td colspan="1" class="confluenceTd">threadSequence</td>
<td colspan="1" class="confluenceTd">Integer</td>
<td colspan="1" class="confluenceTd"><p>Indica si existe
actividad paralela en el proceso. Si</p>
<p>no es el caso, el valor es 0 (cero). Si sí, este valor</p>
<p>puede ser desde 1 a infinito dependiendo de la cantidad de</p>
<p>actividades paralelas existentes en el proceso.</p></td>
<td colspan="1" class="confluenceTd"> </td>
</tr>
<tr>
<td colspan="1" class="confluenceTd">replacementId</td>
<td colspan="1" class="confluenceTd">character</td>
<td colspan="1" class="confluenceTd">Matrícula del empleado
sustituto</td>
<td colspan="1" class="confluenceTd"> </td>
</tr>
</tbody>
</table>
</div>
<p> </p>
<p>
<strong>Operación ID: <span style="color: rgb(255, 0, 0);">SET-AUTOMATIC-DECISION</span><br /></strong>
</p>
<p>
<strong>Descripción: </strong>Selecciona usuario(s) y promueve la
actividad automática<strong>.<br /></strong>
</p>
<p>
<strong>Respuesta </strong>TempTable<strong><br /></strong>
</p>
<p>
<strong>Parámetros:</strong>
</p>
<div class="table-wrap">
<table class="confluenceTable">
<tbody>
<tr>
<th class="confluenceTh">Nombre</th>
<th class="confluenceTh">Tipo</th>
<th class="confluenceTh">Descripción</th>
<th class="confluenceTh">Detalles</th>
</tr>
<tr>
<td class="confluenceTd">processInstanceId</td>
<td class="confluenceTd">Integer</td>
<td class="confluenceTd">Código del proceso</td>
<td class="confluenceTd"> </td>
</tr>
<tr>
<td class="confluenceTd">autoTaskNum</td>
<td class="confluenceTd">Integer</td>
<td class="confluenceTd">Número de actividad automática</td>
<td class="confluenceTd"> </td>
</tr>
<tr>
<td class="confluenceTd">taskNum</td>
<td class="confluenceTd">Integer</td>
<td class="confluenceTd">Número de la actividad actual</td>
<td class="confluenceTd"> </td>
</tr>
<tr>
<td colspan="1" class="confluenceTd">condition</td>
<td colspan="1" class="confluenceTd">Integer</td>
<td colspan="1" class="confluenceTd">Número de la condición de
la actividad automática</td>
<td colspan="1" class="confluenceTd"> </td>
</tr>
<tr>
<td colspan="1" class="confluenceTd">colleagueIds</td>
<td colspan="1" class="confluenceTd">character</td>
<td colspan="1" class="confluenceTd">Empleados que recibirán
la tarea</td>
<td colspan="1" class="confluenceTd">usar character en el
formato: "colab1,colab2,colab3"</td>
</tr>
<tr>
<td colspan="1" class="confluenceTd">comments</td>
<td colspan="1" class="confluenceTd">character</td>
<td colspan="1" class="confluenceTd">Comentarios</td>
<td colspan="1" class="confluenceTd"> </td>
</tr>
<tr>
<td colspan="1" class="confluenceTd">managerMode</td>
<td colspan="1" class="confluenceTd">logical</td>
<td colspan="1" class="confluenceTd">Indica si el empleado
está ejecutando la tarea como gestor del proceso</td>
<td colspan="1" class="confluenceTd"> </td>
</tr>
<tr>
<td colspan="1" class="confluenceTd">threadSequence</td>
<td colspan="1" class="confluenceTd">Integer</td>
<td colspan="1" class="confluenceTd"><p>Indica si existe
actividad paralela en el proceso. De no haber, el valor es 0
(cero),</p>
<p>si está disponible, este valor puede ser desde 1 a infinito
dependiendo de la cantidad de</p>
<p>actividades paralelas existentes en el proceso.</p></td>
<td colspan="1" class="confluenceTd"> </td>
</tr>
</tbody>
</table>
</div>
<p> </p>
<p>
<strong>Operación ID: <span style="color: rgb(255, 0, 0);">TAKE-PROCESS-TASK</span><br /></strong>
</p>
<p>
<strong>Descripción: </strong>Asume una tarea<strong>.<br /></strong>
</p>
<p>
<strong>Respuesta:</strong> character
</p>
<p>
<strong>Parámetros:</strong>
</p>
<div class="table-wrap">
<table class="confluenceTable">
<tbody>
<tr>
<th class="confluenceTh">Nombre</th>
<th class="confluenceTh">Tipo</th>
<th class="confluenceTh">Descripción</th>
</tr>
<tr>
<td class="confluenceTd">processInstanceId</td>
<td class="confluenceTd">Integer</td>
<td class="confluenceTd">Código del proceso</td>
</tr>
<tr>
<td class="confluenceTd">threadSequence</td>
<td class="confluenceTd">Integer</td>
<td class="confluenceTd"><p>Indica si existe actividad
paralela en el proceso. De no haber, el valor es 0 (cero),</p>
<p>si está disponible, este valor puede ser desde 1 a infinito
dependiendo de la cantidad de</p>
<p>actividades paralelas existentes en el proceso.</p></td>
</tr>
</tbody>
</table>
</div>
<p> </p>
<p>
<strong>Operación ID: <span style="color: rgb(255, 0, 0);">TAKE-PROCESS-TASK-BY-REPLACEMENT</span><br /></strong>
</p>
<p>
<strong>Descripción: </strong>Asume una tarea utilizando un usuario
sustituto<strong>.<br /></strong>
</p>
<p>
<strong>Respuesta:</strong> character
</p>
<p>
<strong>Parámetros:</strong>
</p>
<div class="table-wrap">
<table class="confluenceTable">
<tbody>
<tr>
<th class="confluenceTh">Nombre</th>
<th class="confluenceTh">Tipo</th>
<th class="confluenceTh">Descripción</th>
</tr>
<tr>
<td class="confluenceTd">processInstanceId</td>
<td class="confluenceTd">Integer</td>
<td class="confluenceTd">Código del proceso</td>
</tr>
<tr>
<td class="confluenceTd">threadSequence</td>
<td class="confluenceTd">Integer</td>
<td class="confluenceTd"><p>Indica si existe actividad
paralela en el proceso. De no haber, el valor es 0 (cero),</p>
<p>si está disponible, este valor puede ser desde 1 a infinito
dependiendo de la cantidad de</p>
<p>actividades paralelas existentes en el proceso.</p></td>
</tr>
<tr>
<td colspan="1" class="confluenceTd">replacementId</td>
<td colspan="1" class="confluenceTd">character</td>
<td colspan="1" class="confluenceTd">Matrícula del empleado
sustituto.</td>
</tr>
</tbody>
</table>
</div>
<p> </p>
<p>
<strong>Operación ID: <span style="color: rgb(255, 0, 0);">GET-ATTACHMENTS</span><br /></strong>
</p>
<p>
<strong>Descripción: </strong>Devuelve los anexos de una solicitud<strong><br /></strong>
</p>
<p>
<strong>Respuesta </strong>TempTable<strong><br /></strong>
</p>
<p>
<strong>Parámetros:</strong>
</p>
<div class="table-wrap">
<table class="confluenceTable">
<tbody>
<tr>
<th class="confluenceTh">Nombre</th>
<th class="confluenceTh">Tipo</th>
<th class="confluenceTh">Descripción</th>
</tr>
<tr>
<td class="confluenceTd">processInstanceId</td>
<td class="confluenceTd">Integer</td>
<td class="confluenceTd">Código del proceso</td>
</tr>
</tbody>
</table>
</div>
<p> </p>
<p>
<strong>Operación ID: <span style="color: rgb(255, 0, 0);">GET-ALL-ACTIVE-STATES</span><br /></strong>
</p>
<p>
<strong>Descripción: </strong>Devuelve el número de la actividad está
una solicitud.
</p>
<p>
<strong>Respuesta:</strong> TempTable
</p>
<p>
<strong>Parámetros:</strong>
</p>
<div class="table-wrap">
<table class="confluenceTable">
<tbody>
<tr>
<th class="confluenceTh">Nombre</th>
<th class="confluenceTh">Tipo</th>
<th class="confluenceTh">Descripción</th>
</tr>
<tr>
<td class="confluenceTd">processInstanceId</td>
<td class="confluenceTd">Integer</td>
<td class="confluenceTd">Código del proceso</td>
</tr>
</tbody>
</table>
</div>
<p> </p>
<p>
<strong>Operación ID: <span style="color: rgb(255, 0, 0);">GET-ACTUAL-THREAD</span><br /></strong>
</p>
<p>
<strong>Descripción:</strong> Responde con la secuencia de la thread
de una solicitud.
</p>
<p>
<strong>Respuesta </strong>TempTable<strong><br /></strong>
</p>
<p>
<strong>Parámetros:</strong>
</p>
<div class="table-wrap">
<table class="confluenceTable">
<tbody>
<tr>
<th class="confluenceTh">Nombre</th>
<th class="confluenceTh">Tipo</th>
<th class="confluenceTh">Descripción</th>
</tr>
<tr>
<td class="confluenceTd">processInstanceId</td>
<td class="confluenceTd">Integer</td>
<td class="confluenceTd">Código del proceso</td>
</tr>
<tr>
<td class="confluenceTd">stateSequence</td>
<td class="confluenceTd">Integer</td>
<td class="confluenceTd">Secuencia del estado</td>
</tr>
</tbody>
</table>
</div>
<p> </p>
<p>
<strong>Operación ID: <span style="color: rgb(255, 0, 0);">GET-AVAILABLE-STATES</span><br /></strong>
</p>
<p>
<strong>Descripción: </strong>Responde con el número de la próxima
actividad de una solicitud<strong>.<br /></strong>
</p>
<p>
<strong>Respuesta </strong>TempTable<strong><br /></strong>
</p>
<p>
<strong>Parámetros:</strong>
</p>
<div class="table-wrap">
<table class="confluenceTable">
<tbody>
<tr>
<th class="confluenceTh">Nombre</th>
<th class="confluenceTh">Tipo</th>
<th class="confluenceTh">Descripción</th>
</tr>
<tr>
<td class="confluenceTd">processId</td>
<td class="confluenceTd">character</td>
<td class="confluenceTd">Código del proceso</td>
</tr>
<tr>
<td class="confluenceTd">processInstanceId</td>
<td class="confluenceTd">Integer</td>
<td class="confluenceTd">Código del proceso</td>
</tr>
<tr>
<td class="confluenceTd">threadSequence</td>
<td class="confluenceTd">Integer</td>
<td class="confluenceTd"><p>Indica si existe actividad
paralela en el proceso. De no haber, el valor es 0 (cero),</p>
<p>si está disponible, este valor puede ser desde 1 a infinito
dependiendo de la cantidad de</p>
<p>actividades paralelas existentes en el proceso.</p></td>
</tr>
</tbody>
</table>
</div>
<p> </p>
<p>
<strong>Operación ID: <span style="color: rgb(255, 0, 0);">GET-AVAILABLE-STATES-DETAIL</span><br /></strong>
</p>
<p>
<strong>Descripción:</strong> Responde con detalles de las actividades
disponibles para la selección.
</p>
<p>
<strong>Respuesta: </strong>TempTable<strong><br /></strong>
</p>
<p>
<strong>Parámetros:</strong>
</p>
<div class="table-wrap">
<table class="confluenceTable">
<tbody>
<tr>
<th class="confluenceTh">Nombre</th>
<th class="confluenceTh">Tipo</th>
<th class="confluenceTh">Descripción</th>
</tr>
<tr>
<td class="confluenceTd">processId</td>
<td class="confluenceTd">character</td>
<td class="confluenceTd">Código del proceso</td>
</tr>
<tr>
<td class="confluenceTd">processInstanceId</td>
<td class="confluenceTd">Integer</td>
<td class="confluenceTd">Código del proceso</td>
</tr>
<tr>
<td class="confluenceTd">threadSequence</td>
<td class="confluenceTd">Integer</td>
<td class="confluenceTd"><p>Indica si existe actividad
paralela en el proceso. De no haber, el valor es 0 (cero),</p>
<p>si está disponible, este valor puede ser desde 1 a infinito
dependiendo de la cantidad de</p>
<p>actividades paralelas existentes en el proceso.</p></td>
</tr>
</tbody>
</table>
</div>
<p> </p>
<p>
<strong>Operación ID: <span style="color: rgb(255, 0, 0);">GET-AVAILABLE-USERS</span><br /></strong>
</p>
<p>
<strong>Descripción: </strong>Responde con los empleados que pueden
ejecutar la tarea corriente de una solicitud.<strong><br /></strong>
</p>
<p>
<strong>Respuesta: </strong>TempTable<strong><br /></strong>
</p>
<p>
<strong>Parámetros:</strong>
</p>
<div class="table-wrap">
<table class="confluenceTable">
<tbody>
<tr>
<th class="confluenceTh">Nombre</th>
<th class="confluenceTh">Tipo</th>
<th class="confluenceTh">Descripción</th>
</tr>
<tr>
<td class="confluenceTd">processInstanceId</td>
<td class="confluenceTd">Integer</td>
<td class="confluenceTd">Código del proceso</td>
</tr>
<tr>
<td class="confluenceTd">taskNumber</td>
<td class="confluenceTd">Integer</td>
<td class="confluenceTd">Número de la actividad</td>
</tr>
<tr>
<td class="confluenceTd">threadSequence</td>
<td class="confluenceTd">Integer</td>
<td class="confluenceTd"><p>Indica si existe actividad
paralela en el proceso. De no haber, el valor es 0 (cero),</p>
<p>si está disponible, este valor puede ser desde 1 a infinito
dependiendo de la cantidad de</p>
<p>actividades paralelas existentes en el proceso.</p></td>
</tr>
</tbody>
</table>
</div>
<p> </p>
<p>
<strong>Operación ID: <span style="color: rgb(255, 0, 0);">GET-INSTANCE-CARD-DATA</span><br /></strong>
</p>
<p>
<strong>Descripción: </strong>Devuelve el valor de los campos de un
formulario<strong>.<br /></strong>
</p>
<p>
<strong>Respuesta: </strong>TempTable<strong><br /></strong>
</p>
<p>
<strong>Parámetros:</strong>
</p>
<div class="table-wrap">
<table class="confluenceTable">
<tbody>
<tr>
<th class="confluenceTh">Nombre</th>
<th class="confluenceTh">Tipo</th>
<th class="confluenceTh">Descripción</th>
</tr>
<tr>
<td class="confluenceTd">processInstanceId</td>
<td class="confluenceTd">Integer</td>
<td class="confluenceTd">Código del proceso</td>
</tr>
</tbody>
</table>
</div>
<p> </p>
<p>
<strong>Operación ID: <span style="color: rgb(255, 0, 0);">GET-AVAILABLE-PROCESS</span><br /></strong>
</p>
<p>
<strong>Descripción:</strong> Responde con los procesos para que el
empleado pueda iniciar una solicitud.
</p>
<p>
<strong>Respuesta: </strong>TempTable<strong><br /></strong>
</p>
<p>
<strong><br /></strong>
</p>
<p>
<strong>Operación ID: <span style="color: rgb(255, 0, 0);">GET-AVAILABLE-USERS-START</span><br /></strong>
</p>
<p>
<strong>Descripción: </strong>Responde con los empleados disponibles
en la apertura de una solicitud.<strong><br /></strong>
</p>
<p>
<strong>Respuesta: </strong>TempTable<strong><br /></strong>
</p>
<p>
<strong>Parámetros:</strong>
</p>
<div class="table-wrap">
<table class="confluenceTable">
<tbody>
<tr>
<th class="confluenceTh">Nombre</th>
<th class="confluenceTh">Tipo</th>
<th class="confluenceTh">Descripción</th>
</tr>
<tr>
<td class="confluenceTd">processId</td>
<td class="confluenceTd">character</td>
<td class="confluenceTd">Código del proceso</td>
</tr>
<tr>
<td class="confluenceTd">taskNum</td>
<td class="confluenceTd">Integer</td>
<td class="confluenceTd">Número de la actividad</td>
</tr>
<tr>
<td class="confluenceTd">threadSequence</td>
<td class="confluenceTd">Integer</td>
<td class="confluenceTd"><p>Indica si existe actividad
paralela en el proceso. De no haber, el valor es 0 (cero),</p>
<p>si está disponible, este valor puede ser desde 1 a infinito
dependiendo de la cantidad de</p>
<p>actividades paralelas existentes en el proceso.</p></td>
</tr>
</tbody>
</table>
</div>
<p> </p>
<p>
<strong>Operación ID: <span style="color: rgb(255, 0, 0);">SEARCH-PROCESS</span><br /></strong>
</p>
<p>
<strong>Descripción: </strong>Busca procesos disponibles para la
inicialización<strong>.<br /></strong>
</p>
<p>
<strong>Respuesta: </strong>TempTable<strong><br /></strong>
</p>
<p>
<strong>Parámetros:</strong>
</p>
<div class="table-wrap">
<table class="confluenceTable">
<tbody>
<tr>
<th class="confluenceTh">Nombre</th>
<th class="confluenceTh">Tipo</th>
<th class="confluenceTh">Descripción</th>
</tr>
<tr>
<td class="confluenceTd">content</td>
<td class="confluenceTd">character</td>
<td class="confluenceTd">Nome do processo a ser pesquisado</td>
</tr>
<tr>
<td class="confluenceTd">favorite</td>
<td class="confluenceTd">logical</td>
<td class="confluenceTd">Búsqueda de la lista de favoritos o
de la lista predeterminada.</td>
</tr>
</tbody>
</table>
</div>
<p> </p>
<h3
id="id-7.InteraçãocomoEnginedeWorkflowAtravésdeFormuláriosMetadados-ExemplodeUso">
<u>Ejemplo de Uso</u>
</h3>
<p>
A continuación veremos un ejemplo de formulario Freeform del Metadatos
Datasul que realiza algunas operaciones con el comando <strong>ECM-REQUEST-SERVICE</strong>.
</p>
<p>
<img class="confluence-embedded-image image-center"
src="http://tdn.totvs.com/download/attachments/81789205/TesteWorkflow1.png?version=1&modificationDate=1381343934000&api=v2"
data-image-src="http://tdn.totvs.com/download/attachments/81789205/TesteWorkflow1.png?version=1&modificationDate=1381343934000&api=v2">
</p>
<p style="text-align: center;">
<strong>Gráfico 6.2.a</strong>
</p>
<p>
El gráfico 6.2.a muestra un formulario que al cargarse realiza la
búsqueda de los procesos disponibles para el usuario registrado y
presenta los mismos en un grid. En el Gráfico 6.2.a se seleccionó el
proceso "Proc3" que posee un formulario asociado. Se informaron los
campos del formulario y datos de nombramiento. Finalmente el usuario
hizo clic en el botón START-PROCESS que creó una nueva instancia del
proceso, resultando en el <em>process ID</em> 119.
</p>
<p>A continuación se presentarán los diversos scripts del
formulario.</p>
<h4
id="id-7.InteraçãocomoEnginedeWorkflowAtravésdeFormuláriosMetadados-varDefinition">varDefinition</h4>
<div class="code panel pdl" style="border-width: 1px;">
<div class="codeContent panelContent pdl">
<pre class="theme: Eclipse; brush: plain; gutter: true"
style="font-size: 12px;">/* Inicio WIDGET-HANDLE - No editar, utilice CTRL + SHIFT + H */
DEFINE VARIABLE txtComment AS WIDGET-HANDLE.
DEFINE VARIABLE txtDescricao AS WIDGET-HANDLE.
DEFINE VARIABLE canvasCard AS WIDGET-HANDLE.
DEFINE VARIABLE txtCodigo AS WIDGET-HANDLE.
DEFINE VARIABLE lblProcList AS WIDGET-HANDLE.
DEFINE VARIABLE canvasAppointment AS WIDGET-HANDLE.
DEFINE VARIABLE lblProcInstId AS WIDGET-HANDLE.
DEFINE VARIABLE lblAttach AS WIDGET-HANDLE.
DEFINE VARIABLE txtProcInstId AS WIDGET-HANDLE.
DEFINE VARIABLE lblApp AS WIDGET-HANDLE.
DEFINE VARIABLE gridProcess AS WIDGET-HANDLE.
DEFINE VARIABLE dtf AS WIDGET-HANDLE.
DEFINE VARIABLE canvasAttach AS WIDGET-HANDLE.
DEFINE VARIABLE txtSec AS WIDGET-HANDLE.
DEFINE VARIABLE lblForm AS WIDGET-HANDLE.
/* Fim WIDGET-HANDLE */
DEFINE VARIABLE resp AS CHARACTER.
DEFINE VARIABLE ttResult AS TEMP-TABLE.</pre>
</div>
</div>
<h4
id="id-7.InteraçãocomoEnginedeWorkflowAtravésdeFormuláriosMetadados-Canvas.creationComplete">Canvas.creationComplete</h4>
<div class="code panel pdl" style="border-width: 1px;">
<div class="codeContent panelContent pdl">
<pre class="theme: Eclipse; brush: plain; gutter: true"
style="font-size: 12px;">PROCESS-WAIT(TRUE).
/* Seta estilos de alguns componentes */
CALLFUNCTION(lblProcList, "setStyle", "fontSize", 11).
CALLFUNCTION(lblProcList, "setStyle", "fontWeight", "bold").
CALLFUNCTION(lblProcInstId, "setStyle", "fontSize", 11).
CALLFUNCTION(lblProcInstId, "setStyle", "fontWeight", "bold").
CALLFUNCTION(canvasAttach, "setStyle", "backgroundColor", "#d9dbe1").
CALLFUNCTION(lblAttach, "setStyle", "fontSize", 11).
CALLFUNCTION(lblAttach, "setStyle", "fontWeight", "bold").
CALLFUNCTION(canvasCard, "setStyle", "backgroundColor", "#d9dbe1").
CALLFUNCTION(lblForm, "setStyle", "fontWeight", "bold").
CALLFUNCTION(canvasAppointment, "setStyle", "backgroundColor", "#d9dbe1").
CALLFUNCTION(lblApp, "setStyle", "fontWeight", "bold").
/* Obtiene los procesos disponibles para el usuario */
resp = ECM-REQUEST-SERVICE("WORKFLOW", "GET-AVAILABLE-PROCESSES").
if RESULT-WITH-ERROR(resp) THEN DO:
MESSAGE resp
VIEW-AS ALERT-BOX ERROR
TITLE "Error al ejecutar GET-AVAILABLE-PROCESS".
ELSE DO:
ttResult = JSON-DECODE(resp).
gridProcess:QUERY-OPEN(ttResult).
END.
PROCESS-WAIT(FALSE).</pre>
</div>
</div>
<h4
id="id-7.InteraçãocomoEnginedeWorkflowAtravésdeFormuláriosMetadados-btoStartProcess.click">btoStartProcess.click</h4>
<div class="code panel pdl" style="border-width: 1px;">
<div class="codeContent panelContent pdl">
<pre class="theme: Eclipse; brush: plain; gutter: true"
style="font-size: 12px;">DEFINE VARIABLE idx AS INTEGER.
DEFINE VARIABLE processId AS CHARACTER.
DEFINE VARIABLE procComment AS CHARACTER.
DEFINE VARIABLE aux AS CHARACTER.
DEFINE VARIABLE once AS LOGICAL INITIAL true.
DEFINE VARIABLE dt AS DATE.
DEFINE VARIABLE iaux AS INTEGER.
/* Obtiene el proceso seleccionado en el Grid */
idx = GETPROPERTY(gridProcess, "selectedIndex").
ttResult:SET-CURRENT(idx).
processId = ttResult.processId.
/* Obtiene el comentario */
procComment = txtComment:SCREEN-VALUE.
/* Obtiene archivos a adjuntar del componente de upload*/
DEFINE VARIABLE upload AS WIDGET-HANDLE.
DEFINE TEMP-TABLE ttFiles
FIELD name AS CHARACTER
FIELD type AS CHARACTER
FIELD appServerPath AS CHARACTER
FIELD jbossPath AS CHARACTER
FIELD size AS DECIMAL.
ttFiles = GETPROPERTY(upload,"files").
/* Prepara Temp-Table de archivos adjuntos */
DEFINE TEMP-TABLE ttAttach
FIELD documentId AS INTEGER
FIELD documentVersion AS INTEGER
FIELD description AS CHARACTER
FIELD filename AS CHARACTER
FIELD filepath AS CHARACTER
FIELD principal AS LOGICAL.
FOR EACH ttFiles:
CREATE ttAttach.
ttAttach.documentVersion = 1000.
ttAttach.description = ttFiles.name.
ttAttach.filename = ttFiles.name.
ttAttach.filepath = ttFiles.jbossPath.
IF once THEN DO:
ttAttach.principal = true.
once = false.
END.
END.
/* Prepara Temp-Table con valores del formulario */
DEFINE TEMP-TABLE ttUsers
FIELD fieldName AS CHARACTER
FIELD fieldName AS CHARACTER.
CREATE ttCard.
ttCard.fieldName = "A1_CODIGO".
aux = txtCodigo:SCREEN-VALUE.
ttCard.fieldValue = aux.
CREATE ttCard.
ttCard.fieldName = "A1_DESCRICAO".
aux = txtDescripción:SCREEN-VALUE.
ttCard.fieldValue = aux.
/* Prepara Temp-Table con valores de Nombramiento */
DEFINE TEMP-TABLE ttAppointment
FIELD appointmentDate AS CHARACTER
FIELD appointmentSeconds AS INTEGER
FIELD appointmentSequence AS INTEGER.
aux = txtSec:SCREEN-VALUE.
IF aux <> "" THEN DO:
CREATE ttAppointment.
dt = GETPROPERTY(dtf, "selectedDate").
aux = STRING(dt, "99/99/9999").
aux = aux + " 00:00:00".
ttAppointment.appointmentDate = aux.
iaux = INTEGER(txtSec:SCREEN-VALUE).
ttAppointment.appointmentSeconds = iaux.
ttAppointment.appointmentSequence = 1.
END.
/* Inicia el proceso */
resp = ECM-REQUEST-SERVICE("WORKFLOW", "START-PROCESS", processId, "framework", 2, procComment, true, ttAttach, ttCard, ttAppointment, false).
IF RESULT-WITH-ERROR(resp) THEN DO:
MESSAGE resp
VIEW-AS ALERT-BOX ERROR
TITLE "Error al ejecutar START-PROCESS".
ELSE DO:
txtProcInstId:SCREEN-VALUE = resp.
END.</pre>
</div>
</div>
<p> </p>
<h4
id="id-7.InteraçãocomoEnginedeWorkflowAtravésdeFormuláriosMetadados-btoCancelProcess.click">btoCancelProcess.click</h4>
<div class="code panel pdl" style="border-width: 1px;">
<div class="codeContent panelContent pdl">
<pre class="theme: Eclipse; brush: plain; gutter: true"
style="font-size: 12px;">DEFINE VARIABLE processInstId AS INTEGER.
processInstId = INTEGER(txtProcInstId:SCREEN-VALUE).
/* Si la cancelación estuvo Ok regresa a 'true', sino vuelve el mensaje de error */
resp = ECM-REQUEST-SERVICE("WORKFLOW", "CANCEL-PROCESS", processInstId, "¡Finaliza proceso!").
IF RESULT-WITH-ERROR(resp) THEN DO:
MESSAGE resp
VIEW-AS ALERT-BOX ERROR
TITLE "Error al ejecutar GET-AVAILABLE-PROCESS".
ELSE DO:
MESSAGE "¡Proceso cancelado con éxito!"
VIEW-AS ALERT-BOX INFORMATION
TITLE "CANCEL-PROCESS".
txtProcInstId:SCREEN-VALUE = "".
END.</pre>
</div>
</div>
<h4
id="id-7.InteraçãocomoEnginedeWorkflowAtravésdeFormuláriosMetadados-btoGetCardData.click">btoGetCardData.click</h4>
<div class="code panel pdl" style="border-width: 1px;">
<div class="codeContent panelContent pdl">
<pre class="theme: Eclipse; brush: plain; gutter: true"
style="font-size: 12px;">DEFINE VARIABLE procInstId AS INTEGER.
procInstId = INTEGER(txtProcInstId:SCREEN-VALUE).
/* Obtiene un campo por vez: GET-CARD-VALUE
resp = ECM-REQUEST-SERVICE("WORKFLOW", "GET-CARD-VALUE", procInstId, "A1_CODIGO").
IF RESULT-WITH-ERROR(resp) THEN DO:
MESSAGE resp
VIEW-AS ALERT-BOX ERROR
TITLE "Error al ejecutar GET-CARD-VALUE".
ELSE DO:
txtCodigo:SCREEN-VALUE = resp.
END.
resp = ECM-REQUEST-SERVICE("WORKFLOW", "GET-CARD-VALUE", procInstId, "A1_DESCRICAO").
IF RESULT-WITH-ERROR(resp) THEN DO:
MESSAGE resp
VIEW-AS ALERT-BOX ERROR
TITLE "Error al ejecutar GET-CARD-VALUE".
ELSE DO:
txtDescricao:SCREEN-VALUE = resp.
END. */
/* Obtiene todos los campos del formulario: GET-INSTANCE-CARD-DATA */
resp = ECM-REQUEST-SERVICE("WORKFLOW", "GET-INSTANCE-CARD-DATA", procInstId).
DEFINE VARIABLE ttCard AS TEMP-TABLE.
DEFINE VARIABLE fieldName AS CHARACTER.
DEFINE VARIABLE fieldValue AS CHARACTER.
IF RESULT-WITH-ERROR(resp) THEN DO:
MESSAGE resp
VIEW-AS ALERT-BOX ERROR
TITLE "Error al ejecutar GET-INSTANCE-CARD-DATA".
ELSE DO:
ttCard = JSON-DECODE(resp).
FOR EACH ttCard:
fieldName = ttCard.fieldName.
fieldValue = ttCard.fieldValue.
IF fieldName = "A1_CODIGO" THEN DO:
txtCodigo:SCREEN-VALUE = fieldValue.
END.
IF fieldName = "A1_DESCRICAO" THEN DO:
txtDescricao:SCREEN-VALUE = fieldValue.
END.
END.
END.</pre>
</div>
</div>
<h4
id="id-7.InteraçãocomoEnginedeWorkflowAtravésdeFormuláriosMetadados-btoAvailableUsers.click">btoAvailableUsers.click</h4>
<div class="code panel pdl" style="border-width: 1px;">
<div class="codeContent panelContent pdl">
<pre class="theme: Eclipse; brush: plain; gutter: true"
style="font-size: 12px;">DEFINE VARIABLE procInstId AS INTEGER.
procInstId = INTEGER(txtProcInstId:SCREEN-VALUE).
/* Obtiene lista de usuarios para tarea */
resp = ECM-REQUEST-SERVICE("WORKFLOW", "GET-AVAILABLE-USERS", procInstId, 2, 0).
DEFINE VARIABLE ttUsers AS TEMP-TABLE.
IF RESULT-WITH-ERROR(resp) THEN DO:
MESSAGE resp
VIEW-AS ALERT-BOX ERROR
TITLE "Error al ejecutar GET-AVAILABLE-USERS".
ELSE DO:
ttUsers = JSON-DECODE(resp).
FOR EACH ttUsers:
DISPLAY ttUsers.user.
END.
END.</pre>
</div>
</div>
<h4
id="id-7.InteraçãocomoEnginedeWorkflowAtravésdeFormuláriosMetadados-btoTakeTask.click">btoTakeTask.click</h4>
<div class="code panel pdl" style="border-width: 1px;">
<div class="codeContent panelContent pdl">
<pre class="theme: Eclipse; brush: plain; gutter: true"
style="font-size: 12px;">DEFINE VARIABLE procInstId AS INTEGER.
/* Obtiene el process instance Id */
procInstId = INTEGER(txtProcInstId:SCREEN-VALUE).
/* Asume tarea corriente */
resp = ECM-REQUEST-SERVICE("WORKFLOW", "TAKE-PROCESS-TASK", procInstId, 0).
IF RESULT-WITH-ERROR(resp) THEN DO:
MESSAGE resp
VIEW-AS ALERT-BOX ERROR
TITLE "Error al ejecutar TAKE-PROCESS-TASK".
ELSE DO:
DISPLAY resp.
END.</pre>
</div>
</div>
</div> |
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas