Veri Eylemi Eklentileri ve Veri Eylemleri Altyapısı Hakkında

Veri eylemi eklentileri, Oracle Analitik kullanıcı arayüzüne sıkıca entegre edilmiş veriler tarafından yönlendirilen, özel eylemler sağlamak için veri eylemleri altyapısından yararlanır.

Bir kullanıcı bir veri eylemini çağırdığında, Veri Eylemi Yöneticisi istek bağlamını (örneğin nitelenen veri referansı, ölçü değerleri, filtreler ve meta veri) isteği işlemekten sorumlu veri eylemi eklentisine iletir. Oracle dört veri eylemi eklentisi tipi sağlar: CanvasDataAction, URLNavigationDataAction, HTTPAPIDataAction ve EventDataAction. Bu veri eylemi eklentisi tiplerini, soyut temel sınıfları ile birlikte genişleterek kendi veri eylemlerinizi sağlayabilirsiniz.

Veri Eylemi Kategorileri

Veri eylemi kategorileri arasında URL'ye Git, HTTP Uygulama Programı Arabirimi, Fona Git ve Olay eylemleri yer alır:

  • URL'ye Git: Belirtilen URL'yi yeni bir tarayıcı sekmesinde açar.
  • HTTP Uygulama Programı Arabirimi: Bir HTTP Uygulama Programı Arabirimini hedeflemek için GET/POST/PUT/DELETE/TRACE komutlarını kullanır ve yeni bir sekme açmaz. Bunun yerine, HTTP durum kodu incelenir ve geçici bir başarı veya hata mesajı görüntülenir.
  • Fona Git: Kullanıcının kaynak fondan aynı veya farlı bir görselleştirmedeki hedef bir fona gitmesine olanak sağlar. Kaynak fondaki geçerli tüm filtreler hedef fona harici filtreler olarak iletilir. Hedef fon açıldığında, harici filtreleri görselleştirmeye uygulamayı dener. Harici filtrelerin uygulanma mekanizması burada açıklanmaz.
  • Olay Eylemleri: Oracle Analitik olay yönlendiricisini kullanarak bir olayı yayımlar. JavaScript kodları (örneğin üçüncü taraf eklentileri) bu olaylara abone olabilir ve bunların özel yanıtlarını uygun şekilde işler. Eklenti geliştiricisi veri eyleminin nasıl yanıt verdiğini seçebileceğinden, bu maksimum esnekliği sağlar. Örneğin, geliştiriciler bir kullanıcı arayüzünün nasıl görüntüleneceğini seçebilir veya verileri tek seferde birden fazla hizmete iletebilir.

URL'ye Git ve HTTP Uygulama Programı Arabirimi veri eylemi kategorisi tipleri, verileri veya meta verileri görselleştirmeden URL veya POST parametrelerine ekleyen bir belirteç sözdizimi kullanabilir.

URL Belirteci Değişikliği

HTTP veri eylemleri, URL'lerdeki belirteçleri veri eylemine iletilen bağlamdaki değerlerle değiştirebilir. Örneğin nitelenen veri referansı değerleri, filtre değerleri, kullanıcı adı, çalışma kitabı dizin yolu ve fon adı.

Belirteç Notlar Şununla Değiştir Örnek Sonuç
${valuesForColumn:COLUMN} Uygulanamaz Nitelenen veri referansındaki sütun görüntüleme değerleri. ${valuesForColumn: "Sales"."Products"."Brand"} BizTech,FunPod
${valuesForColumn:COLUMN, separator:"/"} Potansiyel olarak birden fazla değerle değiştirilebilecek tüm belirteçler, isteğe bağlı ayırıcı seçeneğini destekler. separator öndeğer olarak virgüldür (,) ancak herhangi bir dize olarak ayarlanabilir. Ters kesme işareti (\) kullanarak bu dizenin içindeki çift tırnak işaretlerini kod olmaktan çıkarabilirsiniz. Nitelenen veri referansındaki sütun görüntüleme değerleri. ${valuesForColumn: "Sales"."Products"."Brand"} BizTech,FunPod
${valuesForColumn:COLUMN, separationStyle:individual} separationStyle öndeğer olarak delimited'dır, ancak kullanıcının her değer için ayrı URL parametreleri oluşturması gerekiyorsa bunu individual olarak ayarlayabilirsiniz. Nitelenen veri referansındaki sütun görüntüleme değerleri. &myParam=${valuesForColumn: "Sales"."Products"."Brand"} &myParam=BizTech&myParam=FunPod
${keyValuesForColumn:COLUMN} Uygulanamaz Nitelenen veri referansındaki sütun anahtar değerleri. ${keyValuesForColumn:COLUMN} 10001,10002
${env:ENV_VAR} Desteklenen ortam değişkenleri: sProjectPath, sProjectName, sCanvasName, sUserID ve sUserName. Bir ortam değişkeni. ${env:'sUserID'} myUserName

Veri Eylemi Bağlamı

Kullanıcı bir veri eylemini çağırdığında iletilen bir bağlam tanımlayabilirsiniz.

Veri eylemini oluştururken, veri eylemine bağlamın ne kadarının iletildiğini belirleyebilirsiniz.

Nitelenen Veri Referansı

Veri eylemi çağrıldığında, LogicalFilterTree nesnelerinin bir dizisi kullanılarak her işaretli veri noktası için nitelenen bir veri referansı oluşturulur. LogicalFilterTree, ağaç yapısında düzenlenmiş birden fazla LogicalFilterNode nesnesinden oluşur. Bu nesne şunları içerir:

  • Veri yerleşiminin satır veya sütun kenarlarındaki özellikler.
  • Her işaretli hücreyle ilgilenen, ölçü kenarındaki özel ölçü.
  • Her işaretli hücrenin belirli ölçü değeri.
  • Anahtar değerleri ve görüntüleme değerleri.

Ortam Değişkenleri

Her bir işaretli veri noktasını açıklayan veri ve meta verilere ek olarak, veri eyleminin çağrıldığı ortamı açıklamak için belirli veri eylemlerinin daha fazla bağlama ihtiyacı olabilir. Bu tip ortam değişenleri arasında şunlar yer alır:

  • Proje Dizin Yolu
  • Proje Adı
  • Fon Adı
  • Kullanıcı Kimliği
  • Kullanıcı Adı

Veri Eylemi Kod Tasarımı

Uygulama Programı Arabirimi sınıflarını kullanarak veri eylemleri oluşturursunuz.

  • AbstractDataAction sınıfından devralan dört adet somut veri eylemi sınıfı vardır:
    • CanvasDataAction
    • URLNavigationDataAction
    • HTTPAPIDataAction
    • EventDataAction
  • Veri eylemi eklentisi uygulama programı arabirimini kullanarak yeni veri eylemi tipleri oluşturabilirsiniz.
  • Veri eylemi tiplerinin kaydı DataActionPluginHandler tarafından yönetilir.
  • Veri eylemlerinin anlarını oluşturan, okuyan, düzenleyen, silen veya çağıran kod, bunu olayları yayımlayarak yapar.
  • Olaylar DataActionManager tarafından işlenir.

Veri Eylemi Model Sınıfları

Veri eylemi modeli sınıflarının farklı tipleri vardır.

AbstractDataAction

Bu sınıfın sorumlulukları:

  • Knockout Modelini depolamak (alt sınıflar bunu kendi nitelikleri ile genişletebilir).
  • Alt sınıfların uygulaması gereken soyut yöntemleri tanımlamak:
    • + invoke(oActionContext: ActionContext, oDataActionContext:DataActionContext) <<abstract>>

      Veri eylemini iletilen bağlamla çağırır. Sadece DataActionManager tarafından çağrılmalıdır.

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

      Bu veri eylemi tipini düzenlemek için kullanıcı arayüzü alanlarını göstermekten sorumlu GadgetInfos öğesini yapılandırır ve döndürür.

    • + validate() : DataActionError

      Veri eylemini değerlendirir ve geçerliyse boş veya geçersizse DataActionError döndürür.

  • Veri eylemi kullanıcı arayüzü alanlarının genel bölümlerini göstermek üzere kullanılan aşağıdaki yöntemler için uygulama öndeğerini sağlamak:
    • + getSettings():JSON

      Veri eyleminin Knockout Modelini, rapora dahil edilmeye hazır JSON'a serileştirir (komapping.toJS(_koModel) kullanır).

    • + createNameGadgetInfo(oReport) : AbstractGadgetInfo

      Veri eyleminin Ad alanını gösterebilen GadgetInfo öğesini yapılandırır ve döndürür.

    • + createAnchorToGadgetInfo(oReport) : AbstractGadgetInfo

      Veri eyleminin Tutturma Hedefi alanını gösterebilen GadgetInfo öğesini yapılandırır ve döndürür.

    • + createPassValuesGadgetInfo(oReport) : AbstractGadgetInfo

      Veri eyleminin Değerleri İlet alanını gösterebilen GadgetInfo öğesini yapılandırır ve döndürür.

Alt sınıflar için temel sınıfın sağladığı tüm GadgetInfo'lar gerekli olmayabilir, dolasıyla alt sınıfların bu yöntemlerin tümünü çağırması gerekmeyebilir. Her alanın görüntülenmesini bu yöntemle ayırarak, alt sınıflar ihtiyaçları olan gadget'ları toplamakta ve seçmekte özgürdür. Bazı alt sınıflar, bu yaygın veri eylemi gadget'larının farklı bir uygulamasını sağlamayı da seçebilir.

CanvasDataAction, URLNavigationDataAction, HTTPAPIDataAction, EventDataAction

Bunlar, temel veri eylemi tipleri için somut sınıflardır. Bu sınıflar, bu veri eylemi tiplerine yönelik genel kullanıcı arayüzünü sağlamak için kendi kendilerine çalışır. Özel veri eylemi eklentilerinin genişlemesi için uygun temel sınıflar olarak da işlev görebilirler.

  • CanvasDataAction: Bir fona gitmek için kullanılır.
  • URLNavigationDataAction: Bir web sayfasını yeni tarayıcı penceresinde açmak için kullanılır.
  • HTTPAPIDataAction: Bir HTTP Uygulama Programı Arabirimine GET/POST/PUT/DELETE/TRACE isteğinde bulunmak ve HTTP Yanıtı'nı programlı olarak işlemek için kullanılır.
  • EventDataAction: JavaScript olaylarını Olay Yönlendiricisi aracılığıyla yayımlamak için kullanılır.

Her bir sınıf şunlardan sorumludur:

  • Temel sınıftan soyut yöntemleri uygulamak.
    • invoke(oActionContext: ActionContext, oDataActionContext:DataActionContext)

      Bu yöntem KOModel'de tanımlı nitelikleri, belirtilen DataActionContext nesnesi ile birleştirerek veri eylemini çağırmalıdır.

    • getGadgetInfos(oReport): AbstractGadgetInfo[]

      Bu yöntemin yapması gerekenler:

      • AbstractGadgetInfos içeren bir dizi oluşturmak.
      • Her AbstractGadgetInfo'yu diziye iterek bireysel createXXXGadgetInfo() yöntemleri çağırmak.
      • Diziyi döndürmek.
  • Belirli veri eylemi alt sınıfına özel bireysel gadget'lar oluşturmak için ek yöntemler sağlamak.

Bu somut sınıfların alt sınıflarının, özel kullanıcı arayüzlerinde üst sınıfları tarafından sağlanan tüm gadget'ları kullanmaları gerekmeyebilir. Her gadget'ın yapılandırmasını bu yöntemle ayırarak, alt sınıflar ihtiyaçları olan gadget'ları toplamakta ve seçmekte özgürdür.

DataActionKOModel, ValuePassingMode

DataActionKOModel sınıfı, farklı AbstractDataAction alt sınıfları tarafından paylaşılan temel KOModel'i sağlar. Bkz. DataActionKOModel Sınıfı.

Veri Eylemi Hizmet Sınıfları

Farklı veri eylemi hizmet sınıfları vardır.

DataActionManager

DataActionManager ile kurulan tüm iletişimler, şunlar için olay işleyicilerini uygulayan ClientEvents.DataActionManager'ı kullanır:

  • Geçerli çalışma kitabında tanımlı veri eylemi grubunu yönetmek.
  • Veri eylemi çağırmak.
  • Geçerli çalışma kitabında tanımlı tüm veri eylemlerini almak.
  • Geçerli işaretlenmiş veri noktalarına uygulanabilen tüm veri eylemlerini almak.

DataActionContext, EnvironmentContext

Bir veri eylemi çağrıldığında, DataActionContext sınıfı hedefe iletilen bağlamı içerir.

  • getColumnValueMap()

    Özellik sütunu adlarına göre bağlanan özellik sütunu değerlerinin eşlemesini döndürür. Bunlar, veri eyleminin çağrıldığı veri noktalarına yönelik nitelenen veri referansını tanımlar.

  • getLogicalFilterTrees()

    Veri eyleminin çağrıldığı belirli veri noktalarına yönelik nitelenen veri referanslarını açıklayan LogicalFilterTrees nesnesini döndürür (detaylar için bkz. InteractionService).

  • getEnvironmentContext()

    Kaynak ortamı açıklayan EnvironmentContext sınıfının bir anı, örneğin:

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

    Veri eyleminin çağrıldığı raporu döndürür.

DataActionHandler

DataActionHandler sınıfı çeşitli veri eylemi eklentilerini kaydeder. Bunun uygulama programı arabirimi, diğer eklenti işleyicileriyle tutarlıdır (örneğin, VisualizationHandler).

DataActionHandler sınıfı şu genel yöntemleri sağlar:

  • getClassName(sPluginType:String) : String

    Belirtilen veri eylemi tipi için tam nitelenmiş sınıf adını döndürür.

  • getDisplayName(sPluginType:String) : String

    Belirtilen veri eylemi tipi için çevrilen görünen adı döndürür.

  • getOrder(sPluginType:String) : Number

    Veri eylemi tiplerinin listelerini tercih edilen düzende sıralamak için kullanılan bir sayı döndürür.

DataActionHandler sınıfı şu statik yöntemleri sağlar:

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

    Tüm kayıtlı veri eylemi tiplerini kapsayan bir bağımlılık eşlemesi döndürür.

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

    DataActionHandler sınıfının yeni bir anını yapılandırır ve döndürür.

DataActionUpgradeHandler

DataActionUpgradeHandler sınıfı bir rapor açıldığında UpgradeService tarafından çağrılır.

DataActionHandler sınıfı iki ana yöntem sağlar:

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

    Belirtilen veri eyleminin yükseltilmesinin gerekli olup (true) olmadığını (false) belirten bir Mantıksal değere çözümlenen bir Promise döndürür. Yöntem, veri eylemi anını veri eyleminin yapılandırıcısı ile karşılaştırarak, veri eyleminin yükseltilmesinin gerekli olup olmadığına karar verir.

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

    Belirtilen veri eyleminde yükseltmeyi gerçekleştirir ve Promise'i çözümler. Yükseltme, veri eyleminde upgrade() yöntemi çağrılarak gerçekleştirilir (sadece yükseltilen belirli veri eylemi alt sınıfı kendisini yükseltmeye uygundur).

  • getOrder(sPluginType:String) : Number

    Veri eylemi tiplerinin listelerini tercih edilen düzende sıralamak için kullanılan bir sayı döndürür.

Veri Eylemi Kod Etkileşimleri

Bir veri eylemi, bir kullanıcı arayüzü alanı oluştururken ve kullanıcı bir veri eylemi çağırdığında Oracle Analitik kodu ile etkileşim kurar.

Yeni Veri Eylemi Anı Alanını Oluşturma

Bu etkileşim, Oracle Analitik bir veri eylemi kullanıcı arayüzü alanını göstermek istediğinde başlar. Bunu yapmak için:

  1. Veri eyleminin döndürdüğü GadgetInfos için üst GadgetInfo işlevi gören bir PanelGadgetInfo oluşturur.
  2. Veri eyleminde getGadgetInfos()'u çağırır.
  3. Veri eyleminin GadgetInfos'larını ilk adımda oluşturulan PanelGadgetInfo'nun alt öğeleri olarak ekler.
  4. PanelGadgetInfo'yu gösteren PanelGadgetView'ı oluşturur.
  5. PanelGadgetView'ın kapsayıcısı olan HTMLElement'i ayarlar.
  6. PanelGadgetView'ı, HostedComponent ağacına ekli olan bir HostedComponent'ın alt HostedComponent'ı olarak kaydeder.

    Bu, veri eyleminin gadget'larını Panel gadget'ında getGadgetInfos() tarafından döndürülen dizide göründükleri sırada gösterir.

Veri Eylemi Çağırma

Bu etkileşim, kullanıcı Oracle Analitik kullanıcı arayüzü üzerinden bir veri eylemi çağırdığında başlar (örneğin, görselleştirmedeki bir veri noktasındaki bağlam menüsünden).

Kullanıcı etkileşimine yanıt olarak kod:

  1. Veri eylemi no'yu, veri eyleminin çağrıldığı DataVisualization'ı ve bir TransientVizContext nesnesi içeren bir INVOKE_DATA_ACTION olayı yayımlar.
  2. DataActionManager bu olayı şu şekilde işler:
    1. Veri eylemi anını no'sundan edinerek.
    2. Belirtilen DataVisualization'da işaretli veri noktaları için LogicalFilterTrees'i edinerek.
    3. Veri eyleminin hedefine iletilen tüm bilgileri içeren bir DataActionContext yapılandırarak.
    4. Veri eyleminde invoke(oDataActionContext) çağırarak.

Örnek Veri Eylemi plugin.xml Dosyası

Bu konuda CanvasDataAction veri eylemi için örnek bir plugin.xml dosyası gösterilmektedir.

Örnek 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>

Veri Eylemi Eklenti Dosyaları ve Klasörleri

Aşağıdaki dosya ve klasörler, veri eylemi eklentilerini uygulamak için kullanılır.

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