Los plugins de acción de datos usan el marco de acciones de datos para proporcionar acciones personalizadas basadas en los datos que están totalmente integradas en la interfaz de usuario de Oracle Analytics.
Cuando un usuario llama a una acción de datos, el gestor de acciones de datos transfiere el contexto de la solicitud (por ejemplo, una referencia de datos cualificada, valores de medida, filtros y metadatos) al plugin de acción de datos responsable de manejar la solicitud. Oracle proporciona cuatro tipos de plugins de acción de datos: CanvasDataAction
, URLNavigationDataAction
, HTTPAPIDataAction
y EventDataAction
. Puede ampliar los tipos de plugin de acción de datos junto con sus clases base abstractas para proporcionar sus propias acciones de datos.
Temas:
Entre las categorías de acciones de datos se incluyen Navegar a URL, API de HTTP, Navegar a lienzo y Acciones de evento:
GET/POST/PUT/DELETE/TRACE
para dirigir una API de HTTP y no produce un separador nuevo. En su lugar, se examina el código de estado HTTP y se muestra un mensaje de éxito o fallo transitorio.En los dos tipos de categorías de acción de datos Navegar a URL y API de HTTP se puede usar una sintaxis de token para introducir datos o metadatos desde la visualización en los parámetros URL
y POST
.
Sustitución de token de URL
Las acciones de datos HTTP pueden sustituir tokens en las URL por valores del contexto transferido a la acción de datos. Por ejemplo, valores de referencia de datos cualificados, valores de filtro, nombre de usuario, ruta de libro de trabajo y nombre de lienzo.
Token | Notas | Sustituir por | Ejemplo | Resultado |
---|---|---|---|---|
${valuesForColumn:COLUMN} |
N/D | En la columna se muestran los valores de la referencia de datos cualificada. | ${valuesForColumn: "Sales"."Products"."Brand"} |
BizTech,FunPod |
${valuesForColumn:COLUMN, separator:"/"} |
Cualquier token que se pueda sustituir por varios valores soporta la opción de separador opcional. El valor por defecto de separator es una coma (,) pero puede definirlo en cualquier cadena. Puede identificar las comillas dobles dentro de esta cadena con la barra invertida (\). |
En la columna se muestran los valores de la referencia de datos cualificada. | ${valuesForColumn: "Sales"."Products"."Brand"} |
BizTech,FunPod |
${valuesForColumn:COLUMN, separationStyle:individual} |
Cualquier valor separationStyle por defecto es delimited , pero puede definirlo en individual si el usuario necesita generar distintos parámetros URL para cada valor. |
En la columna se muestran los valores de la referencia de datos cualificada. | &myParam=${valuesForColumn: "Sales"."Products"."Brand"} |
&myParam=BizTech&myParam=FunPod |
${keyValuesForColumn:COLUMN} |
N/D | En la columna se muestran los valores clave de la referencia de datos cualificada. | ${keyValuesForColumn:COLUMN} |
10001,10002 |
${env:ENV_VAR} |
Las variables de entorno soportadas son: sProjectPath , sProjectName , sCanvasName , sUserID y sUserName . |
Variable de entorno. | ${env:'sUserID'} |
myUserName |
Puede definir un contexto que se transfiera cuando el usuario llame a una acción de datos.
Defina la cantidad de contexto que se debe transferir a la acción de datos al crearla.
Referencia de datos cualificada
Cuando se llama a la acción de datos, se genera una referencia de datos cualificada para cada punto de datos marcado mediante una matriz de objetos de LogicalFilterTree
. Un LogicalFilterTree
consta de varios objetos de LogicalFilterNode
organizados en una estructura de árbol. Este objeto incluye:
Variables de entorno
Además de los datos y los metadatos que describen cada punto de datos marcado, determinadas acciones de datos pueden requerir más contexto que describa el entorno desde el que se llama a la acción de datos. Esas variables de entorno son:
Cree acciones de datos mediante las clases de API.
AbstractDataAction
:
CanvasDataAction
URLNavigationDataAction
HTTPAPIDataAction
EventDataAction
DataActionPluginHandler
.DataActionManager
.Hay varios tipos distintos de clases de modelo de acción de datos.
AbstractDataAction
Esta clase es responsable de:
+ invoke(oActionContext: ActionContext, oDataActionContext:DataActionContext) <<abstract>>
Llama a la acción de datos con el contexto transferido. Solo se debe llamar con DataActionManager
.
+ getGadgetInfos(oReport): AbstractGadgetInfo[] <<abstract>>
Crea y devuelve el GadgetInfos
responsable de representar los campos de la interfaz de usuario para editar este tipo de acción de datos.
+ validate() : DataActionError
Valida la acción de datos y devuelve null si es válido o un DataActionError
si no es válido.
+ getSettings():JSON
Serializa el modelo Knockout de la acción de datos en JSON listo para su inclusión en el informe (usa komapping.toJS(_koModel)).
+ createNameGadgetInfo(oReport) : AbstractGadgetInfo
Crea y devuelve el GadgetInfo
que puede representar el campo Nombre de la acción de datos.
+ createAnchorToGadgetInfo(oReport) : AbstractGadgetInfo
Crea y devuelve el GadgetInfo
que puede representar el campo Anclar a de la acción de datos.
+ createPassValuesGadgetInfo(oReport) : AbstractGadgetInfo
Crea y devuelve el GadgetInfo
que puede representar el campo Transferir valores de la acción de datos.
Puede que las subclases no necesiten todos los valores GadgetInfo
que proporciona la clase base, por lo que es posible que no necesiten llamar a todos estos métodos. Al separar de esta forma la representación de cada campo, las subclases pueden seleccionar y elegir los gadgets que necesiten. Es posible incluso que algunas subclases decidan proporcionar otra implantación distinta de estos gadgets de acción de datos comunes.
CanvasDataAction, URLNavigationDataAction, HTTPAPIDataAction, EventDataAction
Se trata de clases concretas para los tipos básicos de acciones de datos. Estas clases funcionan solas para proporcionar la interfaz de usuario genérica para estos tipos de acción de datos. También pueden actuar como clases base prácticas para que se amplíen los plugins de acción de datos personalizados.
GET/POST/PUT/DELETE/TRACE
a una API HTTP y manejar HTTP Response
mediante programación.Cada clase es responsable de:
invoke(oActionContext: ActionContext, oDataActionContext:DataActionContext)
Este método debe llamar a la acción de datos mediante la combinación de las propiedades definidas en el KOModel con el objeto DataActionContext
especificado.
getGadgetInfos(oReport): AbstractGadgetInfo[]
Este método debe:
AbstractGadgetInfos
.createXXXGadgetInfo()
introduciendo cada elemento AbstractGadgetInfo
en la matriz.Las subclases de estas clases concretas tal vez no necesiten usar todos los gadgets proporcionados por sus superclases en sus interfaces de usuario personalizadas. Al separar de esta forma la creación de cada gadget, las subclases pueden seleccionar y elegir los gadgets que necesiten.
DataActionKOModel, ValuePassingMode
La clase DataActionKOModel
proporciona el KOModel base compartido por distintas subclases de AbstractDataAction
. Consulte Clase DataActionKOModel.
Existen diferentes clases de servicios de acción de datos.
DataActionManager
En toda la comunicación con DataActionManager
se usa ClientEvents
.DataActionManager
, que implanta manejadores de eventos para:
DataActionContext, EnvironmentContext
Cuando se llama a una acción de datos, la clase DataActionContext
contiene el contexto que se transfiere al destino.
getColumnValueMap()
Devuelve un mapa de los valores de columna de atributos asignados por los nombres de columna de atributos. Definen la referencia de datos cualificada para los puntos de datos desde la que se llama a la acción de datos.
getLogicalFilterTrees()
Devuelve un objeto LogicalFilterTrees
que describe las referencias de datos cualificadas para los puntos de datos específicos desde los que se llama a la acción de datos (consulte InteractionService
para obtener detalles).
getEnvironmentContext()
Instancia de la clase EnvironmentContext
que describe el entorno de origen como:
getProjectPath()
getCanvasName()
getUserID()
getUserName()
getReport()
Devuelve el informe desde el que se llama a la acción de datos.
DataActionHandler
La clase DataActionHandler
registra los distintos plugins de acciones de datos. Su API es muy consistente con los otros manejadores de plugins (por ejemplo, VisualizationHandler
).
La clase DataActionHandler
proporciona los siguientes métodos públicos:
getClassName(sPluginType:String) : String
Devuelve el nombre de clase totalmente cualificado para el tipo de acción de datos.
getDisplayName(sPluginType:String) : String
Devuelve el nombre mostrado traducido para el tipo de acción de datos especificado.
getOrder(sPluginType:String) : Number
Devuelve un número que se usa para ordenar listas de los tipos de acción de datos en el orden preferido.
La clase DataActionHandler
proporciona los siguientes métodos estáticos:
getDependencies(oPluginRegistry:Object) : Object.<String, Array>
Devuelve un mapa de dependencias que abarca todos los tipos de acción de datos registrados.
getHandler(oPluginRegistry:Object, sExtensionPointName:String, oConfig:Object) : DataActionPluginHandler
Crea y devuelve una nueva instancia de la clase DataActionHandler
.
DataActionUpgradeHandler
Cuando se abre un informe, se llama a la clase DataActionUpgradeHandler
con UpgradeService
.
La clase DataActionHandler
proporciona dos métodos principales:
deferredNeedsUpgrade(sCurrentVersion, sUpgradeTopic, oDataActionJS, oActionContext) : Promise
Devuelve un elemento Promise
que se resuelve en un booleano que indica si la acción de datos especificada se debe actualizar (true
) o no (false
). El método decide si se debe actualizar la acción de datos mediante la comparación de la instancia de acción de datos con el constructor de la acción de datos.
performUpgrade(sCurrentVersion, sUpgradeTopic, oDataActionJS, oActionContext, oUpgradeContext) : Promise
Realiza la actualización en la acción de datos especificada y resuelve en Promise
. La propia actualización se realiza llamando al método upgrade()
en la acción de datos (solo la subclase específica de la acción de datos que se actualiza se puede actualizar a sí misma).
getOrder(sPluginType:String) : Number
Devuelve un número que se usa para ordenar listas de los tipos de acción de datos en el orden preferido.
Una acción de datos interactúa con el código de Oracle Analytics cuando crea un campo de interfaz de usuario y cuando un usuario llama a una acción de datos.
Creación de un campo para una nueva instancia de acción de datos
Esta interacción empieza cuando Oracle Analytics desea representar un campo de interfaz de usuario de acción de datos. Para ello, realiza lo siguiente:
PanelGadgetInfo
, que actúa como GadgetInfo
principal de los GadgetInfos
que devuelve la acción de datos.getGadgetInfos()
en la acción de datos.GadgetInfos
de la acción de datos como secundarios del PanelGadgetInfo
creado en el primer paso.PanelGadgetView
, que representa el PanelGadgetInfo
.HTMLElement
, que es el contenedor del PanelGadgetView
.PanelGadgetView
como HostedComponent
secundario de un HostedComponent
que ya se ha adjuntado al árbol de HostedComponent
.
Esto representa los gadgets de la acción de datos en el gadget del panel en el orden en el que aparecen en la matriz que ha devuelto getGadgetInfos()
.
Llamada a una acción de datos
Esta interacción empieza cuando el usuario llama a una acción de datos mediante la interfaz de usuario de Oracle Analytics (por ejemplo, desde el menú contextual de un punto de datos en una visualización).
En respuesta a la interacción de usuario, el código:
INVOKE_DATA_ACTION
que contiene el identificador de la acción de datos, la DataVisualization
desde la que se ha llamado a la acción de datos y un objeto de TransientVizContext
.DataActionManager
maneja este evento mediante:
LogicalFilterTrees
para los puntos de datos marcados en la DataVisualization
especificada.DataActionContext
que contiene toda la información que se transfiere al destino de la acción de datos.invoke(oDataActionContext)
en la acción de datos.En este tema se muestra un archivo plugin.xml de ejemplo de una acción de datos CanvasDataAction
.
Archivo plugin.xml de ejemplo
<?xml version="1.0" encoding="UTF-8"?> <tns:obiplugin xmlns:tns="http://plugin.frameworks.tech.bi.oracle" xmlns:viz="http://plugin.frameworks.tech.bi.oracle/extension-points/visualization" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="obitech-currencyconversion" name="Oracle BI Currency Conversion" version="0.1.0.@qualifier@" optimizable="true" optimized="false"> <tns:resources> <tns:resource id="currencyconversion" path="scripts/currencyconversion.js" type="script" optimizedGroup="base"/> <tns:resource-folder id="nls" path="resources/nls" optimizable="true"> <tns:extensions> <tns:extension name="js" resource-type="script"/> </tns:extensions> </tns:resource-folder> </tns:resources> <tns:extensions> <tns:extension id="oracle.bi.tech.currencyconversiondataaction" point-id="oracle.bi.tech.plugin.dataaction" version="1.0.0"> <tns:configuration> { "resourceBundle": "obitech-currencyconversion/nls/messages", "properties": { "className": "obitech-currencyconversion/currencyconversion.CurrencyConversionDataAction", "displayName": { "key" : "CURRENCY_CONVERSION", "default" : "Currency Conversion" }, "order": 100 } } </tns:configuration> </tns:extension> </tns:extensions> </tns:obiplugin>
Para implantar los plugins de acción de datos se utilizan los siguientes archivos y carpetas.
bitech/client/plugins/src/
report
obitech-report
scripts
dataaction
dataaction.js
dataactiongadgets.js
dataactionpanel.js
dataactionupgradehandler.js
obitech-reportservice
scripts
dataaction
dataactionmanager.js
dataactionhandler.js