Os plug-ins de ações de dados tiram partido da estrutura de ações de dados para fornecer ações orientadas por dados customizadas que estão profundamente integradas na interface do utilizador do Oracle Analytics.
Quando um utilizador invoca uma ação de dados, o Gestor de Ações de Dados transmite o contexto do pedido (por exemplo, referência de dados qualificada, valores de medidas, filtros e metadados) ao plug-in de ação de dados responsável pelo processamento do pedido. A Oracle fornece quatro tipos de plug-ins de ações de dados: CanvasDataAction
, URLNavigationDataAction
, HTTPAPIDataAction
e EventDataAction
. Pode alargar estes tipos de plug-in de ação de dados juntamente com as respetivas classes base abstratas para fornecer as suas próprias ações de dados.
Tópicos:
As categorias de ações de dados incluem Navegar para URL, API HTTP, Navegar para Tela e Ações do Evento:
GET/POST/PUT/DELETE/TRACE
para definir uma API HTTP de destino e não resulta num novo separador. Em vez disso, o código de estado de HTTP é examinado e é apresentada uma mensagem de êxito ou falha transitória.Os tipos de categoria de ação de dados Navegar para URL e API HTTP podem ambos utilizar uma sintaxe de token para injetar dados ou metadados da visualização nos parâmetros URL
e POST
.
Substituição do Token do URL
As ações de dados de HTTP podem substituir os tokens nos URLs por valores do contexto transmitido à ação de dados. Por exemplo, valores de referência de dados qualificada, valores de filtro, nome de utilizador, percurso do livro e nome da tela.
Token | Notas | Substituir Por | Exemplo | Resultado |
---|---|---|---|---|
${valuesForColumn:COLUMN} |
N/D | Valores de apresentação da coluna da referência de dados qualificada. | ${valuesForColumn: "Sales"."Products"."Brand"} |
BizTech,FunPod |
${valuesForColumn:COLUMN, separator:"/"} |
Qualquer token que potencialmente possa ser substituído por vários valores suporta a opção de separador opcional. separator assume por omissão uma vírgula (,), mas pode ser definido como qualquer cadeia de caracteres. Pode identificar as aspas dentro desta cadeia de caracteres utilizando uma barra invertida (\). |
Valores de apresentação da coluna da referência de dados qualificada. | ${valuesForColumn: "Sales"."Products"."Brand"} |
BizTech,FunPod |
${valuesForColumn:COLUMN, separationStyle:individual} |
Qualquer separationStyle assume por omissão delimited , mas pode ser definido como individual se o utilizador precisar de gerar parâmetros de URL separados para cada valor. |
Valores de apresentação da coluna da referência de dados qualificada. | &myParam=${valuesForColumn: "Sales"."Products"."Brand"} |
&myParam=BizTech&myParam=FunPod |
${keyValuesForColumn:COLUMN} |
N/D | Valores de chave da coluna da referência de dados qualificada. | ${keyValuesForColumn:COLUMN} |
10001,10002 |
${env:ENV_VAR} |
As variáveis de ambiente suportadas são: sProjectPath , sProjectName , sCanvasName , sUserID e sUserName . |
Uma variável de ambiente. | ${env:'sUserID'} |
myUserName |
Pode definir o contexto que é transmitido quando o utilizador invoca uma ação de dados.
Quando cria a ação de dados, define que elementos do contexto são transmitidos à ação de dados.
Referência de Dados Qualificada
Quando a ação de dados é invocada, é gerada uma referência de dados qualificada para cada ponto de dados marcado utilizando uma matriz de objetos LogicalFilterTree
. Um LogicalFilterTree
é constituído por vários objetos LogicalFilterNode
organizados numa estrutura em árvore. Este objeto inclui:
Variáveis de Ambiente
Além dos dados e metadados que descrevem cada ponto de dados marcado, determinadas ações de dados poderão precisar de contexto adicional que descreva o ambiente a partir do qual a ação de dados é invocada. Essas variáveis de ambiente incluem:
Pode criar ações de dados utilizando classes de API.
AbstractDataAction
:
CanvasDataAction
URLNavigationDataAction
HTTPAPIDataAction
EventDataAction
DataActionPluginHandler
.DataActionManager
.Existem vários tipos diferentes de classes de modelos de ações de dados.
AbstractDataAction
Esta classe é responsável por:
+ invoke(oActionContext: ActionContext, oDataActionContext:DataActionContext) <<abstract>>
Invoca a ação de dados com o contexto transmitido - só deve ser chamado pelo DataActionManager
.
+ getGadgetInfos(oReport): AbstractGadgetInfo[] <<abstract>>
Constrói e devolve os GadgetInfos
responsáveis pela renderização dos campos da interface do utilizador para editar este tipo de ação de dados.
+ validate() : DataActionError
Valida a ação de dados e devolve um valor nulo se for válido ou um DataActionError
se for inválido.
+ getSettings():JSON
Serializa o Modelo Knockout da ação de dados para JSON, pronto para inclusão no relatório (utiliza komapping.toJS(_koModel)).
+ createNameGadgetInfo(oReport) : AbstractGadgetInfo
Constrói e devolve o GadgetInfo
que pode renderizar o campo Nome da ação de dados.
+ createAnchorToGadgetInfo(oReport) : AbstractGadgetInfo
Constrói e devolve o GadgetInfo
que pode renderizar o campo Ancorar em da ação de dados.
+ createPassValuesGadgetInfo(oReport) : AbstractGadgetInfo
Constrói e devolve o GadgetInfo
que pode renderizar o campo Transmitir Valores da ação de dados.
É possível que as subclasses não necessitem de todos os GadgetInfos
que a classe base fornece, pelo que poderão não precisar de chamar todos estes métodos. Ao separar a renderização de cada campo desta forma, as subclasses podem escolher os gadgets de que necessitam. Algumas subclasses poderão mesmo optar por fornecer uma implementação diferente destes gadgets de ações de dados comuns.
CanvasDataAction, URLNavigationDataAction, HTTPAPIDataAction, EventDataAction
Estas são as classes concretas para os tipos básicos de ações de dados. Estas classes trabalham sozinhas para fornecer a interface do utilizador genérica para este tipos de ação de dados. Também podem agir como classes base convenientes para os plug-ins de ações de dados customizados a alargar.
GET/POST/PUT/DELETE/TRACE
a uma API HTTP e processar a HTTP Response
programaticamente.Cada classe é responsável por:
invoke(oActionContext: ActionContext, oDataActionContext:DataActionContext)
Este método deve invocar a ação de dados combinando as propriedades definidas no KOModel com o objeto DataActionContext
especificado.
getGadgetInfos(oReport): AbstractGadgetInfo[]
Este método deve:
AbstractGadgetInfos
.createXXXGadgetInfo()
individuais efetuando push de cada AbstractGadgetInfo
para a matriz.As subclasses destas classes concretas poderão não necessitar de utilizar todos os gadgets fornecidos pelas respetivas superclasses nas interfaces do utilizador customizadas. Ao separar a criação de cada gadget desta forma, as subclasses podem escolher os gadgets de que necessitam.
DataActionKOModel, ValuePassingMode
A classe DataActionKOModel
fornece o KOModel base partilhado pelas diferentes subclasses de AbstractDataAction
. Consulte Classe DataActionKOModel.
Existem várias classes de serviços de ações de dados diferentes.
DataActionManager
Toda a comunicação com DataActionManager
utiliza ClientEvents
.DataActionManager
que implementa rotinas de tratamento de eventos para:
DataActionContext, EnvironmentContext
Quando uma ação de dados é invocada, a classe DataActionContext
contém o contexto que é transmitido ao destino.
getColumnValueMap()
Devolve um mapa de valores da coluna de atributos pelos nomes da coluna de atributos. Estes definem a referência de dados qualificada para os pontos de dados a partir dos quais a ação de dados é invocada.
getLogicalFilterTrees()
Devolve um objeto LogicalFilterTrees
que descreve as referências de dados qualificadas para os pontos de dados específicos a partir dos quais a ação de dados é invocada (consulte o InteractionService
para obter detalhes).
getEnvironmentContext()
Uma instância da classe EnvironmentContext
que descreve o ambiente de origem tal como:
getProjectPath()
getCanvasName()
getUserID()
getUserName()
getReport()
Devolve o relatório a partir do qual a ação de dados é invocada.
DataActionHandler
A classe DataActionHandler
regista os vários plug-ins de ações de dados. A respetiva API é globalmente consistente com as outras rotinas de tratamento de plug-ins (por exemplo, VisualizationHandler
).
A classe DataActionHandler
fornece os seguintes métodos públicos:
getClassName(sPluginType:String) : String
Devolve o nome da classe totalmente qualificado para o tipo de ação de dados especificado.
getDisplayName(sPluginType:String) : String
Devolve o nome de apresentação traduzido para o tipo de ação de dados especificado.
getOrder(sPluginType:String) : Number
Devolve um número utilizado para ordenar listas dos tipos de ação de dados pela ordem preferida.
A classe DataActionHandler
fornece os seguintes métodos estáticos:
getDependencies(oPluginRegistry:Object) : Object.<String, Array>
Devolve um mapa de dependências que abrange todos os tipos de ação de dados registados.
getHandler(oPluginRegistry:Object, sExtensionPointName:String, oConfig:Object) : DataActionPluginHandler
Constrói e devolve uma nova instância da classe DataActionHandler
.
DataActionUpgradeHandler
A classe DataActionUpgradeHandler
é chamada pelo UpgradeService
quando um relatório é aberto.
A classe DataActionHandler
fornece dois métodos principais:
deferredNeedsUpgrade(sCurrentVersion, sUpgradeTopic, oDataActionJS, oActionContext) : Promise
Devolve um Promise
que é decifrado para um valor Booleano a indicar se a ação de dados especificada deve ser atualizada (true
) ou não (false
). O método decide se a ação de dados deve ser atualizada comparando a instância da ação de dados com o criador da ação de dados.
performUpgrade(sCurrentVersion, sUpgradeTopic, oDataActionJS, oActionContext, oUpgradeContext) : Promise
Executa a atualização na ação de dados especificada e decifra o valor de Promise
. A atualização em si é executada chamando o método upgrade()
na ação de dados (apenas a subclasse específica da ação de dados a ser atualizada está qualificada para atualização).
getOrder(sPluginType:String) : Number
Devolve um número utilizado para ordenar listas dos tipos de ação de dados pela ordem preferida.
Uma ação de dados interage com o código do Oracle Analytics quando cria um campo da interface do utilizador e quando um utilizador invoca uma ação de dados.
Criar o Campo para uma Nova Instância da Ação de Dados
Esta interação é iniciada quando o Oracle Analytics pretende renderizar um campo da interface do utilizador da ação de dados. Para tal, o Oracle Analytics Cloud:
PanelGadgetInfo
que age como GadgetInfo
pai para os GadgetInfos
que a ação de dados devolve.getGadgetInfos()
na ação de dados.GadgetInfos
da ação de dados como filhos do PanelGadgetInfo
criado no primeiro passo.PanelGadgetView
que renderiza o PanelGadgetInfo
.HTMLElement
que é o container do PanelGadgetView
.PanelGadgetView
como um HostedComponent
filho de um HostedComponent
que já está anexado à árvore HostedComponent
.
Isto renderiza os gadgets da ação de dados dentro do gadget Secção, pela ordem em que aparecem na matriz devolvida por getGadgetInfos()
.
Invocar uma Ação de Dados
Esta interação é iniciada quando o utilizador invoca uma ação de dados através da interface do utilizador do Oracle Analytics (por exemplo, a partir do menu de contexto num ponto de dados de uma visualização).
Em resposta à interação do utilizador, o código:
INVOKE_DATA_ACTION
com a ID da ação de dados, o DataVisualization
a partir do qual a ação de dados é invocada e um objeto TransientVizContext
.DataActionManager
trata deste evento ao:
LogicalFilterTrees
para os pontos de dados marcados no DataVisualization
especificado.DataActionContext
com todas as informações a transmitir ao destino da ação de dados.invoke(oDataActionContext)
na ação de dados.Este tópico mostra um ficheiro plugin.xml de exemplo para uma ação de dados CanvasDataAction
.
plugin.xml de Exemplo
<?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>
Os ficheiros e pastas seguintes são utilizados para implementar plug-ins de ações de dados.
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