Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
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>&#160;</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">&#160;</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">&#160;</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">&#160;</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">&#160;</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>&#160;&#160;&#160; FIELD documentId AS INTEGER</p>
						<p>&#160;&#160;&#160; FIELD documentVersion AS INTEGER</p>
						<p>&#160;&#160;&#160; FIELD description AS CHARACTER</p>
						<p>&#160; &#160; FIELD filename AS CHARACTER</p>
						<p>&#160;&#160;&#160; FIELD filepath AS CHARACTER</p>
						<p>&#160;&#160;&#160; 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>&#160; &#160; FIELD fieldName AS CHARACTER</p>
						<p>&#160; &#160; 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>&#160;&#160;&#160; FIELD appointmentDate AS CHARACTER</p>
						<p>&#160;&#160;&#160; FIELD appointmentSeconds AS INTEGER</p>
						<p>&#160; &#160; 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">&#160;</td>
				</tr>
			</tbody>
		</table>
	</div>
	<p>&#160;</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&#160;</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.&#160;</p></td>
				</tr>
				<tr>
					<td colspan="1" class="confluenceTd">newDueDate</td>
					<td colspan="1" class="confluenceTd">character&#160;</td>
					<td colspan="1" class="confluenceTd">Nueva fecha de plazo de
						la tarea.&#160;</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>&#160;</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&#160;</td>
					<td class="confluenceTd">Integer</td>
					<td class="confluenceTd">Código del proceso&#160;</td>
				</tr>
				<tr>
					<td class="confluenceTd">threadSequence&#160;</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.&#160;</p></td>
				</tr>
				<tr>
					<td colspan="1" class="confluenceTd">comments</td>
					<td colspan="1" class="confluenceTd">character</td>
					<td colspan="1" class="confluenceTd">Comentario&#160;</td>
				</tr>
			</tbody>
		</table>
	</div>
	<p>&#160;</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>&#160;</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">&#160;</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">&#160;</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">&#160;</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">&#160;</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>&#160;&#160;&#160; FIELD documentId AS INTEGER</p>
						<p>&#160;&#160;&#160; FIELD documentVersion AS INTEGER</p>
						<p>&#160;&#160;&#160; FIELD description AS CHARACTER</p>
						<p>&#160; &#160; FIELD filename AS CHARACTER</p>
						<p>&#160;&#160;&#160; FIELD filepath AS CHARACTER</p>
						<p>&#160;&#160;&#160; 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>&#160; &#160; FIELD fieldName AS CHARACTER</p>
						<p>&#160; &#160; 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>&#160;&#160;&#160; FIELD appointmentDate AS CHARACTER</p>
						<p>&#160;&#160;&#160; FIELD appointmentSeconds AS INTEGER</p>
						<p>&#160; &#160; 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">&#160;</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">&#160;</td>
				</tr>
			</tbody>
		</table>
	</div>
	<p>&#160;</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">&#160;</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">&#160;</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">&#160;</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">&#160;</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>&#160;&#160;&#160; FIELD documentId AS INTEGER</p>
						<p>&#160;&#160;&#160; FIELD documentVersion AS INTEGER</p>
						<p>&#160;&#160;&#160; FIELD description AS CHARACTER</p>
						<p>&#160; &#160; FIELD filename AS CHARACTER</p>
						<p>&#160;&#160;&#160; FIELD filepath AS CHARACTER</p>
						<p>&#160;&#160;&#160; 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>&#160; &#160; FIELD fieldName AS CHARACTER</p>
						<p>&#160; &#160; 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>&#160;&#160;&#160; FIELD appointmentDate AS CHARACTER</p>
						<p>&#160;&#160;&#160; FIELD appointmentSeconds AS INTEGER</p>
						<p>&#160; &#160; 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">&#160;</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">&#160;</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">&#160;</td>
				</tr>
			</tbody>
		</table>
	</div>
	<p>&#160;</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">&#160;</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">&#160;</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">&#160;</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">&#160;</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">&#160;</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">&#160;</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">&#160;</td>
				</tr>
			</tbody>
		</table>
	</div>
	<p>&#160;</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>&#160;</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>&#160;</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>&#160;</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>&#160;</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>&#160;</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>&#160;</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>&#160;</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>&#160;</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>&#160;</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>&#160;</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>&#160;</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 &lt;> "" 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>&#160;</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>