Acerca de los plugins de acción de datos y el marco de acciones de datos

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.

Categorías de acciones de datos

Entre las categorías de acciones de datos se incluyen Navegar a URL, API de HTTP, Navegar a lienzo y Acciones de evento:

  • Navegar a URL: abre la URL especificada en un nuevo separador del explorador.
  • API de HTTP: usa los comandos 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.
  • Navegar a lienzo: permite al usuario navegar desde un lienzo de origen a un lienzo de destino con la misma visualización o con una diferente. Cualquier filtro que esté en vigor en el lienzo de origen se transfiere al de destino como filtro externo. Cuando se abra el lienzo de destino, intenta aplicar los filtros externos a la visualización. Aquí no se describe el mecanismo por el que se aplican los filtros externos.
  • Acciones de evento: publica un evento con el enrutador de eventos de Oracle Analytics. Cualquier código JavaScript (por ejemplo, un plugin de terceros) se puede suscribir a estos eventos y manejar su respuesta personalizada según corresponda. De esta forma, se proporciona la máxima flexibilidad, ya que el desarrollador de plugins puede seleccionar la respuesta de la acción de datos. Por ejemplo, puede optar por mostrar una interfaz de usuario o transferir los datos a varios servicios a la vez.

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

Contexto de acción de datos

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:

  • Los atributos de los bordes de fila o columna del diseño de datos.
  • La medida específica del borde de medida que se dirige a cada celda marcada.
  • El valor de medida específico de cada celda marcada.
  • Valores clave y valores de visualización

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:

  • Ruta de acceso a proyecto
  • Nombre del proyecto
  • Nombre de lienzo
  • ID de usuario
  • Nombre de usuario

Diseño del código de acción de datos

Cree acciones de datos mediante las clases de API.

  • Hay cuatro clases concretas de acción de datos que heredan de la clase AbstractDataAction:
    • CanvasDataAction
    • URLNavigationDataAction
    • HTTPAPIDataAction
    • EventDataAction
  • Puede crear nuevos tipos de acción de datos mediante la API de plugin de acción de datos.
  • El registro de tipos de acción de datos lo gestiona DataActionPluginHandler.
  • El código que crea, lee, edita, suprime o llama a las instancias de acciones de datos lo lleva a cabo mediante la publicación de eventos.
  • Los eventos los gestiona DataActionManager.

Clases de modelo de acción de datos

Hay varios tipos distintos de clases de modelo de acción de datos.

AbstractDataAction

Esta clase es responsable de:

  • Almacenar el modelo Knockout (las subclases pueden ampliarlo con sus propias propiedades).
  • Definir los métodos abstractos que las subclases deben implantar:
    • + 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.

  • Proporcionar la implantación por defecto para los siguientes métodos usados para representar las partes genéricas de los campos de la interfaz de usuario de acción de datos:
    • + 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.

  • CanvasDataAction: se usa para navegar a un lienzo.
  • URLNavigationDataAction: se usa para abrir una página web en una ventana nueva del explorador.
  • HTTPAPIDataAction: se usa para crear una solicitud GET/POST/PUT/DELETE/TRACE a una API HTTP y manejar HTTP Response mediante programación.
  • EventDataAction: se usa para publicar eventos JavaScript mediante el enrutador de eventos.

Cada clase es responsable de:

  • Implantar los métodos abstractos de la clase base.
    • 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:

      • Crear una matriz que contenga AbstractGadgetInfos.
      • Llamar a los distintos métodos createXXXGadgetInfo() introduciendo cada elemento AbstractGadgetInfo en la matriz.
      • Devolver la matriz.
  • Proporcionar métodos adicionales para crear los distintos gadgets específicos de la subclase particular de la acción de datos.

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.

Clases de servicio de acción de datos

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:

  • Gestionar el juego de acciones de datos definido en el libro de trabajo actual.
  • Llamar a la acción de datos.
  • Recuperar todas las acciones de datos definidas en el libro de trabajo actual.
  • Recuperar todas las acciones de datos que se puedan aplicar a los puntos de datos marcados actualmente.

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.

Interacciones entre acción de datos y código

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:

  1. Crea un PanelGadgetInfo, que actúa como GadgetInfo principal de los GadgetInfos que devuelve la acción de datos.
  2. Llama a los getGadgetInfos() en la acción de datos.
  3. Agrega los GadgetInfos de la acción de datos como secundarios del PanelGadgetInfo creado en el primer paso.
  4. Crea el PanelGadgetView, que representa el PanelGadgetInfo.
  5. Define un HTMLElement, que es el contenedor del PanelGadgetView.
  6. Registra un 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:

  1. Publica un evento 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.
  2. DataActionManager maneja este evento mediante:
    1. La obtención de una instancia de acción de datos a partir de su identificador.
    2. La obtención de los LogicalFilterTrees para los puntos de datos marcados en la DataVisualization especificada.
    3. La construcción de un DataActionContext que contiene toda la información que se transfiere al destino de la acción de datos.
    4. La llamada a invoke(oDataActionContext) en la acción de datos.

Archivo plugin.xml de acción de datos de ejemplo

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>

Archivos y carpetas del plugin de acción de datos

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