Základní informace o modulech plugin akcí s daty a prostředí akcí s daty

Moduly plugin akcí s daty využívají prostředí akcí s daty k poskytování vlastních akcí řízených daty, které jsou těsně integrovány s uživatelským rozhraním služby Oracle Analytics.

Když uživatel vyvolá akci s daty, aplikace Data Action Manager předá kontext požadavku (například kvalifikovanou referenci dat, hodnoty ukazatelů, filtry a metadata) do modulu plugin akce s daty zodpovědného za zpracování požadavku. Společnost Oracle poskytuje čtyři typy modulů plugin akcí s daty: CanvasDataAction, URLNavigationDataAction, HTTPAPIDataActionEventDataAction. Tyto typy modulů plugin akcí s daty můžete rozšířit společně s jejich abstraktními základními třídami, aby poskytovaly vaše vlastní akce s daty.

Kategorie akcí s daty

Mezi kategorie akcí s daty patří Přejít na adresu URL, HTTP API, Přejít na kanvas a Akce události:

  • Přejít na adresu URL: Otevře zadanou adresu URL na nové kartě prohlížeče.
  • HTTP API: Používá příkazy GET/POST/PUT/DELETE/TRACE k cílení na rozhraní HTTP API a nezpůsobuje zobrazení nové karty. Místo toho je prozkoumán stavový kód HTTP a následně je zobrazena zpráva o přechodném úspěchu nebo selhání.
  • Přejít na kanvas: Umožňuje uživateli přejít ze zdrojového kanvasu na cílový kanvas buď ve stejné, nebo jiné vizualizaci. Veškeré platné filtry ze zdrojového kanvasu jsou předány do cílového kanvasu jako externí filtry. Cílový kanvas se při otevření pokusí použít externí filtry pro vizualizaci. Mechanizmus použití externích filtrů zde není popisován.
  • Akce událostí: Publikuje událost pomocí směrovače událostí Oracle Analytics. Libovolný kód v jazyku JavaScript (například modul plugin od třetí strany) může provést subskripci těchto událostí a náležitě zpracovat vlastní odpověď. Tím je zajištěna maximální flexibilita, protože vývojář modulu plugin může zvolit, jak akce s daty odpoví. Může například zvolit zobrazení uživatelského rozhraní nebo předání dat do více služeb najednou.

Oba typy kategorií akcí s daty, Přejít na adresu URLHTTP API, mohou používat syntaxi tokenů ke vkládání dat nebo metadat z vizualizace do parametrů URLPOST.

Nahrazení tokenu adresy URL

Akce s daty HTTP mohou nahradit tokeny v adresách URL hodnotami z kontextu předaného do akce s daty. Jedná se například o referenční hodnoty kvalifikovaných dat, hodnoty filtrů, uživatelské jméno, cestu k sešitu nebo název kanvasu.

Token Poznámky Nahradit za Příklad Výsledek
${valuesForColumn:COLUMN} Není k dispozici Zobrazované hodnoty sloupce z kvalifikované reference dat. ${valuesForColumn: "Prodej"."Produkty"."Značka"} BizTech,FunPod
${valuesForColumn:COLUMN, separator:"/"} Libovolný token, který může být potenciálně nahrazen více hodnotami, podporuje možnost použití volitelného oddělovače. Výchozí nastavení parametru separator je čárka (,), ale můžete ji změnit na libovolný řetězec. Pokud je nutné uvést uvnitř tohoto řetězce dvojité uvozovky, použijte zpětné lomítko (\). Zobrazované hodnoty sloupce z kvalifikované reference dat. ${valuesForColumn: "Prodej"."Produkty"."Značka"} BizTech,FunPod
${valuesForColumn:COLUMN, separationStyle:individual} Parametr separationStyle má výchozí hodnotu delimited, kterou ale můžete změnit na hodnotu individual, pokud uživatel potřebuje generovat samostatné parametry adresy URL pro každou hodnotu. Zobrazované hodnoty sloupce z kvalifikované reference dat. &myParam=${valuesForColumn: "Prodej"."Produkty"."Značka"} &myParam=BizTech&myParam=FunPod
${keyValuesForColumn:COLUMN} Není k dispozici Hodnoty klíče sloupce z kvalifikované reference dat. ${keyValuesForColumn:COLUMN} 10001,10002
${env:ENV_VAR} Mezi podporované proměnné prostředí patří: sProjectPath, sProjectName, sCanvasName, sUserIDsUserName. Proměnná prostředí. ${env:'sUserID'} myUserName

Kontext akce s daty

Můžete definovat kontext, který bude předán, když uživatel vyvolá akci s daty.

Definujete, jaká část kontextu bude předána akci s daty, když vytvoříte akci s daty.

Reference kvalifikovaných dat

Při vyvolání akce s daty se generuje reference kvalifikovaných dat pro každý označený datový bod pomocí pole objektů LogicalFilterTree. Objekt LogicalFilterTree se skládá z více objektů LogicalFilterNode uspořádaných do stromové struktury. Součástí tohoto objektu jsou:

  • Atributy v okrajových oblastech řádků nebo sloupců rozvržení dat.
  • Specifický ukazatel v okrajové oblasti ukazatelů, který adresuje každou označenou buňku.
  • Hodnota specifického ukazatele pro každou označenou buňku.
  • Klíčové hodnoty a zobrazované hodnoty.

Proměnné prostředí

Kromě dat a metadat popisujících jednotlivé označené datové body mohou určité akce s daty vyžadovat další kontext popisující prostředí, ze kterého je akce s daty vyvolána. Mezi takové proměnné prostředí patří:

  • Cesta k projektu
  • Název projektu
  • Název kanvasu
  • ID uživatele
  • Uživatelské jméno

Návrh kódu akce s daty

Vytvoříte akce s daty pomocí tříd rozhraní API.

  • Existují čtyři konkrétní třídy akcí s daty, které přebírají vlastnosti třídy AbstractDataAction:
    • CanvasDataAction
    • URLNavigationDataAction
    • HTTPAPIDataAction
    • EventDataAction
  • Můžete vytvořit nové typy akcí s daty pomocí rozhraní API modulu plugin akce s daty.
  • Ke správě registru typů akcí s daty se používá třída DataActionPluginHandler.
  • Kód, který vytváří, čte, upravuje, odstraňuje nebo vyvolává instance akcí s daty, tak činí prostřednictvím publikování událostí.
  • Zpracování událostí zajišťuje třída DataActionManager.

Třidy modelů akcí s daty

Existuje několik různých typů tříd modelů akcí s daty.

AbstractDataAction

Tato třída je zodpovědná za:

  • Uložení modelu Knockout (podtřídy jej mohou volně rozšiřovat svými vlastními vlastnostmi).
  • Definování abstraktních metod, které musí podtřídy implementovat:
    • + invoke(oActionContext: ActionContext, oDataActionContext:DataActionContext) <<abstract>>

      Vyvolává akci s daty pomocí předaného kontextu – měla by ji volat pouze třída DataActionManager.

    • + getGadgetInfos(oReport): AbstractGadgetInfo[] <<abstract>>

      Vytváří a vrací informace GadgetInfos zodpovědné za generování polí uživatelského rozhraní pro úpravu tohoto typu akcí s daty.

    • + validate() : DataActionError

      Ověřuje akci s daty a vrací hodnotu null, pokud je platná, nebo argument DataActionError, pokud je neplatná.

  • Poskytování výchozí implementace pro následující metody používané ke generování obecných částí polí uživatelského rozhraní akcí s daty:
    • + getSettings():JSON

      Serializuje model Knockout akce s daty, aby podporoval JSON, a bylo jej tak možné zahrnout do sestavy (používá komapping.toJS(_koModel)).

    • + createNameGadgetInfo(oReport) : AbstractGadgetInfo

      Vytváří a vrací informace GadgetInfo, které mohou generovat pole Název akce s daty.

    • + createAnchorToGadgetInfo(oReport) : AbstractGadgetInfo

      Vytváří a vrací informace GadgetInfo, které mohou generovat pole Ukotvit k akce s daty.

    • + createPassValuesGadgetInfo(oReport) : AbstractGadgetInfo

      Vytváří a vrací informace GadgetInfo, které mohou generovat pole Předat hodnoty akce s daty.

Podtřídy možná nebudou potřebovat všechny informace GadgetInfo, které základní třída poskytuje, takže možná nebude nutné volat všechny tyto metody. Díky oddělení generování jednotlivých polí tímto způsobem mohou podtřídy volně vybírat a volit miniaplikace, které potřebují. Některé podtřídy mohou dokonce zvolit poskytování odlišné implementace těchto společných miniaplikací pro akce s daty.

CanvasDataAction, URLNavigationDataAction, HTTPAPIDataAction, EventDataAction

Toto jsou konkrétní třídy pro základní typy akcí s daty. Tyto třídy fungují samy o sobě a poskytují obecné uživatelské rozhraní pro tyto typy akcí s daty. Mohou také sloužit jako praktické základní třídy pro rozšiřovaní vlastních modulů plugin akcí s daty.

  • CanvasDataAction: Používá se k přechodu na kanvas.
  • URLNavigationDataAction: Používá se k otevření webové stránky v novém okně prohlížeče.
  • HTTPAPIDataAction: Používá se k vytvoření požadavku GET/POST/PUT/DELETE/TRACE na rozhraní HTTP API a k programovému zpracování odpovědi protokolu HTTP.
  • EventDataAction: Používá se k publikování událostí JavaScript prostřednictvím směrovače událostí.

Každá třída je zodpovědná za:

  • Implementování abstraktních metod ze základní třídy.
    • invoke(oActionContext: ActionContext, oDataActionContext:DataActionContext)

      Tato metoda by měla vyvolat akci s daty zkombinováním vlastností definovaných v modelu KOModel pomocí zadaného objektu DataActionContext.

    • getGadgetInfos(oReport): AbstractGadgetInfo[]

      Tato metoda by měla:

      • Vytvořit pole obsahující informace AbstractGadgetInfos.
      • Volat jednotlivé metody createXXXGadgetInfo(), které vloží jednotlivé informace AbstractGadgetInfo do pole.
      • Vrátit pole.
  • Poskytování dalších metod pro vytvoření jednotlivých miniaplikací, které jsou specifické pro určitou podtřídu akcí s daty.

Podtřídy těchto konkrétních tříd nemusí vyžadovat použití všech miniaplikací poskytovaných nadtřídami v jejich vlastních uživatelských rozhraních. Díky oddělení vytváření jednotlivých miniaplikací tímto způsobem mohou podtřídy volně vybírat a volit miniaplikace, které potřebují.

DataActionKOModel, ValuePassingMode

Třída DataActionKOModel poskytuje základní model KOModel sdílený různými podtřídami třídy AbstractDataAction. Viz část Třída DataActionKOModel.

Třídy služeb akcí s daty

Existuje několik různých tříd služeb pro akce s daty.

DataActionManager

Veškerá komunikace s třídou DataActionManager používá objekty ClientEvents.DataActionManager, které implementují obslužné programy událostí, jejichž účelem je:

  • Správa sady akcí s daty definovaných v aktuálním sešitu.
  • Vyvolání akce s daty.
  • Načítání všech akcí s daty definovaných v aktuálním sešitu.
  • Načítání všech akcí s daty, které jsou použitelné pro aktuálně označené datové body.

DataActionContext, EnvironmentContext

Když je vyvolána akce s daty, třída DataActionContext obsahuje kontext, který je předán do cíle.

  • getColumnValueMap()

    Vrátí mapu hodnot sloupců atributů s klíči podle názvů sloupců atributů. Ty definují kvalifikovanou referenci dat pro datové body, ze kterých je akce s daty vyvolána.

  • getLogicalFilterTrees()

    Vrátí objekt LogicalFilterTrees popisující kvalifikované reference dat pro určité datové body, ze kterých je akce s daty vyvolána (podrobnosti najdete v části věnované třídě InteractionService).

  • getEnvironmentContext()

    Instance třídy EnvironmentContext popisující zdrojové prostředí, jako je:

    • getProjectPath()
    • getCanvasName()
    • getUserID()
    • getUserName()
  • getReport()

    Vrátí sestavu, ze které je akce s daty vyvolána.

DataActionHandler

Třída DataActionHandler registruje různé moduly plugin akcí s daty. Její rozhraní API je rozsáhle konzistentní s dalšími obslužnými programy modulů plugin (například VisualizationHandler).

Třída DataActionHandler poskytuje následující veřejné metody:

  • getClassName(sPluginType:String) : String

    Vrací plně kvalifikovaný název třídy pro určitý typ akcí s daty.

  • getDisplayName(sPluginType:String) : String

    Vrací přeložený zobrazovaný název pro určitý typ akcí s daty.

  • getOrder(sPluginType:String) : Number

    Vrací číslo používané k řazení seznamů typů akcí s daty do preferovaného pořadí.

Třída DataActionHandler poskytuje následující statické metody:

  • getDependencies(oPluginRegistry:Object) : Object.<String, Array>

    Vrací mapu závislosti pokrývající všechny registrované typy akcí s daty.

  • getHandler(oPluginRegistry:Object, sExtensionPointName:String, oConfig:Object) : DataActionPluginHandler

    Vytváří a vrací novou instanci třídy DataActionHandler.

DataActionUpgradeHandler

Třídu DataActionUpgradeHandler volá objekt UpgradeService při otevření sestavy.

Třída DataActionHandler poskytuje dvě hlavní metody:

  • deferredNeedsUpgrade(sCurrentVersion, sUpgradeTopic, oDataActionJS, oActionContext) : Promise

    Vrací objekt Promise, který je převeden na logickou hodnotu udávající, zda je nutné upgradovat stanovenou akci s daty (true) nebo nikoli (false). Metoda rozhodne, zda je třeba akci dat upgradovat porovnáním instance akce dat s konstruktorem akce dat.

  • performUpgrade(sCurrentVersion, sUpgradeTopic, oDataActionJS, oActionContext, oUpgradeContext) : Promise

    Provede upgrade stanovené akce s daty a převede objekt Promise. Vlastní upgrade se provádí voláním metody upgrade() pro akci s daty (pro vlastní upgrade je kvalifikována pouze konkrétní podtřída upgradované akce s daty).

  • getOrder(sPluginType:String) : Number

    Vrací číslo používané k řazení seznamů typů akcí s daty do preferovaného pořadí.

Interakce kódu a akcí s daty

Akce s daty uskutečňuje interakce s kódem služby Oracle Analytics, když vytvoří pole uživatelského rozhraní a když uživatel vyvolá akci s daty.

Vytvoření pole pro novou instanci akce s daty

Tato interakce se spustí, když chce služba Oracle Analytics generovat pole uživatelského rozhraní akce s daty. Za tímto účelem:

  1. Vytvoří objekt třídy PanelGadgetInfo, který slouží jako nadřízený objektu třídy GadgetInfo pro hodnoty GadgetInfos, které vrací akce s daty.
  2. Volá metodu getGadgetInfos() pro akci s daty.
  3. Přidá objekty GadgetInfos akce s daty jako podřízené objektu třídy PanelGadgetInfo vytvořeného v prvním kroku.
  4. Vytvoří objekt třídy PanelGadgetView, který generuje objekt třídy PanelGadgetInfo.
  5. Nastaví objekt HTMLElement, který je kontejnerem třídy PanelGadgetView.
  6. Registruje PanelGadgetView jako podřízený objekt komponenty HostedComponent, přičemž komponenta HostedComponent je již připojena ke stromu HostedComponent.

    Tím je zajištěno generování miniaplikací akce s daty v miniaplikaci Panel v pořadí, ve kterém se objeví v poli vráceném metodou getGadgetInfos().

Vyvolání akce s daty

Tato interakce se spustí, když uživatel vyvolá akci s daty prostřednictvím uživatelského rozhraní služby Oracle Analytics (například z místní nabídky datového bodu ve vizualizaci).

V reakci na interakci uživatele kód:

  1. Publikuje událost INVOKE_DATA_ACTION obsahující identifikátor akce s daty, vizualizaci dat , ze které je akce s daty vyvolána, a objekt TransientVizContext.
  2. Ke zpracování této události třída DataActionManager využije:
    1. Získání instance akce s daty z jejího identifikátoru.
    2. Získání objektu LogicalFilterTrees pro označené datové body ve stanovené vizualizaci dat.
    3. Vytvoření objektu DataActionContext, který obsahuje veškeré informace určené k předání do cíle akce s daty.
    4. Volání metody invoke(oDataActionContext) pro akci s daty.

Příklad souboru plugin.xml akce s daty

V tomto tématu je uveden příklad souboru plugin.xml pro akci s daty CanvasDataAction.

Příklad souboru plugin.xml

<?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>

Soubory a složky modulů plugin akcí s daty

K implementaci modulů plugin akcí s daty se používají následující soubory a složky.

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