ASE: El entorno de scripting de AFRYCA

El enfoque seguido al plantear la arquitectura de un framework como AFRYCA, es ofrecer a los investigadores una herramienta que sea fácil de utilizar y adaptar a sus necesidades.

Al diseñar AFRYCA haciendo uso de una arquitectura de componentes, se logra simplificar aspectos cruciales del desarrollo software tales como la ampliación o la modificación, realizando lo que podría denominarse como una modificación estructural del framework.

Con AFRYCA 3 se intentó ir un paso más allá, y poner esta vez el enfoque en la simplificación de la modificación funcional para facilitar la integración de resultados de investigación, haciendo que la adición de nuevas funciones y algoritmos matemáticos al framework, tareas que hasta ahora requerirían una modificación estructural, puedan ser realizadas directamente desde AFRYCA.

El resultado de lo anterior es ASE, acrónimo de AFRYCA Scripting Environment, un entorno de scripting integrado construido sobre la especificación JSR 223: Scripting for the JavaTM Platform. La especificación JSR 223 define un marco de trabajo que puede ser implementado por cualquier aplicación o biblioteca Java para ofrecer un entorno de scripting, en adelante engine. ASE parte de esta especificación y realiza su adaptación a un entorno de componentes OSGi, ofreciendo una interfaz estandarizara a través de la cual, cualquier lenguaje de programación que ofrezca un engine usando la especificación JSR 223 puede ser embebido en un plug-in OSGi e inyectado en cualquier punto de la aplicación.

Ejecución de scripts de múltiples lenguajes en ASE

Por motivos prácticos, ASE emplea como lenguaje nativo el lenguaje de programación JavaScript en su implementación Nashorn, al venir incluida por defecto en las últimas versiones de la plataforma Java. Además, haciendo uso de la adaptación OSGi para la inclusión de engines realizada, se han desarrollado plug-ins para dar soporte a engines que permiten ejecutar código fuente en lenguaje Groovy, Lua, Ruby, Python o Scala. Los engines pueden ser inyectados en cualquier punto de la aplicación para ejecutar código en cualquiera de estos lenguajes, y a su vez, han sido inyectados en ASE, por lo que desde el propio entorno de ASE se puede interactuar con ellos. Adicionalmente, si el sistema donde se ejecuta AFRYCA cuenta con una instalación del entorno estadístico R, ASE facilita la integración con él para utilizarlo como un entorno de programación más. La guía de instalación incluye una sección dedicada a la integración de R en AFRYCA.

Pero lo más importante para el investigador que desee usar AFRYCA, no es que pueda ejecutar sus propios scripts en ASE, si no que ASE le facilita un conjunto de herramientas para la gestión de los diferentes scripts desarrollados y que le permitirán realizar tareas sumamente complejas de forma extremadamente sencilla una vez se haya familiarizado con los conceptos y el funcionamiento de ASE. Debe tenerse en cuenta que:

  • ASE está desarrollado dentro de un framework E4, lo cual hace que se ejecute dentro de un contenedor de inyección de dependencias. En esencia, esto significa que ASE puede ser utilizado desde cualquier punto de la aplicación y que a su vez, cualquier elemento de la aplicación puede ser inyectado en ASE.
  • ASE puede modificar el código existente de la aplicación. Es posible tomar cualquier clase y modificar la misma incluyendo nuevas funciones o modificando las existentes. Adaptar un modelo de consenso para que una función se ejecute de un modo diferente es una tarea muy sencilla de realizar usando ASE.
  • ASE permite la compilación de los scripts. Cualquier funcionalidad desarrollada usando ASE puede ser compilada para que su ejecución sea tan eficiente como el código nativo.
  • ASE cuenta con soporte para el almacenamiento, gestión e invocación de los scripts. Es posible almacenar desde fragmentos de código con cualquier contenido a funciones que esperen unas entradas y salidas determinadas, funciones que pueden ser enlazadas al framework para ser invocadas automáticamente ante los cambios en la aplicación.
  • ASE está soportado por el workspace de AFRYCA y sus elementos pueden precargase. Los elementos precargados se incluyen directamente en los plug-ins de AFRYCA haciendo uso del punto de extensión ofrecido por el workspace. Precargar un script desarrollado en ASE es como incrementar la propia API de AFRYCA. Gran parte de la funcionalidad existente hasta el momento en las versiones de AFRYCA previas a ASE ha sido portada a scripts ASE y precargada en la aplicación.

En esta sección se expone la funcionalidad ofrecida por ASE, para lo cual se aclararán en primer lugar los conceptos usados en ASE así como sus principales elementos precargados. Tras ello se llevará a cabo una exploración de la perspectiva ASE, así como de las vistas y editores contenidas en la misma.

Conceptos

En ASE se usan conceptos que pueden resultar ambiguos para un nuevo usuario de la aplicación. Para evitar confusiones, en esta sección se establece a qué se está haciendo referencia cuando se emplea cada término en esta sección:

  • Script: Guión para la ejecución de un programa.
  • Evaluación: Resultado de la ejecución de algún script.
  • Script categorizable: Tipo de script que admite su categorización
  • Categoría: Agrupación de scripts categorizables.
  • Snippet: Script categorizable con formato libre.
  • Repositorio: Categoría para snippets.
  • Función: Script categorizable que recibe parámetros y devuelve un resultado.
  • Módulo: Categoría para funciones que define el nombre y tipo de los parámetros y el tipo de salida.
  • Parámetro de ejecución: Argumento pasado por valor a una función.
  • Variable del entorno: Variable creada en el entorno en alguna evaluación.
  • Variable de ejecución: Argumento pasado por referencia a una función.
  • Enlace: Elemento del framework vinculado a ASE y del que ASE es notificado ante sus cambios.
  • Enlace a módulo: Envoltura de un módulo que es invocada cuando los enlaces fijados cumplen unas condiciones.
  • Clase precargada: Clase que es importada de forma automática en cada evaluación.
  • Biblioteca: Tipo especial de snippet que es compilado al inicio de la aplicación.
  • Simulación: Evaluación usando un código de entrada predefinido.
  • Fragmento: Script ejecutado en aislamiento que admite variables de ejecución.

ASE-API

Al utilizar ASE no existe un único modo correcto de hacer las cosas, si no que el usuario dispone de un amplio abanico de opciones para realizar las mismas tareas. Para un correcto desempeño empleando ASE, es aconsejable:

  1. Disponer de unos conocimientos mínimos sobre Eclipse RCP y E4, pilares sobre los que se construye AFRYCA. Desde la sección de fundamentos de la guía de desarrollo es posible acceder a diversa documentación sobre las bases de AFRYCA. 
  2. Disponer de un conocimiento medio de la API de AFRYCA, conociendo al menos cuales son los servicios que ofrece AFRYCA y cuales son las clases de su modelo. La sección de desarrollo ofrece toda la información necesaria para salvar este punto.
  3. Disponer de un conocimiento completo de la API de AFRYCA. Desde AFRYCA se incluye el repositorio precargado 'ASE-API' el cual contiene diversos snippets de ejemplo de la API de ASE:
    • Execute function examples: Ejemplos de como ejecutar funciones de forma manual.
    • Execute module binding example: Ejemplo de la ejecución de un enlace a módulo de forma manual.
    • Execute module examples: Ejemplos de como ejecutar módulos de forma manual.
    • Fragments examples: Ejemplos de ejecución de fragmentos. De especial utilidad para el uso de ASE desde el código fuente de los plug-ins.
    • Load snippet examples: Ejemplo de la carga de snippet. De gran utilidad para la definición de funciones.
    • Simulate function example: Ejemplo para la simulación de funciones.
    • Simulate module example: Ejemplo para la simulación de módulos.
    • Scripting examples: Ejemplos de uso de los diferentes engines.
    • Eval snippet examples: Ejemplos de evaluación de snippets en diferentes lenguajes de programación usando los engines.

Bibliotecas

Como se ha introducido en la sección de conceptos, en ASE el término biblioteca hace referencia a un tipo especial de snippet. Un snippet será una biblioteca siempre y cuando se haya definido en el repositorio precargado 'Library'. Una biblioteca será compilada al iniciar la aplicación, por lo que su desempeño será equivalente al del resto del código nativo de AFRYCA.

Aunque no es estrictamente necesario, es muy aconsejable que las bibliotecas se añadan al ámbito global de la aplicación al realizar su definición, y que en su última línea se devuelvan ellas mismas para poder ser cargadas mediante la función 'loadSnippet' del servicio de ASE. Para ello, basta con adaptar la siguiente plantilla, reemplazando '<nombre>' por el nombre de la biblioteca y '<código>' por su código fuente:

var <nombre> = (typeof exports === "undefined")?(function <nombre>() {}):(exports);
if(typeof global !== "undefined") { global.<nombre> = <nombre>; }

<código>

<nombre>

La versión actual de AFRYCA incluye varias bibliotecas precargadas, varias de las cuales reemplazan funcionalidad anteriormente proporcionada desde plug-ins. Es posible revisar el código y funciones de las diferentes bibliotecas desde la propia aplicación:

  • BIRTChartManager: Biblioteca de asistencia para la gestión de gráficos BIRT. Simplifica el acceso a la interfaz de AFRYCA y la actualización de forma asíncrona de las gráficas.
  • HLPR: Biblioteca experimental de soporte a relaciones de preferencia lingüísticas hesitant.
  • LPR: Biblioteca experimental de soporte a relaciones de preferencia lingüísticas.
  • adapters: Biblioteca con funciones de conversión de diverso tipo.
  • behavior: Biblioteca usada por los comportamientos para el cálculo de distribuciones de probabilidad. Emplea internamente las clases precargadas de org.apache.commons.math.
  • behavior_native: Biblioteca usada por los comportamientos para el cálculo de distribuciones de probabilidad. Emplea las funciones de la biblioteca mctad.
  • consensus: Biblioteca con funciones de utilidad en los procesos de alcance de consenso.
  • consistency: Biblioteca con funciones para el análisis de la consistencia en relaciones de preferencia.
  • distance: Biblioteca con funciones para el cálculo de la distancia entre relaciones de preferencia.
  • linear_algebra: Biblioteca con funciones de álgebra lineal.
  • mctad: Biblioteca de terceros con funciones estadísticas. Más documentación en su sitio web: http://erictheise.com/mctad.js/
  • mds: Biblioteca para el escalado multidimensional de las preferencias.
  • metric: Biblioteca experimental de métricas.
  • numeric: Biblioteca de terceros para el análisis numérico. Más documentación en su sitio web: http://numericjs.com/

Perspectiva de ASE

La perspectiva de ASE es la última perspectiva accesible desde el selector de perspectivas y permite gestionar todos los elementos relacionados con ASE e interactuar de forma directa con él usando la consola. Su apariencia incial será similar a la de la siguiente captura.

Perspectiva de ASE

La perspectiva está formada por siete partes, seis vistas más un editor. La utilidad de cada una de las vistas en la gestión de ASE es la siguiente:

  1. Consola de ASE: Editor que permite evaluar cualquier código introducido en ASE y visualizar el resultado de la ejecución. Realiza el resaltado de sintaxis del código.
  2. Vista de enlaces: Muestra los enlaces de AFRYCA en ASE y facilita su inclusión en la consola.
  3. Vista de clases precargadas: Muestra las clases precargadas en ASE y sus diferentes métodos, facilitando su inclusión en la consola y la autogeneración de código.
  4. Vista de variables: Muestra las variables que se han originado al evaluar código en la consola y permite incluirlas en la consola o eliminarlas.
  5. Vista de evaluaciones: Muestra un histórico de las evaluaciones realizadas en la consola y permite visualizar su resultado y volver a incluirlas en la consola.
  6. Vista de snippets: Muestra los snippets y repositorios existentes y permite realizar sus gestión.
  7. Vista de funciones: Muestra las funciones, módulos y enlaces a módulos existentes y permite realizar su gestión.

Seguidamente se revisará la funcionalidad básica de cada vista, esto es, la consola de ase, la vista de enlaces, la vista de clases precargadas, la vista de variables, la vista de evaluaciones, la vista de snippets y la vista de funciones. La creación y modificación de snippets, repositorios, funciones, módulos y enlaces a módulos se revisará de forma separada debido a su mayor complejidad.

Consola de ASE

La consola de ASE es un editor que permite la introducción de código y su evaluación en el engine de ASE, mostrando los resultados obtenidos.

Consola de ASE

De forma vertical, la vista se divide en dos paneles:

  • Entrada: Editor para la introducción de código a ejecutar en ASE. El editor realiza el resaltado de sintaxis del código introducido, mostrando de un modo diferente:
    • Palabras reservadas del lenguaje JavaScript.
    • Comentarios.
    • Cadenas de caracteres.
    • Variables.
    • Enlaces.
    • Clases precargadas.
  • Salida: Muestra los resultados obtenidos en cada ejecución.

Guardar como snippet

Si se cuenta con permisos de escritura en el espacio de trabajo, cualquier código introducido en la entrada de la consola puede ser guardado como snippet invocando el comando 'guardar como snippet'. Al invocar el comando se mostrara el editor de snippets y se empleará como código el valor de entrada existente en la consola.

Evaluar editor

Cualquier código introducido en la entrada de la consola puede ser evaluado invocando el comando 'evaluar editor'. El comando creará de forma interna un snippet que será configurado con todas las clases precargadas de ASE y que será evaluado en el engine de ASE.

Limpiar editor

Para eliminar el contenido de la entrada de la consola puede invocarse el comando 'limpiar editor'. El comando no borra el contenido de la salida.

Vista de enlaces

La vista de enlaces muestra los enlaces establecidos por AFRYCA en ASE.

Vista de enlaces

Para cada enlace, la vista muestra su nombre y un valor abreviado del mismo. Dejando el cursor del ratón sobre el valor durante unos segundos la vista mostrará una ventana emergente con una descripción detallada del valor. En caso de que un enlace no tenga valor establecido, este se mostrará en la vista en color gris claro.

Téngase en cuenta que los nombres de los enlaces corresponden a variables creadas y gestionadas por AFRYCA en ASE, por lo que son variables en uso que no deberían ser modificadas por el usuario. En tal caso el comportamiento de la aplicación podría ser imprevisible.

Para evitar utilizar los nombres de variables más habituales como podrían ser preferences, alternative o expert, y por cuestiones de brevedad, AFRYCA emplea identificadores compactos para los enlaces. Actualmente, los enlaces establecidos por AFRYCA en ASE son los siguientes:

  • Groovy: Engine Groovy para código groovy.
  • JRuby: Engine JRuby para código ruby.
  • Jython: Engine Jython para código python.
  • LuaJ: Engine LuaJ para código lua.
  • Scala: Engine Scala para código scala.
  • R: Engine de soporte para la JRI de R para código r.
  • ase: Servicio ASE.
  • birt: Servicio BIRT.
  • ui: Acceso a la interfaz de Eclipse.
  • sWork: Servicio Workspace.
  • sGDMP: Servicio GDMP.
  • gdmp: GDMP seleccionado.
  • fpr: FPR del experto seleccionado.
  • eNum: Número de expertos del GDMP seleccionado.
  • eId: Identificador del experto seleccionado.
  • ePos: Posición del experto seleccionado en el GDMP.
  • aNum: Número de alternativas del GDMP seleccionado.
  • aId: Identificador de la alternativa seleccionada.
  • aPos: Posición de la alternativa seleccionada en el GDMP.
  • sCM: Servicio ConsensusModel.
  • cmId: Identificador del modelo de consenso seleccionado.
  • conf: Configuración seleccionada.
  • sBeh: Servicio Behavior.
  • behId: Identificador del comportamiento seleccionado.
  • att: Actitud seleccionada.
  • sSim: Servicio Simulation.
  • sim: Simulación seleccionada.
  • simStack: Pila de simulaciones.
  • irSim: Ronda inicial seleccionada en la simulación.
  • frSim: Ronda final seleccionada en la simulación.
  • eSim: Experto seleccionado en la simulación.
  • aSim: Alternativa seleccionada en la simulación.

Pegar enlace

Invocando el comando 'pegar enlace' el nombre del enlace seleccionado en la vista será pegado en la entrada de la consola. El comando será también invocado haciendo doble clic sobre cualquier enlace.

Reemplazar contenido del editor con enlace

Invocando el comando 'reemplazar contenido del editor con enlace' el nombre del enlace seleccionado en la vista reemplazará cualquier contenido existente en la entrada de la consola.

Vista de clases precargadas

La vista de clases precargadas muestra el conjunto de clases que son precargadas en los scripts ejecutados en ASE.

Vista de clases precargadas

Como se ha especificado con anterioridad y se expone con mayor detalle en la guía de desarrollo, AFRYCA permite establecer diferentes clases a precargar extendiendo un punto de extensión. Las clases precargadas no son más que clases Java que son importadas automáticamente en cada script, lo cual redunda en que:

  • Se evita importar de forma más anual las clases más comunmente empleadas.
  • El editor de ASE será capaz de resaltarlas en el código al reconocerlas como parte de la funcionalidad de ASE.
  • Serán mostradas en la vista de clases precargadas lo cual facilitará conocer su interfaz.

La vista muestra las clases en modo de árbol, empleando diferentes iconos para representar interfaces, clases, constructores, métodos y campos estáticos.

Pegar elemento precargado

Invocando el comando 'pegar elemento precargado' el nombre de la clase o campo de esta seleccionado en la vista será pegado en la entrada de la consola.

Reemplazar contenido del editor con elemento precargado

Invocando el comando 'reemplazar contenido del editor con elemento precargado' el nombre de la clase o campo de esta seleccionado en la vista reemplazará cualquier contenido existente en la entrada de la consola.

Pegar instrucción

Invocando el comando 'pegar instrucción' se generará una instrucción válida para ASE a partir del nombre de la clase o campo de esta seleccionado en la vista y será pegada en la entrada de la consola. El comando será también invocado haciendo doble clic sobre cualquier enlace.

Reemplazar contenido del editor con instrucción

Invocando el comando 'reemplazar contenido del editor con instrucción' se generará una instrucción válida para ASE a partir del nombre de la clase o campo de esta seleccionado en la vista que reemplazará cualquier contenido existente en la entrada de la consola.

Vista de variables

La vista de variables muestra las variables que se han creado en la consola de ASE al realizar evaluaciones.

Vista de variables

Para cada variable la vista muestra su identificador y el valor del mismo.

Pegar variable

Invocando el comando 'pegar variable' el nombre de la variable seleccionada en la vista será pegado en la entrada de la consola. El comando será también invocado haciendo doble clic sobre cualquier enlace.

Reemplazar contenido del editor con variable

Invocando el comando 'reemplazar contenido del editor con variable' el nombre de la variable seleccionada en la vista reemplazará cualquier contenido existente en la entrada de la consola.

Eliminar variable

Invocando el comando 'eliminar variable' la variable seleccionada en la vista será eliminada. Cabe notar que la implementación de Nashorn usada no realiza correctamente la eliminación de variables, por lo que su eliminación es simulada estableciendo su valor a null.

Vista de evaluaciones

La vista de evaluaciones muestra una lista cronológica que permite navegar entre las diferentes evaluaciones realizadas en la consola.

Vista de evaluaciones

Por cada evaluación realizada la vista muestra una entrada con la hora exacta de ejecución de la misma. Dejando el cursor del ratón sobre cualquiera de ellas, la vista mostrará una ventana emergente que contendrá el código ejecutado y el resultado obtenido en la ejecución. 

Pegar evaluación

Invocando el comando 'pegar evaluación' el código de la evaluación seleccionada será pegado en la entrada de la consola. El comando será también invocado haciendo doble clic sobre cualquier enlace.

Reemplazar contenido del editor con evaluación

Invocando el comando 'reemplazar contenido del editor con evaluación' el código de la evaluación seleccionada en la vista reemplazará cualquier contenido existente en la entrada de la consola.

Vista de snippets

La vista de snippets muestra los snippets y repositorios existentes en el espacio de trabajo de la aplicación y permite trabajar con ellos.

Vista de snippets

La vista se organiza de forma jerárquica en forma de árbol, mostrándose en el primer nivel de la jerarquía los diferentes repositorios, los cuales pueden ser desplegados para visualizar los snippets contenidos.

La vista permite establecer el elemento seleccionado haciendo clic sobre él, no permitiéndose la selección múltiple de elementos.

Pegar snippet

Invocando el comando 'pegar snippet' el código del snippet seleccionado será pegado en la entrada de la consola. El comando será también invocado haciendo doble clic sobre cualquier snippet.

Reemplazar contenido del editor con snippet

Invocando el comando 'reemplazar contenido del editor con snippet' el código del snippet seleccionado en la vista reemplazará cualquier contenido existente en la entrada de la consola.

Eliminar snippet

Con la eliminación del snippet este será suprimido del espacio de trabajo. Como es lógico, la opción estará disponible siempre y cuando se haya seleccionado un snippet, no se trate de un elemento nativo de la aplicación y se dispongan de permisos de escritura en el directorio de trabajo.

Si se cumplen las condiciones anteriores, invocando el comando 'eliminar snippet' será solicitada confirmación y eliminado el snippet.

Eliminar repositorio

La eliminación de un repositorio suprime tanto el elemento como sus snippets del espacio de trabajo. Por ello, la opción estará disponible siempre y cuando se haya seleccionado un repositorio, no se trate de un elemento nativo de la aplicación, se dispongan de permisos de escritura en el directorio de trabajo y se cumplan las condiciones necesarias para poder eliminar sus snippets.

Si se cumplen las condiciones anteriores, invocando el comando 'eliminar repositorio' será solicitada confirmación y eliminado el repositorio y sus snippets.

Vista de funciones

La vista de funciones muestra las funciones, módulos y enlaces a módulos existentes en el espacio de trabajo de la aplicación y permite trabajar con ellos.

Vista de funciones

De forma similar a la vista de snippets, la vista se organiza de forma jerárquica en forma de árbol, estando en el primer nivel de la jerarquía los diferentes módulos y en el segundo nivel los enlaces a módulos y funciones, los cuales son mostrados de arriba a abajo en este orden.

De igual modo que la vista de snippet, permite establecer el elemento seleccionado haciendo clic sobre él, no permitiéndose la selección múltiple de elementos.

Pegar función

Invocando el comando 'pegar función' será generada una función a partir del código de la función seleccionada y los parámetros especificados por su módulo que será pegada en la entrada de la consola. El comando será también invocado haciendo doble clic sobre cualquier snippet.

Reemplazar contenido del editor con función

Invocando el comando 'reemplazar contenido del editor con función' será generada una función a partir del código de la función seleccionada y los parámetros especificados por su módulo que reemplazará cualquier contenido existente en la entrada de la consola.

Eliminar función

Al eliminar una función esta es suprimida del espacio de trabajo. Al igual que con los snippets, la opción estará disponible siempre y cuando se haya seleccionado una función, no se trate de un elemento nativo de la aplicación y se dispongan de permisos de escritura en el directorio de trabajo.

Si se cumplen las condiciones anteriores, invocando el comando 'eliminar función' será solicitada confirmación y eliminada la función.

Eliminar enlace a módulo

La eliminación de un enlace a módulo suprime el elemento del espacio de trabajo. Al igual que antes, la opción estará disponible siempre y cuando se haya seleccionado un enlace a módulo, no se trate de un elemento nativo de la aplicación y se dispongan de permisos de escritura en el directorio de trabajo.

Si se cumplen las condiciones anteriores, invocando el comando 'eliminar enlace a módulo' será solicitada confirmación y eliminado el enlace a módulo.

Eliminar módulo

La eliminación de un módulo suprimirá tanto el elemento como sus funciones y enlaces a módulos del espacio de trabajo. Por ello, la opción estará disponible siempre y cuando se haya seleccionado un módulo, no se trate de un elemento nativo de la aplicación, se dispongan de permisos de escritura en el directorio de trabajo y se cumplan las condiciones necesarias para poder eliminar sus funciones y enlaces a módulos.

Si se cumplen las condiciones anteriores, invocando el comando 'eliminar módulo' será solicitada confirmación y eliminado el módulo y sus funciones y enlaces a módulos.

Creación de un repositorio

AFRYCA ofrece una ventana de diálogo con la que es posible crear y editar repositorios.

Crear repositorio

Para crear un repositorio únicamente es necesario contar con permisos de escritura en el espacio de trabajo. Si se disponen de estos permisos será posible invocar el comando 'nuevo repositorio', el cual desplegará una ventana de diálogo que permitirá realizar su creación.

Nuevo repositorio

Para la creación se deben especificar los siguientes campos:

  • Nombre: Identificador del repositorio.
  • Descripción: Descripción del repositorio.

Introducida la información solicita y tras pulsar el botón 'Ok' AFRYCA solicitará el nombre del archivo para el nuevo repositorio y realizará su creación en el espacio de trabajo.

Editar repositorio

AFRYCA permite modificar los repositorios del espacio de trabajo, para lo cual es empleado el mismo cuadro de diálogo anterior en modo edición.

Edición del repositorio ASE-API

Siempre y cuando se haya seleccionado un repositorio será posible invocar el comando 'editar repositorio' para realizar su edición. En caso de que no se dispongan de permisos para editar el elemento por tratarse de un elemento nativo o no disponerse de permisos en el espacio de trabajo, el cuadro de diálogo no permitirá su modificación, pero si permitirá visualizar su contenido.

Creación de un snippet

Igual que con los repositorios, AFRYCA ofrece una ventana de diálogo desde la que es posible crear y editar snippets.

Crear snippet

Para crear un snippet es necesario que exista al menos un repositorio y contar con permisos de escritura en el espacio de trabajo. Si se cumplen estas condiciones será posible invocar el comando 'nuevo snippet', el cual desplegará una ventana de diálogo que permitirá realizar su creación.

Nuevo snippet

Para la creación se deben especificar los siguientes campos:

  • Nombre: Identificador del snippet.
  • Repositorio: Identificador del repositorio en el que estará contenido el snippet. Puede pulsarse el botón 'Abrir' para visualizar sus datos.
  • Descripción: Descripción del snippet.
  • Código: Código fuente del snippet.

Introducida la información solicita y tras pulsar el botón 'Ok' AFRYCA solicitará el nombre del archivo para el nuevo snippet y realizará su creación en el espacio de trabajo.

Editar snippet

Al igual que con los repositorios, AFRYCA permite modificar los snippets del espacio de trabajo, para lo cual es empleado el mismo cuadro de diálogo anterior en modo edición.

Edición del snippet Scripting examples

Nuevamente, será posible invocar el comando 'editar snippet' siempre que exista un snippet seleccionado. Si el snippet se trata de un elemento nativo o no se disponen de permisos de escritura en el espacio de trabajo el cuadro de diálogo no permitirá su modificación.

Creación de un módulo

AFRYCA ofrece una ventana de diálogo desde la que es posible crear y editar módulos.

Crear módulo

Para crear un módulo únicamente es necesario contar con permisos de escritura en el espacio de trabajo. Si se disponen de estos permisos será posible invocar el comando 'nuevo módulo', el cual desplegará una ventana de diálogo que permitirá realizar su creación.

Nuevo módulo

Para la creación se deben especificar los siguientes campos:

  • Nombre: Identificador del módulo.
  • Descripción: Descripción del módulo.
  • Parámetros de entrada: Parámetros de entrada para las funciones del módulo. Un parámetro estará caracterizado por su identificador y su tipo, ofreciendo AFRYCA una ventana de diálogo que facilita su definición.
  • Código para la simulación del módulo: Código fuente para la simulación del módulo.
  • Salida: Tipo de la salida del módulo.

Introducida la información solicita y tras pulsar el botón 'Ok' AFRYCA solicitará el nombre del archivo para el nuevo módulo y realizará su creación en el espacio de trabajo.

Nuevo parámetro de módulo

Editar módulo

Al igual que en los otros casos, AFRYCA permite modificar los módulos del espacio de trabajo empleado el mismo cuadro de diálogo anterior en modo edición.

Edición del módulo CompleteFPR

Nuevamente, será posible invocar el comando 'editar módulo' siempre que exista un módulo seleccionado, pero si se trata de un elemento nativo o no se disponen de permisos de escritura en el espacio de trabajo el cuadro de diálogo no permitirá su modificación.

Creación de una función

Como en los casos anteriores, AFRYCA ofrece una ventana de diálogo desde la que es posible crear y editar funciones.

Crear función

De forma similar a la creación de un snippet, para crear una función es necesario que exista al menos un módulo y contar con permisos de escritura en el espacio de trabajo. Si se cumplen estas condiciones será posible invocar el comando 'nueva función', el cual desplegará una ventana de diálogo que permitirá realizar su creación.

Nueva función

Para la creación se deben especificar los siguientes campos:

  • Nombre: Identificador de la función.
  • Módulo: Identificador del módulo en el que estará contenida la función. Puede pulsarse el botón 'Abrir' para visualizar sus datos.
  • Descripción: Descripción de la función.
  • Código: Código fuente de la función. Su última línea debe de comenzar con la palabra reservada 'return' seguida del valor a devolver por la función.

Introducida la información solicita y tras pulsar el botón 'Ok' AFRYCA solicitará el nombre del archivo para la nueva función y realizará su creación en el espacio de trabajo.

Editar función

Como en los otros casos, AFRYCA permite modificar las funciones del espacio de trabajo empleado el mismo cuadro de diálogo anterior en modo edición.

Edición de la función FedrizziCO

Siempre y cuando se haya seleccionado una función será posible invocar el comando 'editar función', pero como en los otros casos, si se trata de un elemento nativo o no se disponen de permisos de escritura en el espacio de trabajo el cuadro de diálogo no permitirá su modificación.

Creación de un enlace a módulo

Para la creación y edición de los enlaces a módulos AFRYCA ofrece una nueva ventana de diálogo.

Crear enlace a módulo

De forma idéntica a las funciones, para crear un enlace a módulo es necesario que exista al menos un módulo y contar con permisos de escritura en el espacio de trabajo. Si se cumplen estas condiciones será posible invocar el comando 'nuevo enlace a módulo', el cual desplegará una ventana de diálogo que permitirá realizar su creación.

Nuevo enlace a módulo

Para la creación se deben especificar los siguientes campos:

  • Nombre: Identificador del enlace a módulo.
  • Módulo: Identificador del módulo que será enlazado. Puede pulsarse el botón 'Abrir' para visualizar sus datos.
  • Enlaces: Variables de AFRYCA enlazadas desde ASE que deben tener un valor asignado para que el módulo pueda evaluarse. AFRYCA ofrece una ventana de diálogo para su selección.
  • Enlaces a fuentes de eventos: Variables de AFRYCA enlazadas desde ASE cuya modificación implicará la actualización del enlace a módulo. AFRYCA ofrece una ventana de diálogo para su selección
  • Conversión de entrada: Código para la preparación de la invocación del módulo enlazado.
  • Conversión de salida: Código para la adaptación de los resultados a partir de los resultados del módulo enlazado. El resultado del módulo está disponible en la variable reservada 'mbresult'.
  • Salida: Tipo de la salida del enlace a módulo.

Introducida la información solicita y tras pulsar el botón 'Ok' AFRYCA solicitará el nombre del archivo para el nuevo enlace a módulo y realizará su creación en el espacio de trabajo.

Selección de enlace

Editar enlace a módulo

Al igual que en todos los casos vistos, AFRYCA permite modificar los enlaces a módulos del espacio de trabajo empleado el mismo cuadro de diálogo anterior en modo edición.

Edición del enlace a módulo Simulation consistency

Si se ha seleccionado un enlace a módulo será posible invocar el comando 'editar enlace a módulo', pero como siempre, si se trata de un elemento nativo o no se disponen de permisos de escritura en el espacio de trabajo el cuadro de diálogo no permitirá su modificación.