Frequently asked questions (FAQ)
-
*A modo general:
-
¿Cuál es el nombre del curso que puede realizarse a continuación del "Curso básico de Apia 2.2"?
El segundo curso se llama "Curso intermedio de Apia 2.2".
-
¿El "Curso básico de Apia 2.2" es el primer curso que se puede realizar dentro de este sitio?
Sí. Es el primer curso por el cual se comienza a aprender Apia.
-
¿Existe algún otro curso para profundizar el conocimiento en Apia?
Sí. Se llama "Curso avanzado de Apia 2.2" y lo puede realizar al terminar el "Curso intermedio de Apia 2.2".
-
-
Administración
-
¿Cómo se hace para poder crear un ??~Double??T desde un valor numérico adquirido por clase de negocio?
Al llamar el método ??ogetValueAsString()??? del objeto ??oAttribute??? de la API Java, para los atributos del tipo <b>numérico</b>, se aplica el formato definido en los parámetros del ambiente. Para crear un objeto del tipo <b>double</b> con dicho valor, es necesario colocar en ??oSí??? el parámetro ??oAplicar formato numérico en la API???. De otra forma daría un error.
-
¿Por qué existen registros del Scheduler que no se pueden eliminar o modificar?
Estos registros se deben a la ejecución de clases de negocio del tipo <b>Off line</b>. Para deshabilitarlos se debe modificar la consulta propiamente dicha y para eliminarlos se debe eliminar la consulta.
-
¿Qué ocurre con una clase agendada para ejecutarse más de una vez en el Scheduler y se ejecuta con error?
La clase continúa ejecutándose con la periodicidad establecida en el diseño del Scheduler, notificando que se ejecutó con error.
-
-
Consultas
-
¿Cómo se hace para desplegar una imagen desde una consulta del usuario?
Al diseñar la consulta del usuario y agregar una columna que contiene el código HTML representando una imagen, se deberá seleccionar el CheckBox ??oEs HTML???.
-
¿Es posible ejecutar una consulta desde otra consulta del usuario aplicando filtros automáticamente?
Sí. Se debe disponer de 2 consultas, una de las dos (padre) se ejecuta como acción de la otra (hija). Todos los filtros colocados en la consulta hija deben ser columnas retornadas en la consulta padre. Luego de ejecutada la consulta padre, se debe seleccionar una línea resultado de la misma y ejecutar la acción ??~Ver consulta??T.
-
¿Por qué una clase de negocio del tipo ??oFiltro de consulta??? colocada en el evento <b>OnFilterChange</b> de una consulta del usuario no se está ejecutando?
Para poder ejecutar una clase de negocio en dicho evento, es necesario habilitar en cada uno de los ??oFiltros del usuario??? el CheckBox ??oDetectar onChange???.
-
-
Diseño
-
¿Cómo se hace para ejecutar las clases de negocio al elegir, agregar, eliminar, etc. líneas en una tabla (Grid)?
Para esto, deben ocultarse todos los botones de la tabla (en el diseño de formularios) y colocar los siguientes:<br>
<ul><li>Un campo del tipo CheckBox en cada una de las líneas de la tabla.</li><br>
<li>Dos botones en el formulario, uno para eliminar una línea y el otro para agregar una línea de la tabla.</li></ul><br>
Luego de esto se deben colocar las clases de negocio en los botones para lograr los comportamientos esperados. -
¿Cómo se hace para que un formulario no se recargue cuando se ejecuta una clase de negocio?
Se debe configurar el formulario que está ejecutando la clase de negocio para que se ejecute en segundo plano.
-
¿Cómo se puede saber por clase de negocio si los documentos fueron agregados en una tarea?
Se deberían recorrer los documentos adjuntados a la tarea y comparar la fecha de los mismos con la fecha en la cual se empezó a trabajar la tarea (task.getStartTskDate()).
-
¿Cuál es el motivo para establecer una conexión con una base externa a la de la aplicación?
Pueden requerirse datos externos a la instalación para la ejecución de un proceso o puede ser necesario unificar en Apia consultas desde otros sistemas, para ello es necesario establecer una conexión a esas bases externas.
-
¿Qué cosas se pueden hacer por clase de negocio?
Las clases de negocio permiten completar el modelo de negocio que se está representando en Apia, lo cual permite agregar comportamiento al proceso que se está modelando. Por ejemplo ante una condición para un elemento del proceso, según el valor se puede querer una u otra respuesta para el elemento siguiente. Esas respuestas pueden ser programadas en clases de negocio que se asocian al proceso.<br>
A través de clases de negocio se pueden manejar los objetos de Apia como entidades, procesos, formularios, atributos, etc., modificando sus propiedades u obteniendo información de ellos.
-
-
Ejecución
-
Al ejecutar una clase de negocio y solicitar la conexión actual y otros datos está dando un error de <b>nullPointerException</b>.
Este error puede deberse a que dicha clase de negocio no fue instanciada por Apia. Esto sucede generalmente cuando desde una clase sí instanciada por Apia se llama a un método de otra que no fue instanciada por Apia.<br>
La manera correcta de realizar esto, es pasar por parámetro la clase instanciada por Apia y solicitar los objetos mediante ésta. -
El método ??ogetField(formName, fieldName)??? de la <b>API JavaScript</b>, retorna un atributo?
Dicho método no retorna un atributo, sino un ??o<b>field</b>??? contenido en el formulario.
-
Está ocurriendo un error de proceso inválido al completar una tarea, aunque las condiciones estén correctas y el flujo debería seguir el transcurso normalmente.
Este error muchas veces puede ser causado por una clase de negocio asociada al evento <b>OnComplete</b> u <b>OnSubmit</b> debido a un mal manejo de las excepciones al crear un bloque ??otry-catch??? y no colocar el código dentro del ??ocatch???.
-
¿Cómo se muestra la información de una instancia de entidad en una ventana modal?
Por medio de una clase de tipo Script que use la función admEntity(??~nombreEntidad??T, numInstancia). Esa función asociada, por ejemplo al evento OnClick de un botón, despliega una ventana modal donde se muestran los formularios de la entidad ??onombreEntidad??? y con los datos para ese ??onumInstancia???. <br>
Esta función también puede usarse para crear instancias de ??onombreEntidad??? si se usa admEntity(??~nombreEntidad??T). De esta forma se despliega la ventana modal con los formularios de la entidad, el usuario completa los mismos y al confirmar se crea una instancia de la entidad. -
¿Cuando se crea un proceso por la <b>API Java</b>, cuál tarea del proceso queda disponible?
La primera tarea es salteada y queda disponible la siguiente tarea.
-
¿Por qué al colocar clases de negocio Java y JavaScript en el orden intercalado, las JavaScript son ejecutadas primero en algunos casos y al revés en otros casos?
Los eventos del lado del <b>Cliente</b> (<b>onClick</b>, <b>onChange</b>, etc.) provocan que se ejecuten primero las clases de negocio del tipo JavaScript. En cambio, los eventos del lado del <b>Servidor</b> (<b>onLoad</b>, <b>onReLoad</b>, etc.) ejecutan primero las clases de negocio del tipo Java.
-
¿Por qué al lanzar una excepción de una clase de negocio no se está mostrando correctamente el mensaje de error?
Para tratar una ??oException??? de manera correcta, debe hacerse un bloque de la siguiente forma:<br>
try {<br>
<ul> código<br></ul>
} catch (BusClassException bce) {<br>
<ul> throw new BusClassException(bce); <br></ul>
} -
¿Por qué no se ejecuta correctamente una clase Java?
Para que la clase Java se ejecute correctamente deberá testear la clase y verificar que la ubicación del ejecutable se corresponde con la ubicación real del archivo.class.
-
¿Por qué no se ejecutan las tareas en el Scheduler?
Para que las tareas se ejecuten en el Scheduler se deberá verificar que el <b>Dispatcher</b> esté activo (debe tener sus líneas descomentadas).
-
¿Qué devuelve el método ??ogetCurrentProcess()??? en un evento de entidad?
En todos los eventos de la entidad dicho método retorna <b>NULL</b>.
-
¿Qué métodos de la <b>API Java</b> pueden hacer que se llame al <b>executeClass</b> de otra clase de negocio?
Los métodos: "complete()", "release(String usrLogin)" y "acquire(String usrLogin)" ejecutan clases de negocio asociadas a eventos de las tareas.
-
¿Qué sucede si una clase de negocio agendada en el Scheduler demora más tiempo en ejecutarse que su período de ejecución?
No se crea un nuevo ??o<b>thread</b>???. Luego que es finalizada la ejecución vuelve a ejecutarse nuevamente en la siguiente ejecución del Scheduler.
-
-
Monitoreo y Control
-
¿Cómo se hace para que una clase de negocio no sea ejecutada en el monitoreo de Apia?
Existe un método ??oisFromMonitor()??? de la clase ApiaAbstrcatClass el cual retorna <b>true</b> en caso de que una clase de negocio se esté llamando desde el monitoreo de Apia.
-
¿Por qué se ejecutan las clases de negocio en el monitoreo de procesos?
Si un formulario tiene un ComboBox el cual es cargado por una clase de negocio, es necesario ejecutar la clase, para poder visualizar los datos en el formulario.
-