Diferencia entre revisiones de «EgTaskEditor»
(→Configurar un centro en egTaskEditor) |
|||
(No se muestran 54 ediciones intermedias del mismo usuario) | |||
Línea 1: | Línea 1: | ||
<p>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.</p> | <p>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.</p> | ||
− | <p>A lo largo de este artículo, iremos explicando la información que | + | <p>A lo largo de este artículo, iremos explicando la información que podemos visualizar bajo esta aplicación, así como las operaciones de mofificación que nos va a permitir realizar.</p> |
− | == | + | |
− | <p>Para que egTaskEditor pueda mostrar la información de tareas y procesos, debe conectarse a la base de datos que utiliza el centro | + | ==Cómo configurar un centro en egTaskEditor== |
+ | <p>Para que egTaskEditor pueda mostrar la información de tareas y procesos, debe conectarse a la base de datos que utiliza el centro, además de especificar la ruta del diccionario y el directorio de registros. Para introducir esta cadena de datos, nos saldrá la siguiente ventana al ejecutar la aplicación:</p> | ||
<center> | <center> | ||
Línea 10: | Línea 11: | ||
</center> | </center> | ||
− | <p>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 | + | <p>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 la cadena de datoss de los centros que queramos, de manera que al arrancar egTaskEditor, se cargará dicho fichero en la ventana de inicio y mediante un desplegable se mostrarán todos aquellos centros que estén configurados:</p> |
<center> | <center> | ||
Línea 20: | Línea 21: | ||
==Abrir un proceso o tarea== | ==Abrir un proceso o tarea== | ||
− | <p>Una vez hemos | + | <p>Una vez hemos accedido al centro, se abrirá una ventana con la siguiente interfaz:</p> |
<center> | <center> | ||
Línea 28: | Línea 29: | ||
</center> | </center> | ||
− | <p>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 | + | <p>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'''.</p> |
+ | <p>El maintarget es la referencia de un objeto, que estará incluída en la definición del contenedor del maintarget de la tarea. En caso de no tener una referencia específica, será el nombre de la definición del contenedor. Por tanto, accediendo con la herramienta [[egSQL|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).</p> | ||
+ | |||
<p>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:</p> | <p>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:</p> | ||
Línea 39: | Línea 42: | ||
==Información general de una tarea== | ==Información general de una tarea== | ||
− | <p>Al cargar una tarea, la información de ésta se | + | <p>Al cargar una tarea, la información de ésta se mostrará 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:</p> |
:*'''UEL/DRC''': informa del RRC y DRC de la tarea seleccionada. | :*'''UEL/DRC''': informa del RRC y DRC de la tarea seleccionada. | ||
Línea 52: | Línea 55: | ||
</center> | </center> | ||
− | <p> | + | <p>De estas cuatro propiedades, todas salvo el UEL/DRC pueden ser modificadas. Para ello, picaremos en el botón '''Guardar''' una vez modificada la propiedad. Posteriormente, picaremos en el botón '''Guardar''' de la parte inferior derecha de la ventana.</p> |
+ | <p>En general, siempre que modifiquemos información de una tarea, habrá un botón modificar al lado del campo modificado, y posteriormente tendremos que guardar esos cambios picando en el botón '''Guardar'''.</p> | ||
− | <p> | + | <p>En el próximo capítulo de este artículo, explicaremos la información específica que se muestra al cargar una tarea. Como egTaskEditor subdivide esta información en pestañas, iremos tratando cada una de estas pestañas y analizando la información que muestran.</p> |
==Pestañas== | ==Pestañas== | ||
− | === | + | ===Threads=== |
− | <p>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, | + | <p>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:</p> |
<center> | <center> | ||
Línea 68: | Línea 72: | ||
<p>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.</p> | <p>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.</p> | ||
− | <blockquote style="background: #ffffcc; border: 1px solid black; padding: 1em;"> | + | <blockquote style="background: #ffffcc; border: 1px solid black; padding: 1em; margin:1em 50ex 5ex 50ex"> |
'''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|eventos]]. | '''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|eventos]]. | ||
</blockquote> | </blockquote> | ||
Línea 90: | Línea 94: | ||
<p>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:</p> | <p>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:</p> | ||
− | :*Active: | + | :*Active: indica que el método se está ejecutando pero que está esperando a que finalice la ejecución de otro método (''waiting'') para continuar su ejecución. |
− | :*Waiting: | + | :*Waiting: indica que otro método está esperando (''active'') a que termine el método para continuar su ejecución. |
− | :*ActiveSuspended: | + | :*ActiveSuspended: actualmente no tiene funcionalidad. |
− | :*WaitingSuspended: | + | :*WaitingSuspended: actualmente no tiene funcionalidad. |
− | :*Terminated: | + | :*Terminated: indica que un método ha terminado su ejecución. |
− | :*Aborted: | + | :*Aborted: indica que la ejecución de un método ha sido abortada. |
<p>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''':</p> | <p>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''':</p> | ||
Línea 159: | Línea 163: | ||
</center> | </center> | ||
− | ====Añadir o modificar los parámetros de un | + | ====Añadir o modificar los parámetros de un método==== |
<p>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:</p> | <p>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:</p> | ||
Línea 171: | Línea 175: | ||
<p>Para mantener los cambios realizados, recordaremos siempre picar en el botón '''Guardar'''.</p> | <p>Para mantener los cambios realizados, recordaremos siempre picar en el botón '''Guardar'''.</p> | ||
− | === | + | ===Snapshot=== |
+ | ====¿Qué es un snapshot?==== | ||
+ | <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?==== |
+ | <p>La utilidad principal que ofrecen los snapshots de las tareas es la posibilidad de '''retroceder tareas'''. Veámos un ejemplo.</p> | ||
+ | <p>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".</p> | ||
+ | <p>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"?</p> | ||
+ | <p>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".</p> | ||
+ | <p>El método principal volverá a lanzar la "tarea 1", creando un nuevo snapshot (el antiguo no se sobreescribe).</p> | ||
+ | ====¿Cómo nos muestra la información de un snapshot el egTaskEditor?==== | ||
+ | <p>A continuación veremos cómo nos muestra el egTaskEditor la información que almacena para crear el snapshot de una tarea:</p> | ||
− | === | + | <center> |
+ | {| | ||
+ | |align="center" |[[Imagen:egTE_031.jpg|border|250px]] | ||
+ | |} | ||
+ | </center> | ||
+ | |||
+ | <p>Como hemos podido ver en la imagen, la información que se nos muestra no es más de la que hemos comentado anteriormente. Se nos muestra la copia del código del método, con el IP apuntando a la instrucción que lanzó la tarea, las variables del método con sus valores y los parámetros con sus valores (en nuestro caso no hay parámetros). Quizás, un elemento nuevo que no hemos comentado es el '''Id'''. El Id hace referencia al identificador del método. Si nos fijamos en la siguiente imagen, vemos que si seleccionamos el proceso, todos aquellos métodos que hayan sido ejecutados poseen un Id. El Id del snapshot anterior concuerda con el Id que señalamos a continuación:</p> | ||
+ | |||
+ | <center> | ||
+ | {| | ||
+ | |align="center" |[[Imagen:egTE_032.jpg|border|250px]] | ||
+ | |} | ||
+ | </center> | ||
+ | |||
+ | ====Modificar la información de un snapshot==== | ||
+ | <p>El código del método copiado para realizar el snapshot no es posible modificarlo. Sólo podremos modificar el IP del método, el Id del método y sus variables y parámetros. En caso de modificar el Id del snapshot, se ejcutará el código que al que haga referencia el nuevo Id introducido y que además empezará a ejecutar la línea que marque el IP. Para modificar el Id, el valor del IP tiene que estar en el rango de valores permitidos por el método del nuevo Id. Es decir, si el Id ahora vale 2, el IP tendrá que tener un valor entre las N-1 líneas de código que tenga el método 2.</p> | ||
+ | <p>Una vez modificado el Id y el IP, picaremos en su correspondiente botón '''Modificar''', para posteriormente almacenar los cambios picando en '''Guardar'''. Para el caso de las variables y parámetros lo realizaremos [[EgTaskEditor#A.C3.B1adir_o_modificar_variables_en_un_m.C3.A9todo|de la misma forma que explicamos para la pestaña "Threads"]]. | ||
+ | |||
+ | <center> | ||
+ | {| | ||
+ | |align="center" |[[Imagen:egTE_033.jpg|border|250px]] | ||
+ | |} | ||
+ | </center> | ||
+ | |||
+ | ===Propiedades=== | ||
+ | <p>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.</p> | ||
+ | ====Visualizar o modificar las propiedades de un proceso o tarea==== | ||
+ | <p>En primer lugar, la primera información que se nos muestra es el nombre y el dominio del proceso o tarea.</p> | ||
+ | <p>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:</p> | ||
+ | |||
+ | <center> | ||
+ | {| | ||
+ | |align="center" |[[Imagen:egTE_025.jpg|border|250px]] | ||
+ | |align="center" |[[Imagen:egTE_026.jpg|border|250px]] | ||
+ | |} | ||
+ | </center> | ||
+ | |||
+ | <p>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''':</p> | ||
+ | |||
+ | <center> | ||
+ | {| | ||
+ | |align="center" |[[Imagen:egTE_027.jpg|border|250px]] | ||
+ | |} | ||
+ | </center> | ||
+ | |||
+ | <p>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''':</p> | ||
+ | |||
+ | <center> | ||
+ | {| | ||
+ | |align="center" |[[Imagen:egTE_028.jpg|border|250px]] | ||
+ | |} | ||
+ | </center> | ||
+ | |||
+ | <p>Las propiedades que se encuentran en el cuadro '''Trabajo''' se encuentran en revisión, así que de momento no las tendremos en cuenta.</p> | ||
+ | |||
+ | <p>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.</p> | ||
+ | <p>Si realizamos alguna modificación, repetiremos las mismas acciones que en casos anteriores:</p> | ||
+ | |||
+ | <center> | ||
+ | {| | ||
+ | |align="center" |[[Imagen:egTE_029.jpg|border|250px]] | ||
+ | |} | ||
+ | </center> | ||
+ | |||
+ | ===Campos=== | ||
+ | ====Modificar el valor de un campo de tarea==== | ||
+ | <p>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''':</p> | ||
+ | |||
+ | <center> | ||
+ | {| | ||
+ | |align="center" |[[Imagen:egTE_023.jpg|border|250px]] | ||
+ | |} | ||
+ | </center> | ||
+ | |||
+ | <p>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.</p> | ||
+ | <p>Una vez introducimos el nuevo valor, picaremos en el botón '''Modificar''' y posteriormente, en el botón '''Guardar''':</p> | ||
+ | |||
+ | <center> | ||
+ | {| | ||
+ | |align="center" |[[Imagen:egTE_024.jpg|border|250px]] | ||
+ | |} | ||
+ | </center> | ||
+ | |||
+ | <p>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.</p> | ||
+ | |||
+ | ===Avisos y caducidades=== | ||
+ | ====Ver o modificar aviso y fecha de caducidad de una tarea o proceso==== | ||
+ | <p>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.</p> | ||
+ | <p>En caso de modificar alguno de los campos, picaremos en '''Modificar''' y '''Guardar''':</p> | ||
+ | |||
+ | <center> | ||
+ | {| | ||
+ | |align="center" |[[Imagen:egTE_030.jpg|border|250px]] | ||
+ | |} | ||
+ | </center> | ||
− | + | [[Categoría:Aplicaciones]] |
Revisión actual del 13:19 20 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 podemos visualizar bajo esta aplicación, así como las operaciones de mofificación que nos va a permitir realizar.
Contenido
- 1 Cómo configurar un centro en egTaskEditor
- 2 Abrir un proceso o tarea
- 3 Información general de una tarea
- 4 Pestañas
- 4.1 Threads
- 4.1.1 Visualizar el código de un método
- 4.1.2 Estado del hilo de ejecución de un método. ¿Cómo cambiarlo?
- 4.1.3 ¿Qué es el Instruction Pointer? ¿Cómo puedo modificarlo?
- 4.1.4 Editar el código de ejecución
- 4.1.5 Añadir o modificar variables en un método
- 4.1.6 Añadir o modificar los parámetros de un método
- 4.2 Snapshot
- 4.3 Propiedades
- 4.4 Campos
- 4.5 Avisos y caducidades
- 4.1 Threads
Cómo 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, además de especificar la ruta del diccionario y el directorio de registros. Para introducir esta cadena de datos, nos saldrá la siguiente ventana al ejecutar la aplicación:
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 la cadena de datoss de los centros que queramos, de manera que al arrancar egTaskEditor, se cargará dicho fichero en la ventana de inicio y mediante un desplegable se mostrarán todos aquellos centros que estén configurados:
Abrir un proceso o tarea
Una vez hemos accedido al centro, se abrirá una ventana con la siguiente interfaz:
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 la referencia de un objeto, que estará incluída en la definición del contenedor del maintarget de la tarea. En caso de no tener una referencia específica, será el nombre de la definición del contenedor. 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:
Información general de una tarea
Al cargar una tarea, la información de ésta se mostrará 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).
De estas cuatro propiedades, todas salvo el UEL/DRC pueden ser modificadas. Para ello, picaremos en el botón Guardar una vez modificada la propiedad. Posteriormente, picaremos en el botón Guardar de la parte inferior derecha de la ventana.
En general, siempre que modifiquemos información de una tarea, habrá un botón modificar al lado del campo modificado, y posteriormente tendremos que guardar esos cambios picando en el botón Guardar.
En el próximo capítulo de este artículo, explicaremos la información específica que se muestra al cargar una tarea. Como egTaskEditor subdivide esta información en pestañas, iremos tratando cada una de estas pestañas y analizando la información que muestran.
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:
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:
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: indica que el método se está ejecutando pero que está esperando a que finalice la ejecución de otro método (waiting) para continuar su ejecución.
- Waiting: indica que otro método está esperando (active) a que termine el método para continuar su ejecución.
- ActiveSuspended: actualmente no tiene funcionalidad.
- WaitingSuspended: actualmente no tiene funcionalidad.
- Terminated: indica que un método ha terminado su ejecución.
- Aborted: indica que la ejecución de un método ha sido abortada.
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:
¿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 =>:
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:
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:
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:
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):
Añadir o modificar los parámetros de un método
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:
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 nos muestra el egTaskEditor la información que almacena para crear el snapshot de una tarea:
Como hemos podido ver en la imagen, la información que se nos muestra no es más de la que hemos comentado anteriormente. Se nos muestra la copia del código del método, con el IP apuntando a la instrucción que lanzó la tarea, las variables del método con sus valores y los parámetros con sus valores (en nuestro caso no hay parámetros). Quizás, un elemento nuevo que no hemos comentado es el Id. El Id hace referencia al identificador del método. Si nos fijamos en la siguiente imagen, vemos que si seleccionamos el proceso, todos aquellos métodos que hayan sido ejecutados poseen un Id. El Id del snapshot anterior concuerda con el Id que señalamos a continuación:
Modificar la información de un snapshot
El código del método copiado para realizar el snapshot no es posible modificarlo. Sólo podremos modificar el IP del método, el Id del método y sus variables y parámetros. En caso de modificar el Id del snapshot, se ejcutará el código que al que haga referencia el nuevo Id introducido y que además empezará a ejecutar la línea que marque el IP. Para modificar el Id, el valor del IP tiene que estar en el rango de valores permitidos por el método del nuevo Id. Es decir, si el Id ahora vale 2, el IP tendrá que tener un valor entre las N-1 líneas de código que tenga el método 2.
Una vez modificado el Id y el IP, picaremos en su correspondiente botón Modificar, para posteriormente almacenar los cambios picando en Guardar. Para el caso de las variables y parámetros lo realizaremos de la misma forma que explicamos para la pestaña "Threads".
Propiedades
<p>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:
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:
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:
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:
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:
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:
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: