Descripción
La principal novedad en el desarrollo de AFRYCA se produce con el lanzamiento de ASE en la versión 3 de AFRYCA. ASE, acrónimo de AFRYCA Scripting Environment, es un entorno integrado para el desarrollo y ejecución de scripts en diversos lenguajes de programación.
ASE está construido sobre la especificación JSR 223 y emplea el engine Nashorn de JavaScript. El entorno ofrece una consola en la que ejecutar scripts JavaScript desde los que es posible acceder a las datos de la aplicación e incluso modificar las diferentes clases que conforman AFRYCA en tiempo de ejecución, permitiendo de este modo hacer casi cualquier cosa que se desee.
Además, el entorno despliega a su vez diferentes engines que permiten programar en Groovy, Scala, Ruby, Python y Lua. Adicionalmente, ofrece facilidades para utilizar el entorno estadístico R como un engine de ASE más.
Features
La funcionalidad se proporciona desde las siguientes features:
afryca.ase.feature
Plug-ins para la funcionalidad básica de ASE
- Plug-ins incluidos:
- afryca.ase
afryca.ase.gui.feature
Plug-ins para la funcionalidad gráfica de ASE
- Plug-ins incluidos:
- afryca.ase.gui
- afryca.parametervalueconverterhelper
- org.eclipse.wb.swt
- Features incluidas:
- afryca.ase.feature
afryca.ase.engine.default.feature
Plug-ins que añaden engines a ASE
- Plug-ins incluidos:
- afryca.ase.engine.Groovy
- afryca.ase.engine.JRuby
- afryca.ase.engine.Jython
- afryca.ase.engine.LuaJ
- afryca.ase.engine.R
- afryca.ase.engine.R.gui
- afryca.ase.engine.Scala
- Jython
- org.codehaus.groovy
- org.eclipse.wb.swt
- org.jruby
- org.luaj
- scala
- Features incluidas:
- afryca.ase.gui.feature
Plug-ins
Los plug-ins desarrollados de forma específica para proveer su funcionalidad son los siguientes:
afryca.ase
Funcionalidad básica de ASE
- Dependencias:
- afryca.parametervalueconverterhelper
- afryca.workspace.service.events
- org.eclipse.core.runtime
- org.eclipse.core.commands
- org.eclipse.e4.core.di
- org.eclipse.e4.core.services
- org.eclipse.e4.core.contexts
- org.eclipse.e4.ui.workbench
- org.eclipse.e4.ui.model.workbench
- org.apache.commons.io
- org.eclipse.ui
- org.eclipse.e4.core.di.extensions
afryca.ase.gui
Funcionalidad gráfica de ASE
- Dependencias:
- afryca.ase
- afryca.parametervalueconverterhelper
- org.eclipse.wb.swt
- org.eclipse.core.runtime
- org.eclipse.core.expressions
- org.eclipse.e4.core.di
- org.eclipse.e4.core.services
- org.eclipse.e4.core.contexts
- org.eclipse.e4.core.commands
- org.eclipse.e4.ui.di
- org.eclipse.e4.ui.services
- org.eclipse.e4.ui.workbench
- org.eclipse.e4.ui.model.workbench
- org.eclipse.jface
- org.eclipse.ui
afryca.ase.engine.Groovy
Engine para Groovy
- Dependencias:
- org.codehaus.groovy
- afryca.ase
- org.eclipse.core.runtime
- org.eclipse.e4.core.di
- org.eclipse.e4.core.contexts
- org.eclipse.e4.core.services
- org.eclipse.e4.ui.model.workbench
afryca.ase.engine.JRuby
Engine para Ruby
- Dependencias:
- org.jruby
- afryca.ase
- org.eclipse.core.runtime
- org.eclipse.e4.core.di
- org.eclipse.e4.core.contexts
- org.eclipse.e4.core.services
- org.eclipse.e4.ui.model.workbench
afryca.ase.engine.Jython
Engine para Python
- Dependencias:
- Jython
- afryca.ase
- org.eclipse.core.runtime
- org.eclipse.e4.core.di
- org.eclipse.e4.core.contexts
- org.eclipse.e4.core.services
- org.eclipse.e4.ui.model.workbench
afryca.ase.engine.LuaJ
Engine para Lua
- Dependencias:
- org.luaj
- afryca.ase
- org.eclipse.core.runtime
- org.eclipse.e4.core.di
- org.eclipse.e4.core.contexts
- org.eclipse.e4.core.services
- org.eclipse.e4.ui.model.workbench
afryca.ase.engine.R
Engine para R
- Dependencias:
- afryca.ase
- org.eclipse.core.runtime
- org.eclipse.e4.core.di
- org.eclipse.e4.core.contexts
- org.eclipse.e4.core.services
- org.eclipse.e4.ui.model.workbench
afryca.ase.engine.R
Funcionalidad gráfica para el engine R
- Dependencias:
- afryca.ase.engine.R
- org.eclipse.core.runtime
- org.eclipse.e4.core.di
- org.eclipse.e4.core.services
- org.eclipse.e4.core.contexts
- org.eclipse.e4.core.di.extensions
- org.eclipse.e4.ui.services
- org.eclipse.jface
- org.eclipse.e4.ui.model.workbench
- afryca.ase
- org.eclipse.wb.swt
- org.eclipse.e4.ui.di
afryca.ase.engine.Scala
Engine para Scala
- Dependencias:
- scala
- afryca.ase
- org.eclipse.core.runtime
- org.eclipse.e4.core.di
- org.eclipse.e4.core.contexts
- org.eclipse.e4.core.services
- org.eclipse.e4.ui.model.workbench
afryca.rcp.ase.context
Ejecución de ASE en el contexto de la aplicación AFRYCA y así acceder a toda su funcionalidad. Es añadido desde la feature de la aplicación RCP.
- Dependencias:
- afryca.ase
- afryca.birt
- afryca.simulation
- afryca.workspace
- org.apache.commons.math3
- org.eclipse.core.runtime
- org.eclipse.e4.core.services
- org.eclipse.e4.core.di
- org.eclipse.e4.core.di.extensions
- org.eclipse.e4.core.contexts
- org.eclipse.e4.ui.di
- org.eclipse.e4.ui.model.workbench
Estructura
La utilidad de los diferentes paquetes y clases que conforman los plug-ins es la siguiente:
afryca.ase
- afryca.ase
- Binding: Modelo para representar el enlace de una variable.
- ExecutionBuilder: Constructor de ejecuciones en ASE.
- Fragment: Modelo para representar un fragmento de código.
- FragmentBuilder: Constructor para la ejecución de fragmentos en ASE.
- Function: Modelo para representar una función.
- IASEContext: Interfaz del contexto de ejecución de ASE. Debe ser inyectada por una función contextual con acceso a la aplicación principal (ver afryca.rcp.ase.context).
- ICategory: Interfaz para la definición de categorías de scripts.
- IScript: Interfaz para la definición de scripts categorizables.
- Module: Modelo para representar un módulo.
- ModuleBinding: Modelo para representar un enlace a módulo.
- ParametersBuilder: Constructor para la definición de los parámetros de una ejecución.
- Repository: Modelo para representar un repositorio.
- RunnableFragment: Modelo para la definición de fragmentos ejecutables en el contexto de ASE.
- RunnableScript: Modelo para la definición de scripts ejecutables en el contexto de ASE.
- Snippet: Modelo para la representación de un snippet de código.
- Variable: Modelo para representar una variable.
- afryca.ase.command
- EvalScript: Controlador para la evaluación de un script.
- OpenCategory: Controlador para la lectura de una categoría de scripts.
- OpenModuleBinding: Controlador para la lectura de un enlace a módulo.
- OpenScript: Controlador para la lectura de un script categorizable.
- RemoveVariable: Controlador para la eliminación de una variable.
- SaveCategory: Controlador para el almacenamiento de una categoría de scripts.
- SaveModuleBinding: Controlador para el almacenamiento de un enlace a módulo.
- SaveScript: Controlador para el almacenamiento de un script categorizable.
- afryca.ase.command.parameter
- CategoryParameterValueConverter: Conversor de parámetro Category.
- CategoryParameterValueConverterHelper: Asistente para el conversor de parámetro Category.
- FunctionParameterValueConverter: Conversor de parámetro Function.
- FunctionParameterValueConverterHelper: Asistente para el conversor de parámetro Function.
- ModuleBindingParameterValueConverter: Conversor de parámetro ModuleBinding.
- ModuleBindingParameterValueConverterHelper: Asistente para el conversor de parámetro ModuleBinding.
- ModuleValueConverter: Conversor de parámetro Module.
- ModuleValueConverterHelper: Asistente para el conversor de parámetro Module.
- RepositoryParameterValueConverter: Conversor de parámetro Repository.
- RepositoryParameterValueConverterHelper: Asistente para el conversor de parámetro Repository.
- ScriptParameterValueConverter: Conversor de parámetro Script.
- ScriptParameterValueConverterHelper: Asistente para el conversor de parámetro Script.
- SnippetParameterValueConverter: Conversor de parámetro Snippet.
- SnippetParameterValueConverterHelper: Asistente para el conversor de parámetro Snippet.
- afryca.ase.definition
- PreloadedClass: Definición de elementos del punto de extensión de clases precargadas.
- afryca.ase.engine
- IEngine: Interfaz a implementar por los engines de ASE.
- OSGiScriptEngine: Adaptación de la especificación JSR 223 a OSGi.
- OSGiScriptEngineFactory: Adaptación de ScriptEngineFactory a OSGi.
- OSGiScriptEngineManager: Adaptación de ScriptEngineManager a OSGi.
- afryca.ase.l10n: Mensajes de localización en diferentes idiomas.
- afryca.ase.service
- IASEService: Interfaz del servicio ASE.
- afryca.ase.service.events
- IASEServiceEvents: Definición de eventos lanzados por el servicio ASE a través del broker de E4.
- afryca.ase.service.provider
- ASEServiceContextFunction: Función contextual empleada para instanciar el servicio ASE cuando se solicita su inyección.
- ASEServiceProvider: Proveedor del servicio ASE.
- afryca.ase.service.provider.job
- ExecuteModuleBindingScriptsJob: Trabajo eclipse para la ejecución de los scripts de un enlace a módulo.
afryca.ase.gui
- afryca.ase.gui.addon
- ToolItemVisibilityAddon: Add-on para la gestión de la visibilidad de los toolitems en función de la perspectiva seleccionada.
- afryca.ase.gui.command
- ClearEditor: Controlador para limpiar el contenido del editor de la consola.
- EditFunction: Controlador para editar una función.
- EditModule: Controlador para editar un módulo.
- EditModuleBinding: Controlador para editar un enlace a módulo.
- EditRepository: Controlador para editar un repositorio.
- EditSnippet: Controlador para editar un snippet.
- EvalEditor: Controlador para evaluar el contenido del editor de la consola.
- GetBinding: Controlador para la obtención del binding seleccionado.
- GetEditor: Controlador para la obtención del editor.
- GetEval: Controlador para la obtención de la evaluación seleccionada.
- GetPreloadedElement: Controlador para la obtención del elemento precargado seleccionado.
- GetVariable: Controlador para la obtención de la variable seleccionada.
- NewFunction: Controlador para crear una nueva función solicitando sus valores.
- NewModule: Controlador para crear un nuevo módulo solicitando sus valores.
- NewModuleBinding: Controlador para crear un nuevo enlace a módulo solicitando sus valores.
- NewRepository: Controlador para crear un nuevo repositorio solicitando sus valores.
- NewSnippet: Controlador para crear un nuevo snippet solicitando sus valores.
- PasteBinding: Controlador para pegar en enlace seleccionado en la consola.
- PasteEval: Controlador para pegar la evaluación seleccionada en la consola.
- PasteFunction: Controlador para pegar la función seleccionada en la consola.
- PasteInEditor: Controlador para pegar un elemento en la consola.
- PasteInstruction: Controlador para pegar una instrucción generada a partir de un elemento precargado en la consola.
- PastePreloadedElement: Controlador para pegar el elemento precargado seleccionado en la consola.
- PasteSnippet: Controlador para pegar el snippet seleccionado en la consola.
- PasteVariable: Controlador para pegar la variable seleccionada en la consola.
- ReadEditor: Controlador para la obtención del contenido de la consola.
- RemoveVariable: Controlador para la eliminación de una variable.
- ReplaceEditorContent: Controlador para reemplazar el contenido de la consola con un nuevo valor.
- RaplaceEditorContentWithBinding: Controlador para reemplazar el contenido de la consola con el enlace seleccionado.
- RaplaceEditorContentWithEval: Controlador para reemplazar el contenido de la consola con la evaluación seleccionada.
- RaplaceEditorContentWithFunction: Controlador para reemplazar el contenido de la consola con la función seleccionada.
- RaplaceEditorContentWithInstruction: Controlador para reemplazar el contenido de la consola con la instrucción generada a partir del elemento precargado seleccionado.
- RaplaceEditorContentWithPreloadedElement: Controlador para reemplazar el contenido de la consola con el elemento precargado seleccionado.
- RaplaceEditorContentWithSnippet: Controlador para reemplazar el contenido de la consola con el snippet seleccionado.
- RaplaceEditorContentWithVariable: Controlador para reemplazar el contenido de la consola con la variable seleccionada.
- SaveAsSnippet: Controlador para guardar un fragmento de código como un snippet.
- afryca.ase.gui.command.parameter
- BooleanParameterValueConverter: Conversor de parámetro boolean.
- BooleanParameterValueConverterHelper: Asistente para el conversor de parámetro booleano.
- StringSetParameterValueConverter: Conversor de parámetro para un conjunto de strings.
- StringSetParameterValueConverterHelper: Asistente para el conversor de parámetro de un conjunto de strings.
- afryca.ase.gui.composite
- IModuleBindingTableViewerContainer: Interfaz a implementar por un visor de tablas de enlaces a módulos.
- JavaScriptEditor: Widget SWT para la edición de texto con resaltado de sintaxis JavaScript.
- JavaScriptLineStyler: Listener para el resaltado de sintaxis JavaScript.
- ModuleBindingsComposite: Composite para la visualización de un conjunto de tablas de enlaces a módulos.
- ModuleBindingsTableViewer: Composite para la visualización de una tabla de enlaces a módulos.
- OutputLineStyler: Widget SWT para la visualización de los resultados de ASE.
- OutputStyledText: Listener para el resaltado de los valores de un OutputLineStyler.
- afryca.ase.gui.composite.job
- ExecuteModuleBindingJob: Trabajo eclipse para la ejecución de un enlace a módulo.
- afryca.ase.gui.composite.provider
- ModuleBindingContentProvider: Proveedor de contenido de enlaces a módulos.
- ModuleBindingFunctionNameColumnLabelProvider: Proveedor de etiqueta de nombre de función en enlace a módulo.
- ModuleBindingFunctionValueColumnLabelProvider: Proveedor de etiqueta de valor de función en enlace a módulo.
- afryca.ase.gui.dialog
- BindingDialog: Ventana de diálogo para la edición de un enlace de un enlace a módulo.
- FunctionDialog: Ventana de diálogo para la edición de una función.
- ModuleBindingDialog: Ventana de diálogo para la edición de un enlace a módulo.
- ModuleDialog: Ventana de diálogo para la edición de un módulo.
- ParameterDialog: Ventana de diálogo para la edición de un parámetro de un módulo.
- RepositoryDialog: Ventana de diálogo para la edición de un repositorio.
- afryca.ase.gui.dialog.provider
- BindingsColumnLabelProvider: Proveedor de etiqueta de enlaces.
- BindingsContentProvider: Proveedor de contenido de enlaces.
- InputContentProvider: Proveedor de contenido para un valor de entrada.
- InputParameterColumnLabelProvider: Proveedor de etiqueta para un parámetro de entrada.
- InputValueColumnLabelProvider: Proveedor de etiqueta para el valor de un parámetro de entrada.
- afryca.ase.gui.icons: Rutas localizadas a los iconos usados en diferentes idiomas.
- afryca.ase.gui.l10n: Mensajes de localización en diferentes idiomas.
- afryca.ase.gui.part
- BindingsPart: Parte para la gestión de los enlaces del entorno.
- ConsolePart: Parte para la interacción con ASE empleando fragmentos de código.
- EvalsPart: Para para la gestión de las evaluaciones realizadas en la consola.
- IASEEditor: Interfaz a implementar por un editor de ASE.
- PreloadedClassesPart: Parte para la gestión de las clases precargadas en ASE.
- ScriptsPart: Parte abstracta a implementar para la gestión de scripts categorizables.
- VariablesPart: Parte para la gestión de las variables del entorno.
- afryca.ase.gui.part.provider
- BindingNameColumnLabelProvider: Proveedor de etiqueta de nombre de enlace.
- BindingsContentProvider: Proveedor de contenido de enlaces.
- BindingValueColumnLabelProvider: Proveedor de etiqueta de valor de enlace.
- EvalLabelProvider: Proveedor de etiqueta de evaluación.
- EvalsContentProvider: Proveedor de contenido de evaluaciones.
- PreloadedClassesContentProvider: Proveedor de contenido de clases precargadas.
- ProloadedClassesLabelProvider: Proveedor de etiqueta de clases precargadas.
- ScriptsContentProvider: Proveedor de contenido de scripts categorizable.
- ScriptsLabelProvider: Proveedor de etiquetas de scripts categorizables.
- VariableNameColumnLabelProvider: Proveedor de etiqueta de nombre de variable.
- VariablesContentProvider: Proveedor de contenido de variables.
- VariableValueColumnLabelProvider: Proveedor de etiqueta de valor de variable.
afryca.ase.engine.Groovy
- afryca.ase.engine.Groovy
- Groovy: Engine para ASE.
- afryca.ase.engine.Groovy.addon
- GroovyEngineAddon: Add-on para la carga en segundo plano del engine al iniciar la aplicación. Dentro del trabajo solicita la inyección del proveedor del engine, para lo cual es invocada la función contextual e instanciada la implementación por defecto del proveedor.
- afryca.ase.engine.Groovy.provider
- IGroovyEngineProvider: Proveedor de engine.
- afryca.ase.engine.Groovy.provider.internal
- GroovyEngineDefaultProvider: Implementación por defecto del proveedor del engine.
- GroovyEngineProviderContextFunction: Función contextual para la inyección del proveedor del engine. Configurada en OSGI-INF/groovy_engine_provider_context_function.xml.
afryca.ase.engine.JRuby
- JRuby: Engine para ASE.
afryca.ase.engine.JRuby
- afryca.ase.engine.JRuby.addon
- JRubyEngineAddon: Add-on para la carga en segundo plano del engine al iniciar la aplicación. Dentro del trabajo solicita la inyección del proveedor del engine, para lo cual es invocada la función contextual e instanciada la implementación por defecto del proveedor.
- afryca.ase.engine.JRuby.provider
- IJRubyEngineProvider: Proveedor de engine.
- afryca.ase.engine.JRuby.provider.internal
- JRubyEngineDefaultProvider: Implementación por defecto del proveedor del engine.
- JRubyEngineProviderContextFunction: Función contextual para la inyección del proveedor del engine. Configurada en OSGI-INF/jruby_engine_provider_context_function.xml.
afryca.ase.engine.Jython
- afryca.ase.engine.Jython
- Jython: Engine para ASE.
- afryca.ase.engine.Jython.addon
- JythonEngineAddon: Add-on para la carga en segundo plano del engine al iniciar la aplicación. Dentro del trabajo solicita la inyección del proveedor del engine, para lo cual es invocada la función contextual e instanciada la implementación por defecto del proveedor.
- afryca.ase.engine.Jython.provider
- IJythonEngineProvider: Proveedor de engine.
- afryca.ase.engine.Jython.provider.internal
- JythonEngineDefaultProvider: Implementación por defecto del proveedor del engine.
- JythonEngineProviderContextFunction: Función contextual para la inyección del proveedor del engine. Configurada en OSGI-INF/jython_engine_provider_context_function.xml.
afryca.ase.engine.LuaJ
- afryca.ase.engine.LuaJ
- LuaJ: Engine para ASE.
- afryca.ase.engine.LuaJ.addon
- LuaJEngineAddon: Add-on para la carga en segundo plano del engine al iniciar la aplicación. Dentro del trabajo solicita la inyección del proveedor del engine, para lo cual es invocada la función contextual e instanciada la implementación por defecto del proveedor.
- afryca.ase.engine.LuaJ.provider
- ILuaJEngineProvider: Proveedor de engine.
- afryca.ase.engine.LuaJ.provider.internal
- LuaJEngineDefaultProvider: Implementación por defecto del proveedor del engine.
- LuaJEngineProviderContextFunction: Función contextual para la inyección del proveedor del engine. Configurada en OSGI-INF/luaj_engine_provider_context_function.xml.
afryca.ase.engine.R
- afryca.ase.engine.R
- R: Engine para ASE.
- afryca.ase.engine.R.l10n: Mensajes de localización en diferentes idiomas.
- afryca.ase.engine.R.provider
- IREngineProvider: Proveedor de engine.
- afryca.ase.engine.R.provider.internal
- REngineDefaultProvider: Implementación por defecto del proveedor del engine.
- REngineProviderContextFunction: Función contextual para la inyección del proveedor del engine. Configurada en OSGI-INF/rengine_provider_context_function.xml.
afryca.ase.engine.R.gui
- afryca.ase.engine.R.gui.addon
- REngineAddon: Add-on para la carga en segundo plano del engine al iniciar la aplicación. Dentro del trabajo solicita la inyección del proveedor del engine, para lo cual es invocada la función contextual e instanciada la implementación por defecto del proveedor.
- afryca.ase.engine.R.gui.command
- ModifyREnginePreferences: Controlador para la modificación de las preferencias de R.
- ShowRStatus: Controlador para la visualización del estado de R.
- afryca.ase.engine.R.gui.dialog
- REnginePreferencesDialog: Cuadro de diálogo para la modificación de las preferencias de R.
- afryca.ase.engine.icons: Rutas localizadas a los iconos usados en diferentes idiomas.
- afryca.ase.engine.R.l10n: Mensajes de localización en diferentes idiomas.
- afryca.ase.engine.R.gi.prefrences
- PreferenceConstants: Constantes usadas para las preferencias establecidas en el archivo 'preferences.ini'.
afryca.ase.engine.Scala
- afryca.ase.engines.Scala
- Scala: Engine para ASE.
- afryca.ase.engine.Scala.addon
- ScalaEngineAddon: Add-on para la carga en segundo plano del engine al iniciar la aplicación. Dentro del trabajo solicita la inyección del proveedor del engine, para lo cual es invocada la función contextual e instanciada la implementación por defecto del proveedor.
- afryca.ase.engine.Scala.provider
- IScalaEngineProvider: Proveedor de engine.
- afryca.ase.engine.Scala.provider.internal
- ScalaEngineDefaultProvider: Implementación por defecto del proveedor del engine.
- ScalaEngineProviderContextFunction: Función contextual para la inyección del proveedor del engine. Configurada en OSGI-INF/luaj_engine_provider_context_function.xml.
afryca.rcp.ase.context
- afryca.rcp.ase.context
- ASEContextContextFunction: Función contextual para la inyección del contexto de ASE definido por AFRYCA. Configurada en OSGI-INF/ase_context_context_function.xml.
- ASEContextProvider: Implementación por defecto del proveedor de contexto ASE.
- afryca.rcp.ase.context.definition
- EBinding: Enumerado de los elementos de AFRYCA enlazados en ASE.
- EComparableFunction: Enumerado de las funciones de comparación empleadas para comparar enlaces ASE.
- EReadableFunction: Enumerado de las funciones empleadas para leer enlaces ASE.
- afryca.rcp.ase.context.l10n: Mensajes de localización en diferentes idiomas.
Add-ons
La función de los add-ons proporcionados por los plug-ins se indica seguidamente:
afryca.asi.gui.addon.ToolItemVisibilityAddon
Definido en el plug-in afryca.ase.gui e implementado por la clase afryca.ase.gui.addon.ToolItemVisibilityAddon. Registra los cambios de perspectiva para mostrar únicamente en la toolbar de la aplicación los comandos de ASE cuando estos pueden ser de utilidad para el usuario.
afryca.asi.engine.Groovy.addon.GroovyEngineAddon
Definido en el plug-in afryca.ase.engine.Groovy e implementado por la clase afryca.ase.engine.Groovy.addon.GroovyEngineAddon. Carga en segundo plano del engine al iniciar la aplicación.
afryca.asi.engine.JRuby.addon.JRubyEngineAddon
Definido en el plug-in afryca.ase.engine.JRuby e implementado por la clase afryca.ase.engine.JRuby.addon.JRubyEngineAddon. Carga en segundo plano del engine al iniciar la aplicación.
afryca.asi.engine.Jython.addon.JythonEngineAddon
Definido en el plug-in afryca.ase.engine.Jython e implementado por la clase afryca.ase.engine.Jython.addon.JythonEngineAddon. Carga en segundo plano del engine al iniciar la aplicación.
afryca.asi.engine.LuaJ.addon.LuaJEngineAddon
Definido en el plug-in afryca.ase.engine.LuaJ e implementado por la clase afryca.ase.engine.LuaJ.addon.LuaJEngineAddon. Carga en segundo plano del engine al iniciar la aplicación.
afryca.asi.engine.R.gui.addon.REngineAddon
Definido en el plug-in afryca.ase.engine.R.gui e implementado por la clase afryca.ase.engine.R.gui.addon.REngineAddon. Carga en segundo plano del engine al iniciar la aplicación.
afryca.asi.engine.Scala.addon.ScalaEngineAddon
Definido en el plug-in afryca.ase.engine.Scala e implementado por la clase afryca.ase.engine.Scala.addon.ScalaEngineAddon. Carga en segundo plano del engine al iniciar la aplicación.
Puntos de extensión
Los puntos de extensión ofrecidos por los plug-ins se describen a continuación:
afryca.ase.preloadedclass
El plug-in afryca.ase define el punto de extensión afryca.preloadedclass con el esquema definido en el archivo schema/afryca.preloadedclass.exsd. El punto de extensión permite definir clases Java a precargar en los scripts ASE.
- Definición:
- Extensión
- (1 - *) PreloadedClass.
- PreloadedClass (asociado a afryca.ase.definition.PreloadedClass)
- class: Clase a precargar.
- Extensión
Servicio
El plug-in afryca.ase define un servicio declarativo OSGi para ASE. El servicio se define en el archivo OSGI-INF/ase_service_context_function.xml y hace uso de una función contextual eclipse, la cual realiza una instanciación de la clase afryca.ase.service.provider.ASEServiceContextFunction cuando se solicita la inyección del servicio cuya interfaz define afryca.ase.service.IASEService.
- Interfaz del servicio:
- groupUpdatesActive(boolean) // Cambio manual de indicación de actualización grupal. No usar fuera de contexto ASE.
- groupUpdatesStates() : boolean // Información de estado de actualización grupal.
- getEngines() : Map<String, IEngine> // Obtención de los engines ASE.
- addEngine(IEngine) // Adición de un engine ASE.
- getRepositories() : Map<String, Repository> // Obtención de los repositorios del workspace.
- getRepositoryByName(String) : Repository // Devuelve un repositorio dado su nombre.
- getSnippets() : Map<String, Snippet> // Obtención de los snippets del workspace.
- getSnippetByName(String) : Snippet // Obtención de un snippet dado su nombre.
- getRepositorySnippets(String) : List<String> // Obtención del listado de los nombres de los snippets de un repositorio.
- getModules() : Map<String, Module> // Obtención de los módulos del workspace.
- getModuleByName(String) : Module // Obtención de un módulo dado su nombre.
- getModuleFunctions(String) : List<String> // Obtención del listado de los nombres de las funciones de un módulo.
- getFunctions() : Map<String, Function> // Obtención de las funciones del workspace.
- getFunctionByName(String) : Function // Obtención de una función dado su nombre.
- getModuleBindings() : Map<String, ModuleBinding> // Obtención de los enlaces a módulos del workspace.
- getModuleBindingByName(String) : ModuleBinding // Obtención de un enlace a módulo dado su nombre.
- setSelectedRepository(Repository) // Establecimiento del repositorio seleccionado.
- getSelectedRepository() : Repository // Obtención del repositorio seleccionado.
- setSelectedSnippet(Snippet) // Establecimiento del snippet seleccionado.
- getSelectedSnippet() : Snippet // Obtención del snippet seleccionado.
- setSelectedModule(Module) // Establecimiento del módulo seleccionado.
- getSelectedModule() : Module // Obtención del módulo seleccionado.
- setSelectedFunction(Function) // Establecimiento de la función seleccionada.
- getSelectedFunction() : Function // Obtención de la función seleccionada.
- setSelectedModuleBinding(ModuleBinding) // Establecimiento del enlace a módulo seleccionado.
- getSelectedModuleBinding() : ModuleBinding // Obtención del enlace a módulo seleccionado.
- getPreloadedClasses() : List<Class<?>> // Obtención del listado de clases precargadas.
- getBindings() : Map<String, Binding> // Obtención de los enlaces a ASE.
- bind(Binding) // Establecimiento de un enlace a ASE.
- getLibraries() : Map<String, Object> // Obtención de las bibliotecas de ASE.
- getVariables() : Map<String, Variable> // Obtención de las variables de ASE.
- addVariable(Variable) // Establecimiento de una variable en ASE.
- removeVariable(Variable) // Eliminación de una variable de ASE.
- createFragmentBuilder() : FragmentBuilder // Creación de un constructor de fragmentos para la ejecución en ASE.
- eval(Fragment) : RunnableFragment // Evaluación de un fragmento en ASE.
- eval(IScript) : RunnableScript // Evaluación de un script en ASE.
- evalCode(String, String) : Object // Evaluación de un código en un engine ASE indicando el nombre del engine.
- evalCode(Object, String) : Object // Evaluación de un código en un engine ASE indicando el engine.
- evalSnippet(String, String) : Object // Evaluación de un snippet en un engine ASE indicando el nombre del engine y el nombre del snippet.
- evalSnippet(Object, String) : Object // Evaluación de un snippet en un engine ASE indicando el engine y el nombre del snippet.
- simulateFunction(String) : RunnableScript // Simulación de una función dado su nombre.
- simulateModule(String) : Map<String, RunnableScript> // Simulación de todas las funciones de un módulo dado su nombre.
- createExecutionBuilder() : ExecutionBuilder // Creación de un constructor de ejecuciones.
- executeFunction(String, String, Map<String, Object>) : RunnableScript // Ejecución de una función dado su nombre, sus parámetros y las variables de la aplicación.
- executeFunction(String, String) : RunableScript // Ejecución de una función dado su nombre y sus parámetros.
- executeModule(String, String) : Map<String, RunnableScript> // Ejecución de todas las funciones de un módulo dado su nombre y sus parámetros.
- executeModule(String, String, Map<String, Object>) : Map<String, RunnableScript> // Ejecución de todas las funciones de un módulo dado su nombre, sus parámetros y las variables de la aplicación.
- generateFunctionCode(String) : String // Generación del código empleado para invocar una función dado su nombre.
- loadSnippet(String) : Object // Carga de un snippet en ASE dado su nombre.
- getModuleBindingStates() : Map<String, Boolean> // Información sobre las condiciones para la ejecución de los enlaces a módulos.
- executeModuleBinding(String) : Map<String, Optional<RunnableScript>> // Ejecución de un enlace a módulo dado su nombre.
- abortModuleBindingExecution(String) // Cancelación de la ejecución de un enlace a módulo.
Broker
El servicio hace uso del broker de E4 para notificar de diversa información de interés.
- Topics:
- ASE // Raíz.
- ASE/GROUP_UPDATES // Cambio de estado de actualización grupal.
- ASE/ENGINE/NEW // Nuevo engine de ASE
- ASE/PRELOADED_CLASS/UPDATED // Actualización de clases precargadas
- ASE/BINDINGS/NEW // Nuevo enlace
- ASE/BINDING/UPDATED // Actualización de enlace.
- ASE/REPOSITORY/SELECTION // Actualización de repositorio seleccionado.
- ASE/REPOSITORY/CODE // Actualización de repositorio.
- ASE/SNIPPET/SELECTION // Actualización de snippet seleccionado.
- ASE/SNIPPET/CODE // Actualización de snippet.
- ASE/MODULE/SELECTION // Actualización de módulo seleccionado.
- ASE/MODULE/CODE // Actualización de módulo.
- ASE/FUNCTION/SELECTION // Actualización de función seleccionada.
- ASE/FUNCTION/CODE // Actualización de función.
- ASE/VARIABLE/NEW // Nueva variable.
- ASE/VARIABLE/UPDATED // Variable actualizada.
- ASE/VARIABLE/REMOVED // Variable eliminada.
- ASE/LIBRARY/NEW // Biblioteca añadida.
- ASE/LIBRARY/UDPATED // Biblioteca actualizada.
- ASE/EVAL/NEW // Evaluación añadida.
- ASE/MODULE_BINDING/SELECTION // Actualización de enlace a módulo seleccionado.
- ASE/MODULE_BINDING/UPDATED // Actualización de enlace a módulo.
Comandos
Los comandos añadidos por los plug-ins son los siguientes: POR AQUÍ
afryca.ase.command.eval_script
Definido en el plug-in afryca.ase e implementado por la clase afryca.ase.command.EvalScript. Realiza la evaluación de un script categorizable.
afryca.ase.command.open_script
Definido en el plug-in afryca.ase e implementado por la clase afryca.ase.command.OpenScript. Realiza la lectura de un script categorizable.
afryca.ase.command.save_script
Definido en el plug-in afryca.ase e implementado por la clase afryca.ase.command.SaveScript. Realiza el almacenamiento de un script categorizable.
afryca.ase.command.open_category
Definido en el plug-in afryca.ase e implementado por la clase afryca.ase.command.OpenCategory. Realiza la lectura de una categoría de scripts.
afryca.ase.command.save_category
Definido en el plug-in afryca.ase e implementado por la clase afryca.ase.command.SaveCategory. Realiza el almacenamiento de una categoría de scripts.
afryca.ase.command.remove_variable
Definido en el plug-in afryca.ase e implementado por la clase afryca.ase.command.RemoveVariable. Realiza la eliminación de una variable.
afryca.ase.command.open_module_binding
Definido en el plug-in afryca.ase e implementado por la clase afryca.ase.command.OpenModuleBinding. Realiza la lectura de un enlace a módulo.
afryca.ase.command.save_module_binding
Definido en el plug-in afryca.ase e implementado por la clase afryca.ase.command.SaveModuleBinding. Realiza el almacenamiento de un enlace a módulo.
afryca.ase.gui.command.new_repository
Definido en el plug-in afryca.ase.gui e implementado por la clase afryca.ase.gui.command.NewRepository. Realiza la creación de un repositorio solicitando sus valores.
afryca.ase.gui.command.edit_repository
Definido en el plug-in afryca.ase.gui e implementado por la clase afryca.ase.gui.command.EditRepository. Realiza la edición de un repositorio.
afryca.ase.gui.command.read_editor
Definido en el plug-in afryca.ase.gui e implementado por la clase afryca.ase.gui.command.ReadEditor. Permite obtener el contenido del editor de la consola de ASE.
afryca.ase.gui.command.eval_editor
Definido en el plug-in afryca.ase.gui e implementado por la clase afryca.ase.gui.command.EvalEditor. Realiza la evaluación del editor de la consola de ASE.
afryca.ase.gui.command.paste_in_editor
Definido en el plug-in afryca.ase.gui e implementado por la clase afryca.ase.gui.command.PasteInEditor. Pega un elemento en el editor de la consola de ASE.
afryca.ase.gui.command.paste_binding
Definido en el plug-in afryca.ase.gui e implementado por la clase afryca.ase.gui.command.PasteBinding. Pega el enlace seleccionado en el editor de la consola de ASE.
afryca.ase.gui.command.get_editor
Definido en el plug-in afryca.ase.gui e implementado por la clase afryca.ase.gui.command.GetEditor. Permite obtener el editor activo para ASE.
afryca.ase.gui.command.clear_editor
Definido en el plug-in afryca.ase.gui e implementado por la clase afryca.ase.gui.command.ClearEditor. Realiza la limpieza del editor de la consola de ASE.
afryca.ase.gui.command.replace_editor_content
Definido en el plug-in afryca.ase.gui e implementado por la clase afryca.ase.gui.command.ReplaceEditorContent. Reemplaza el contenido del editor de la consola de ASE con un nuevo valor.
afryca.ase.gui.command.replace_editor_content_with_binding
Definido en el plug-in afryca.ase.gui e implementado por la clase afryca.ase.gui.command.ReplaceEditorContentWithBinding. Reemplaza el contenido del editor de la consola de ASE con el enlace seleccionado.
afryca.ase.gui.command.get_binding
Definido en el plug-in afryca.ase.gui e implementado por la clase afryca.ase.gui.command.GetBinding. Permite obtener el binding seleccionado.
afryca.ase.gui.command.get_preloaded_element
Definido en el plug-in afryca.ase.gui e implementado por la clase afryca.ase.gui.command.GetPreloadedElement. Permite obtener el elemento precargado seleccionado.
afryca.ase.gui.command.paste_preloaded_element
Definido en el plug-in afryca.ase.gui e implementado por la clase afryca.ase.gui.command.PastePreloadedElement. Pega el elemento precargado seleccionado en el editor de la consola de ASE.
afryca.ase.gui.command.replace_editor_content_with_preloaded_element
Definido en el plug-in afryca.ase.gui e implementado por la clase afryca.ase.gui.command.ReplaceEditorContentWithPreloadedElement. Reemplaza el contenido del editor de la consola de ASE con el elemento precargado seleccionado.
afryca.ase.gui.command.paste_instruction
Definido en el plug-in afryca.ase.gui e implementado por la clase afryca.ase.gui.command.PasteInstruction. Pega la instrucción generada a partir del elemento precargado seleccionado en el editor de la consola de ASE.
afryca.ase.gui.command.replace_editor_content_with_instruction
Definido en el plug-in afryca.ase.gui e implementado por la clase afryca.ase.gui.command.ReplaceEditorContentWithInstruction. Reemplaza el contenido del editor de la consola de ASE con la instrucción generada a partir del elemento precargado seleccionado.
afryca.ase.gui.command.new_snippet
Definido en el plug-in afryca.ase.gui e implementado por la clase afryca.ase.gui.command.NewSnippet. Realiza la creación de un snippet solicitando sus valores.
afryca.ase.gui.command.edit_snippet
Definido en el plug-in afryca.ase.gui e implementado por la clase afryca.ase.gui.command.EditSnippet. Realiza la edición de un snippet.
afryca.ase.gui.command.paste_snippet
Definido en el plug-in afryca.ase.gui e implementado por la clase afryca.ase.gui.command.PasteSnippet. Pega el snippet seleccionado en el editor de la consola de ASE.
afryca.ase.gui.command.replace_editor_content_with_snippet
Definido en el plug-in afryca.ase.gui e implementado por la clase afryca.ase.gui.command.ReplaceEditorContentWithSnippet. Reemplaza el contenido del editor de la consola de ASE con el snippet seleccionado.
afryca.ase.gui.command.save_as_snippet
Definido en el plug-in afryca.ase.gui e implementado por la clase afryca.ase.gui.command.SaveAsSnippet. Almacena el contenido del editor de la consola de ASE como un nuevo snippet.
afryca.ase.gui.command.get_variable
Definido en el plug-in afryca.ase.gui e implementado por la clase afryca.ase.gui.command.GetVariable. Permite obtener la variable seleccionada.
afryca.ase.gui.command.paste_variable
Definido en el plug-in afryca.ase.gui e implementado por la clase afryca.ase.gui.command.PasteVariable. Pega la variable seleccionada en el editor de la consola de ASE.
afryca.ase.gui.command.replace_editor_content_with_variable
Definido en el plug-in afryca.ase.gui e implementado por la clase afryca.ase.gui.command.ReplaceEditorContentWithVariable. Reemplaza el contenido del editor de la consola de ASE con la variable seleccionada.
afryca.ase.gui.command.remove_variable
Definido en el plug-in afryca.ase.gui e implementado por la clase afryca.ase.gui.command.RemoveVariable. Elimina la variable seleccionada.
afryca.ase.gui.command.get_eval
Definido en el plug-in afryca.ase.gui e implementado por la clase afryca.ase.gui.command.GetEval. Permite obtener la evaluación seleccionada.
afryca.ase.gui.command.paste_eval
Definido en el plug-in afryca.ase.gui e implementado por la clase afryca.ase.gui.command.PasteEval. Pega la evaluación seleccionada en el editor de la consola se ASE.
afryca.ase.gui.command.replace_editor_content_with_eval
Definido en el plug-in afryca.ase.gui e implementado por la clase afryca.ase.gui.command.ReplaceEditorContentWithEval. Reemplaza el contenido del editor de la consola de ASE con la evaluación seleccionada.
afryca.ase.gui.command.new_module
Definido en el plug-in afryca.ase.gui e implementado por la clase afryca.ase.gui.command.NewModule. Realiza la creación de un módulo solicitando sus valores.
afryca.ase.gui.command.new_function
Definido en el plug-in afryca.ase.gui e implementado por la clase afryca.ase.gui.command.NewFunction. Realiza la creación de una función solicitando sus valores.
afryca.ase.gui.command.edit_module
Definido en el plug-in afryca.ase.gui e implementado por la clase afryca.ase.gui.command.EditModule. Realiza la edición de un módulo.
afryca.ase.gui.command.edit_function
Definido en el plug-in afryca.ase.gui e implementado por la clase afryca.ase.gui.command.EditFunction. Realiza la edición de una función.
afryca.ase.gui.command.paste_function
Definido en el plug-in afryca.ase.gui e implementado por la clase afryca.ase.gui.command.PasteFunction. Pega la función seleccionada en el editor de la consola de ASE.
afryca.ase.gui.command.replace_editor_content_with_function
Definido en el plug-in afryca.ase.gui e implementado por la clase afryca.ase.gui.command.ReplaceEditorContentWithFunction. Reemplaza el contenido del editor de la consola de ASE con la función seleccionada.
afryca.ase.gui.command.new_module_binding
Definido en el plug-in afryca.ase.gui e implementado por la clase afryca.ase.gui.command.NewModuleBinding. Realiza la creación de un enlace a módulo solicitando sus valores.
afryca.ase.gui.command.edit_module_binding
Definido en el plug-in afryca.ase.gui e implementado por la clase afryca.ase.gui.command.EditModuleBinding. Realiza la edición de un enlace a módulo.
afryca.ase.engine.R.gui.command.modify_r_engine_preferences
Definido en el plug-in afryca.ase.engine.R.gui e implementado por la clase afryca.ase.engine.R.gui.command.ModifyREnginePreferences. Lanza la ventana de diálogo para la modificación de las preferencias asociadas a R.
afryca.ase.engine.R.gui.command.show_r_status
Definido en el plug-in afryca.ase.engine.R.gui e implementado por la clase afryca.ase.engine.R.gui.command.ShowRStatus. Despliega un ventana de diálogo con la información del estado de R.
Partes
Las partes definidas por los plug-ins son las siguientes:
afryca.ase.bindings.part
Definida en el plug-in afryca.ase.gui e implementada por la clase afryca.ase.gui.part.BindingsPart. Muestra los enlaces ASE existentes.
afryca.ase.classes.part
Definida en el plug-in afryca.ase.gui e implementada por la clase afryca.ase.gui.part.ClassesPart. Muestra las clases precargadas en ASE.
afryca.ase.variables.part
Definida en el plug-in afryca.ase.gui e implementada por la clase afryca.ase.gui.part.VariablesPart. Muestra las variables en ASE existentes y permite su gestión.
afryca.ase.evals.part
Definida en el plug-in afryca.ase.gui e implementada por la clase afryca.ase.gui.part.EvalsPart. Muestra los evaluaciones realizadas desde la consola de ASE.
afryca.ase.console.part
Definida en el plug-in afryca.ase.gui e implementada por la clase afryca.ase.gui.part.ConsolePart. Implementación de un editor ASE interactivo. Permite introducir fragmentos de código, ejecutarlos y visualizar el resultado.
Preferencias
Los plug-ins emplean las siguientes preferencias.
not.show.again
Usada por el plug-in afryca.ase.engine.R.gui. Indicación de si se debe mostrar o no un posible mensaje de error de R si falla su carga.
Notas finales
- Si se prevé que un único cambio provocará múltiples notificaciones por el broker se notifica una notificación grupal con el topic 'ASE/GROUP_UPDATES'. Por ejemplo, el cambio de selección de un repositorio puede hacer necesario cambio el snippet seleccionado, si los subscriptores controlan los cambios de 'ASE/GROUP_UPDATES' pueden evitar realizar acciones innecesarias y posponer cualquier cambio hasta la finalización de la actualización grupal.
- Los snippets, repositorios, funciones, módulos y enlaces a módulos devueltos por el servicio de ASE son inyectados por el servicio de workspace, siendo este servicio el que gestiona los elementos disponibles en cada momento.
- Para permitir que ASE tenga acceso a clases que desconoce, ASE delega la ejecución de los script a un objeto que implemente la interfaz afryca.ase.IASEContext y que le es inyectado. La implementación de IASEContext se realiza desde el plug-in afryca.rcp.ase.context, el cual forma parte de la feature afryca.rcp.feature.
- La implementación de IASEContext realizada por afryca.rcp.ase.context es también utilizada para establecer los enlaces de la aplicación con ASE y gestionar los cambios de estos.
- 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.
- La API de ASE ofrece diferentes modos de realizar las mismas acciones, debiéndose analizar en cada caso específico el modo más apropiado de realizar las acciones. AFRYCA 3 incluye un repositorio de snippets denominado 'ASE-API' en el que se incluyen diferentes snippets que muestran el uso de la API para realizar diferentes tareas.
- Al realizar una ejecución se debe tener claro que se entiende como parámetros y variables de invocación:
- Un parámetro es un valor pasado como argumento a la ejecución.
- Una variable es un valor que será leído del entorno de ejecución.
- La mayoría de las evaluaciones realizadas en Nashorn son ejecutadas en aislamiento instanciando un nuevo engine dentro de este. Por tanto es necesario considerar los ámbitos de las variables al ejecutar en ASE, pasando una variable al código ejecutar si es necesario a través de los constructores ExecutionBuilder o FragmentBuilder.
- El repository 'Library' es un repositorio especial destinado al desarrollo de bibliotecas desde ASE. Su contenido son snippets normales pero con las siguientes diferencias:
- Los snippets de este repositorio son compilados al iniciar la aplicación.
- Su código sigue un formato definido.
var <nombre> = (typeof exports === "undefined")?(function <nombre>() {}):(exports); if(typeof global !== "undefined") { global.<nombre> = <nombre>; } <código> <nombre>