Diferencia entre revisiones de «EgTaskEditor»

De Egeasy
Saltar a: navegación, buscar
(Snapshot)
(¿Qué es un snapshot?)
Línea 173: Línea 173:
 
===Snapshot===
 
===Snapshot===
 
====¿Qué es un snapshot?====
 
====¿Qué es un snapshot?====
<p>Cuando una tarea es lanzada, se genera siempre una copia del código del método desde donde se lanzó dicha tarea. Además del código, también se realiza una copia de las variables y parámetros del método con sus respectivos valores. A todo este conjunto de "fotografías" del estado del proceso en el momento de la llamada lo denominamos '''snapshot'''.</p>
+
<p>Cuando una tarea es lanzada (no para los procesos), se genera siempre una copia del código del método desde donde se lanzó dicha tarea. Además del código, también se realiza una copia de las variables y parámetros del método con sus respectivos valores. A todo este conjunto de "fotografías" del estado del proceso en el momento de la llamada lo denominamos '''snapshot'''.</p>
 +
 
 
====¿Qué utilidad tiene el snapshot de una tarea?====
 
====¿Qué utilidad tiene el snapshot de una tarea?====
 
<p>La utilidad principal que ofrecen los snapshots de las tareas es la posibilidad de '''retroceder tareas'''. Veámos un ejemplo.</p>
 
<p>La utilidad principal que ofrecen los snapshots de las tareas es la posibilidad de '''retroceder tareas'''. Veámos un ejemplo.</p>

Revisión del 12:17 14 jul 2009

A la hora de realizar un tratamiento de las tareas y procesos lanzados en un centro, egeasy nos proporciona una herramienta llamada egTaskEditor. Con esta herramienta podremos ver y modificar la información relativa a cualquier proceso o tarea simplemente introduciendo su RRC y DRC.

A lo largo de este artículo, iremos explicando la información que podremos visualizar bajo esta aplicación, así como las operaciones que nos va a permitir realizar sobre dicha información.

Configurar un centro en egTaskEditor

Para que egTaskEditor pueda mostrar la información de tareas y procesos, debe conectarse a la base de datos que utiliza el centro que estemos tratando, además de especificar la ruta del diccionario y el directorio de registros. Para introducir esta información, nos saldrá la siguiente ventana al ejecutar la aplicación:

EgTE 001.jpg

No obstante, cuando utilizamos egTaskEditor frecuentemente, resulta tedioso estar introduciendo una y otra vez los datos de la base de datos, etc. para entrar en la aplicación. Para evitar este problema, existe un fichero .ini, llamado egTaskEditor.ini, donde podemos introducir los datos de todos los centros que queramos, de manera que egTaskEditor cargará dicho fichero en la ventana de inicio y mediante un desplegable se mostrarán todos aquellos centros que estén configurados con su correspondiente información:

EgTE 002.jpg EgTE 003.jpg

Abrir un proceso o tarea

Una vez hemos entrado en la aplicación, la interfaz que nos aparecerá de entrada será la siguiente:

EgTE 004.jpg

En la zona marcada en rojo, podemos ver los diferentes campos para introducir la información que nos permitirá abrir un proceso o tarea. Los dos campos de la izquierda (UEL y DRC) nos permitirán abrir una tarea introduciendo su RRC y DRC (aunque el campo se llame UEL, introduciremos el RRC), picando posteriormente en el botón Cargar. Otra opción es abrir una tarea o proceso en función de su maintarget. El maintarget es en realidad la referencia del objeto, que estará incluída en la definición del contenedor del maintarget. En caso de no tener una referencia específica, será el nombre del objeto. Por tanto, accediendo con la herramienta egSQL a la tabla TS$TASKS podremos obtener el maintarget de una tarea o proceso concreto. Una vez obtenemos el maintarget, lo introduciremos en el campo Nº de expediente y picaremos en el botón Cargar. La información introducida en este campo debe coincidir exactamente con el valor de maintarget obtenido de TS$TASKS (es sensible a mayúsculas y minúsculas).

En caso de abrir un proceso, en el panel izquierdo aparecerá el nombre del proceso con un desplegable que hace referencia a las tareas que que se han ejecutado o se están ejecutando. En caso de abrir una tarea aparecerá únicamente la tarea:

EgTE 005.jpg EgTE 006.jpg

Información general de una tarea

Al cargar una tarea, la información de ésta se cargará en el panel principal de la aplicación. En la parte superior de este panel, podremos ver el título de la tarea seleccionada, así como los siguientes campos:

  • UEL/DRC: informa del RRC y DRC de la tarea seleccionada.
  • Status: muestra el estado actual de la tarea seleccionada (Not Working, Working, Aborted, Finished).
  • Target: información del target de la tarea (RRC@DRC@Definición del target).
  • Source: informa de la habitación donde ha sido lanzada la tarea (RRC@DRC@Nombre de la habitación).
EgTE 007.jpg

Los campos Status, Target o Source pueden ser modificados, de tal manera que realizaremos el cambio y picaremos en el botón Modificar. Posteriormente, picaremos en el botón Guardar de la parte inferior derecha de la ventana. En general, siempre que queramos cambiar información de la tarea, habrá un botón modificar al lado del campo modificado, y posteriormente tendremos que guardar esos cambios.

A continuación, iremos explicando la información mostrada de una tarea o proceso en función de las pestañas que aparecen en el panel principal de la aplicación.

Pestañas

Threads

Cuando abrimos un proceso, la primera pestaña que nos encontramos es la pestaña Threads. Como su propio nombre indica, en esta pestaña se mostrarán los hilos de aquellos métodos que un proceso haya ejecutado o esté ejecutando. Por tanto, si seleccionamos una tarea, mirar esta pestaña no tendrá sentido ya que no muestra información sobre tareas, sólo sobre procesos. En la siguiente imagen podremos ver como el proceso Solicitud de beca tiene dos hilos en su ejecución:

EgTE 008.jpg

Como hemos visto, en el panel de tareas está seleccionado el proceso Solicitud de beca. En el panel de métodos podremos ver los métodos RegistrarEntrada y FirmarRequerimiento. En este panel se va a mostrar el árbol de todos aquellos métodos que hayan sido ejecutados por el proceso.

NOTA: Si seleccionamos una tarea, en el panel de métodos no aparecerá nada, aunque la tarea ejecute código de método en sus eventos.

Si un método es invocado por otro método, éste aparecerá con un mayor nivel de identado, como podemos ver con el método FirmarRequerimiento. Si éste a su vez invocara a otro método, aparecería con otro nivel más de identado, formando un árbol de ejecución de métodos más extenso.

Ahora bien, ¿cómo vemos el código que se ha ejecutado de un método concreto?

Visualizar el código de un método

Para visualizar el código de un método simplemente tendremos que seleccionar el método que nos interese en el panel de métodos, cuyo código será mostrado en la pestaña Método:

EgTE 009.jpg EgTE 010.jpg

Al realizar esta operación, además se mostrará otra información de gran importancia referente al hilo de ejecución de ese método, como por ejemplo, el estado del hilo o el IP (puntero que apunta a la siguiente instrucción a ejecutar).

Estado del hilo de ejecución de un método. ¿Cómo cambiarlo?

Cuando seleccionamos un método y se muestra su código, en la parte inferior del panel principal podemos ver un campo desplegable llamado Estado. En él se informará del estado actual del hilo de ejecución de dicho método. Si abrimos el desplegable podemos ver el conjunto de estados que puede adquirir un método. Las características de cada estado son las siguientes:

  • Active:
  • Waiting:
  • ActiveSuspended:
  • WaitingSuspended:
  • Terminated:
  • Aborted:

Si quisiéramos cambiar el estado de un hilo de ejecución, abriremos el desplegable y seleccionaremos el nuevo estado que queramos asignar. Para que los cambios se guarden, primero debemos picar en el botón Modificar y luego en Guardar:

EgTE 012.jpg EgTE 013.jpg

¿Qué es el Instruction Pointer? ¿Cómo puedo modificarlo?

El Instruction Pointer es un puntero que apunta a la siguiente instrucción que se va a ejecutar en el método cuyo valor se muestra en la parte inferior izquierda del panel principal. Además, podremos verlo gráficamente en el código, en la línea que indique el campo IP. Éste se representa con el símbolo =>:

EgTE 014.jpg

Cuando seleccionamos un método y no encontramos el IP, es porque el método habrá finalizado y, aunque no lo veamos gráficamente en el código, el puntero tendrá un valor de n líneas de método, que es la forma de indicar que el método ha terminado.

¿Y cómo podemos modificar el IP de un método?

Para modificar el IP, simplemente modicaremos el campo IP por el nuevo valor que queramos que adquiera. Picaremos en el botón Modificar que se encuentra justo a la derecha del campo IP, y como siempre, guardaremos el cambio haciendo click en el botón Guardar.

Editar el código de ejecución

Otra operación que nos permite realizar egTaskEditor es la edición del código que está ejecutando el hilo del método seleccionado. Este código es una copia del código original del método que se encuentra en el fichero .nmt, por lo que cualquier modificación sólo afectará a la ejecución del hilo y no al fichero .nmt. Esta operación puede resultar muy útil cuando se realizan modificaciones en los ficheros .nmt, ya que los cambios que realicemos no modificarán las copias de código que realizan los métodos en ejecución. Por tanto, si queremos que los métodos que ya estén en ejecución también adquieran las nuevas modificaciones añadidas en los ficheros .nmt, podremos hacerlo directamente desde esta aplicación.

Para modificar el código, picaremos en el botón Editar código.... A continuación, se abrirá una nueva ventana con el código en ejecución. Una vez realizadas las modificaciones, picaremos en el botón Aceptar:

EgTE 015.jpg EgTE 016.jpg

Finalmente, picaremos en el botón Guardar para almacenar los cambios.

Añadir o modificar variables en un método

Como sabemos, en la elaboración de un método siempre se declaran variables de diferente tipo. egTaskEditor también nos va a permitir modificar estas variables, o añadir otras nuevas. Para ello, accederemos a la pestaña Variables/Parámetros:

EgTE 017.jpg

Para modificar una variable de método, haremos doble click sobre la variable que queramos modificar. Veremos que en los campos Nombre y Valor aparecerán los datos de dicha variable. Modificaremos el campo Nombre o Valor en función de lo que necesitemos. Para terminar picaremos en el botón Modificar y como siempre, guardaremos el cambio picando en Guardar:

EgTE 018.jpg EgTE 019.jpg

Para añadir una nueva variable, picaremos en el botón Añadir.... Nos aparecerá la siguiente ventana donde podremos introducir el nombre de la nueva variable, el tipo de datos de la variable, e inicializarla con algún valor si es necesario (es posible que la variable adquiera algún valor durante la ejecución del hilo y no sea necesario inicializarla con algún valor):

EgTE 020.jpg EgTE 021.jpg

Añadir o modificar los parámetros de un thread

Como ya sabemos, cuando ejecutamos un método se puede dar el caso de que su invocación requiera el paso de ciertos parámetros. Dichos parámetros podremos gestionarlos con el egTaskEditor al igual que lo hacemos con la variables. Para ello accederemos a la misma pestaña Variables/Parámetros, pero esta vez nos fijaremos en la parte derecha del panel de la pestaña:

EgTE 022.jpg

Tanto la operación de modificar como la de añadir un parámetro nuevo se realizan exactamente igual que las mismas operaciones explicadas para el caso de las variables. Ver

Para mantener los cambios realizados, recordaremos siempre picar en el botón Guardar.

Snapshot

¿Qué es un snapshot?

Cuando una tarea es lanzada (no para los procesos), se genera siempre una copia del código del método desde donde se lanzó dicha tarea. Además del código, también se realiza una copia de las variables y parámetros del método con sus respectivos valores. A todo este conjunto de "fotografías" del estado del proceso en el momento de la llamada lo denominamos snapshot.

¿Qué utilidad tiene el snapshot de una tarea?

La utilidad principal que ofrecen los snapshots de las tareas es la posibilidad de retroceder tareas. Veámos un ejemplo.

Imaginemos que tenemos nuestro método principal, que ya ha lanzado una "tarea 1" que ha finalizado (con su snapshot correspondiente). El método principal sigue ejecutándose hasta que se lanza una "tarea 2". Se crea su snapshot, pero por las causas que sean, decidimos retroceder a la "tarea 1".

Entonces ahora, ¿cómo sabe el método principal qué línea tiene que empezar a ejecutar para lanzar nuevamente la "tarea 1" y abortar la "tarea 2"?

Para ello, hace uso del snapshot de la tarea a la que queremos retroceder, en este caso la "tarea 1", y copiará el IP del snapshot de la "tarea 1" en el IP del método principal, así como los valores que tenían tanto las variables como los parámetros en el momento que se lanzó la "tarea 1".

El método principal volverá a lanzar la "tarea 1", creando un nuevo snapshot (el antiguo no se sobreescribe).

¿Cómo nos muestra la información de un snapshot el egTaskEditor?

A continuación veremos cómo noes muestra el egTaskEditor la información que almacena para crear el snapshot de una tarea:

Propiedades

En esta sección de la aplicación se mostrará información acerca del proceso o tarea que tengamos seleccionado y que además nos permitirá modificar. Veamos a continuación qué propiedades se muestran, cómo modificarlas y cuáles podremos modificar.

Visualizar o modificar las propiedades de un proceso o tarea

En primer lugar, la primera información que se nos muestra es el nombre y el dominio del proceso o tarea.

Para el caso del nombre, ésta será una propiedad que no podremos modificar para ninguno de los casos (proceso o tarea). En cuanto al dominio, hay que tener en cuenta que los procesos no poseen dominio, ya que son una tarea "padre", por lo que nos encontraremos el valor @-1@. En caso de querer modificar el dominio de una tarea, modificaremos el campo Dominio y picaremos en el botón Modificar que está justo a la derecha. Finalmente, picaremos en el botón Guardar de la parte inferior derecha de la aplicación. Veamos un ejemplo a continuación:

EgTE 025.jpg EgTE 026.jpg

Otra información que se muestra son aquellas propiedades referentes a la creación de un proceso o tarea. Estas propiedades son la fecha de creación, la habitación desde donde se lanzó y el usuario que lanzó la tarea o proceso. Para modificar cualquiera de estas propiedades, editaremos el campo que nos interese y realizaremos el protocolo habitual, picar en el botón Modificar que encontramos en el cuadro Creación y almacenaremos los cambios con el botón Guardar:

EgTE 027.jpg

El siguiente conjunto de propiedades tienen que ver con la asignación de tareas. En el cuadro Asignación hay tres campos relativos a la fecha de asignación, la habitación y el usuario. En este caso, la fecha de asignación y el usuario lo mantendremos al margen, ya que actualmente no tiene utilidad. Por tanto, sólo será posible asignar una tarea a otra habitación, de manera que los usuarios que tengan acceso a esa habitación y posean permisos para realizar ese tipo de tareas, podrán lanzarla y finalizarla. Para modificar la habitación, introduciremos el RRC, el DRC y el nombre de la nueva habitación. Una vez hecho, picaremos en el botón Modificar y Guardar:

EgTE 028.jpg

Las propiedades que se encuentran en el cuadro Trabajo se encuentran en revisión, así que de momento no las tendremos en cuenta.

Por último, podremos ver o modificar la tarea anterior y siguiente de otra tarea que tengamos seleccionada. En caso de querer dar un valor nulo a alguno de estos campos, asignaremos el valor @-1@, como ya habíamos comentado anteriormente. En caso de seleccionar un proceso, veremos que tanto la tarea anterior como la siguiente tendrán este valor.

Si realizamos alguna modificación, repetiremos las mismas acciones que en casos anteriores:

EgTE 029.jpg

Campos

Modificar el valor de un campo de tarea

En este apartado de la aplicación, podremos ver los campos definidos de la tarea que tengamos seleccionada con su respectivo valor. El formato que nos encontraremos será Nombre_del_campo=Valor:

EgTE 023.jpg

Para modificar el valor de un campo de tarea, lo editaremos directamente en el cuadro donde se muestran los campos. Habrá que conocer la definición del campo, ya que en función del tipo que sea, el formato del valor puede tener ciertas particularidades o restricciones.

Una vez introducimos el nuevo valor, picaremos en el botón Modificar y posteriormente, en el botón Guardar:

EgTE 024.jpg

Hay que tener en cuenta que aunque el cuadro donde aparecen los campos de tareas es totalmente editable, cualquier modificación que realicemos que no sea la del valor de un campo, no se tendrá en cuenta. Por ejemplo, si añadimos un campo nuevo o modificamos el nombre de uno ya creado, aunque le demos al botón Modificar y luego a Guardar, podremos comprobar que estos cambios realmente no se han almacenado picando en el botón Refrescar. La información que supuestamente se ha guardado desaparecerá, volviendo a mostrar el estado inicial de los campos de la tarea seleccionada.

Avisos y caducidades

Ver o modificar aviso y fecha de caducidad de una tarea o proceso

Otra información que nos muestra el egTaskEditor es el aviso y fecha de caducidad de un proceso o tarea. Concretamente, las propiedades son la fecha de caducidad, la fecha de vencimiento del aviso y el mensaje de aviso que actualmente están activos en el proceso o tarea. En caso de no mostrar ninguna información, significará que no se ha activado alguna de estas propiedades.

En caso de modificar alguno de los campos, picaremos en Modificar y Guardar:

EgTE 030.jpg