資料動作 Plug-in 利用資料動作架構來提供已緊密整合至 Oracle Analytics 使用者介面的自訂資料導向動作。
當使用者呼叫資料動作時,資料動作管理員會將要求相關資訊環境 (例如,限定資料參照、計量值、篩選和中繼資料) 傳遞給負責處理要求的資料動作 Plug-in。Oracle 提供四種類型的資料動作 Plug-in:CanvasDataAction
、URLNavigationDataAction
、HTTPAPIDataAction
和 EventDataAction
。您可以延伸這些資料動作 Plug-in 類型及其抽象基礎類別,以提供自己的資料動作。
資料動作類別包括「瀏覽至 URL」、「HTTP API」、「瀏覽至工作區」和「事件」動作:
GET/POST/PUT/DELETE/TRACE
命令以 HTTP API 為目標,且不會產生新頁籤。相反地,會檢查 HTTP 狀態代碼,並顯示暫時成功或失敗訊息。瀏覽至 URL 和 HTTP API 資料動作類別類型都會使用記號語法,將視覺化的資料或中繼資料引入 URL
和 POST
參數中。
URL 記號取代
HTTP 資料動作可以使用傳送至資料動作的相關資訊環境值取代 URL 中的記號。例如,限定資料參照值、篩選值、使用者名稱、工作簿路徑以及工作區名稱。
記號 | 附註 | 取代為 | 範例 | 結果 |
---|---|---|---|---|
${valuesForColumn:COLUMN} |
NA | 限定資料參照的資料欄顯示值 | ${valuesForColumn: "Sales"."Products"."Brand"} |
BizTech,FunPod |
${valuesForColumn:COLUMN, separator:"/"} |
任何可能取代為多個值的記號皆支援選擇性區隔符號選項。separator 預設為逗號 (,),但您可以將其設為任何字串。您可以使用反斜線 (\) 在此字串內遁離雙引號。 |
限定資料參照的資料欄顯示值 | ${valuesForColumn: "Sales"."Products"."Brand"} |
BizTech,FunPod |
${valuesForColumn:COLUMN, separationStyle:individual} |
任何 separationStyle 皆預設為 delimited ,但如果使用者需要對每個值產生個別 URL 參數,您可以將它設為 individual 。 |
限定資料參照的資料欄顯示值 | &myParam=${valuesForColumn: "Sales"."Products"."Brand"} |
&myParam=BizTech&myParam=FunPod |
${keyValuesForColumn:COLUMN} |
NA | 限定資料參照的資料欄索引鍵值。 | ${keyValuesForColumn:COLUMN} |
10001,10002 |
${env:ENV_VAR} |
支援的環境變數包括:sProjectPath 、sProjectName 、sCanvasName 、sUserID 和 sUserName 。 |
環境變數。 | ${env:'sUserID'} |
myUserName |
您可以定義當使用者呼叫資料動作時傳送的相關資訊環境。
您可以定義當您建立資料動作時要傳送多少相關資訊環境至資料動作。
限定資料參照
呼叫資料動作時,系統會使用 LogicalFilterTree
物件陣列為每個標示的資料點產生限定資料參照。LogicalFilterTree
包含多個在樹狀結構中排列的 LogicalFilterNode
物件。此物件包括:
環境變數
除了描述每個標示資料點的資料和中繼資料之外,某些資料動作可能還需要描述呼叫資料動作的環境其進一步的相關資訊環境。此類環境變數包括:
您可以使用 API 類別建立資料動作。
AbstractDataAction
的具體類別:
CanvasDataAction
URLNavigationDataAction
HTTPAPIDataAction
EventDataAction
DataActionPluginHandler
所管理。DataActionManager
進行處理。資料動作模型類別有數種不同的類型。
AbstractDataAction
此類別負責下列作業:
+ invoke(oActionContext: ActionContext, oDataActionContext:DataActionContext) <<abstract>>
透過傳送的相關資訊環境呼叫資料動作 - 應該僅限由 DataActionManager
呼叫。
+ getGadgetInfos(oReport): AbstractGadgetInfo[] <<abstract>>
建構並傳回負責呈現使用者介面欄位以編輯此類型之資料動作的 GadgetInfos
。
+ validate() : DataActionError
驗證資料動作,如果有效則傳回空值,如果無效則傳回 DataActionError
。
+ getSettings():JSON
將資料動作的「剔除模型」序列化至已準備好包含在報表中的 JSON (使用 komapping.toJS(_koModel))。
+ createNameGadgetInfo(oReport) : AbstractGadgetInfo
建構並傳回可呈現資料動作的名稱欄位的 GadgetInfo
。
+ createAnchorToGadgetInfo(oReport) : AbstractGadgetInfo
建構並傳回可呈現資料動作的定錨至欄位的 GadgetInfo
。
+ createPassValuesGadgetInfo(oReport) : AbstractGadgetInfo
建構並傳回可呈現資料動作的傳送值欄位的 GadgetInfo
。
子類別可能不需要基礎類別提供的所有 GadgetInfo
,因此它們可能不需要呼叫所有這些方法。透過此方式將每個欄位的呈現方式分離出來,子類別可以自由挑選其所需的小工具。某些子類別甚至可以選擇提供這些一般資料動作小工具的其他實行。
CanvasDataAction、URLNavigationDataAction、HTTPAPIDataAction、EventDataAction
這些是基本類型的資料動作其具體類別。這些類別可自行運作以提供給這些類型的資料動作一般使用者介面。它們也可以作為便利的基礎類別,讓自訂資料動作 Plug-in 延伸。
GET/POST/PUT/DELETE/TRACE
要求,並以程式設計的方式處理 HTTP Response
。每個類別負責的作業如下:
invoke(oActionContext: ActionContext, oDataActionContext:DataActionContext)
此方法應藉由將在 KOModel 中定義的特性與指定的 DataActionContext
物件結合來呼叫資料動作。
getGadgetInfos(oReport): AbstractGadgetInfo[]
此方法應:
AbstractGadgetInfos
的陣列。AbstractGadgetInfo
推送至陣列的個別 createXXXGadgetInfo()
方法。這些具體類別的子類別可能不需要使用其自訂使用者介面之超級類別所提供的所有小工具。透過此方式將每個小工具的建構分離出來,子類別可以自由挑選其所需的小工具。
DataActionKOModel、ValuePassingMode
DataActionKOModel
類別提供不同子類別之 AbstractDataAction
所共用的基礎 KOModel。請參閱 DataActionKOModel 類別。
資料動作有數種不同的服務類別。
DataActionManager
所有與 DataActionManager
的通訊都使用實行事件處理程式的 ClientEvents
.DataActionManager
,以進行下列作業:
DataActionContext、EnvironmentContext
呼叫資料動作時,DataActionContext
類別會包含已傳送至目標的相關資訊環境。
getColumnValueMap()
傳回以屬性資料欄名稱作為索引鍵的屬性資料欄值對應。這些項目定義呼叫資料動作的資料點其限定資料參照。
getLogicalFilterTrees()
傳回 LogicalFilterTrees
物件,此物件描述呼叫資料動作的特定資料點其限定資料參照 (請參閱 InteractionService
以瞭解詳細資訊)。
getEnvironmentContext()
EnvironmentContext
類別的執行處理,描述來源環境,例如:
getProjectPath()
getCanvasName()
getUserID()
getUserName()
getReport()
傳回呼叫資料動作的報表。
DataActionHandler
DataActionHandler
類別會註冊各種資料動作 Plug-in。其 API 與其他 Plug-in 處理程式 (例如,VisualizationHandler
) 大致一致。
DataActionHandler
類別提供下列公用方法:
getClassName(sPluginType:String) : String
傳回指定資料動作類型的完整類別名稱。
getDisplayName(sPluginType:String) : String
傳回指定資料動作類型的翻譯顯示名稱。
getOrder(sPluginType:String) : Number
傳回用於將資料動作類型清單依偏好順序排序的數字。
DataActionHandler
類別提供下列靜態方法:
getDependencies(oPluginRegistry:Object) : Object.<String, Array>
傳回涵蓋所有已註冊資料動作類型的相依性對應。
getHandler(oPluginRegistry:Object, sExtensionPointName:String, oConfig:Object) : DataActionPluginHandler
建構並傳回 DataActionHandler
類別的新執行處理。
DataActionUpgradeHandler
當報表開啟時,UpgradeService
會呼叫 DataActionUpgradeHandler
類別。
DataActionHandler
類別提供兩個主要方法:
deferredNeedsUpgrade(sCurrentVersion, sUpgradeTopic, oDataActionJS, oActionContext) : Promise
傳回解析為布林值的 Promise
,指出指定的資料動作是否必須升級 (true
) 或 (false
)。此方法是藉由比較資料動作執行處理與從資料動作的建構子,來決定是否必須升級資料動作。
performUpgrade(sCurrentVersion, sUpgradeTopic, oDataActionJS, oActionContext, oUpgradeContext) : Promise
在指定的資料動作上執行升級,並解析 Promise
。升級本身是透過呼叫資料動作的 upgrade()
方法執行 (只有正在升級的資料動作其特定的子類別本身可以升級)。
getOrder(sPluginType:String) : Number
傳回用於將資料動作類型清單依偏好順序排序的數字。
資料動作在建立使用者介面欄位時,以及在使用者呼叫資料動作時,會與 Oracle Analytics 程式碼互動。
建立新資料動作執行處理的欄位
此互動會在 Oracle Analytics 想要呈現資料動作使用者介面欄位時啟動。方法為:
PanelGadgetInfo
,作為資料動作傳回的 GadgetInfos
其父項 GadgetInfo
。getGadgetInfos()
。GadgetInfos
,作為第一個步驟中所建立的 PanelGadgetInfo
其子項。PanelGadgetInfo
的PanelGadgetView
。PanelGadgetView
,此為 HTMLElement
的容器。PanelGadgetView
註冊為已經連附至 HostedComponent
樹狀結構的 HostedComponent
其子項 HostedComponent
。
這會在「面板」小工具內,依照 getGadgetInfos()
所傳回陣列中的顯示順序,呈現資料動作的小工具。
呼叫資料動作
此互動會在使用者透過 Oracle Analytics 使用者介面 (例如,從視覺化中資料點上的彈出式功能表) 呼叫資料動作時啟動。
程式碼會執行下列作業以回應使用者互動:
INVOKE_DATA_ACTION
事件,其中包含資料動作的 ID、呼叫資料動作的 DataVisualization
,以及 TransientVizContext
物件。DataActionManager
透過下列方法處理此事件:
DataVisualization
中取得已標記資料點的 LogicalFilterTrees
。DataActionContext
,其中包含所有要傳送至資料動作其目標的資訊。invoke(oDataActionContext)
。本主題顯示 CanvasDataAction
資料動作的 plugin.xml 檔案範例。
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>