데이터 작업 플러그인은 데이터 작업 프레임워크를 활용하여 Oracle Analytics 사용자 인터페이스에 잘 맞게 통합된 사용자정의 데이터 방식 작업을 제공합니다.
사용자가 데이터 작업을 호출하면 Data Action Manager가 요청을 처리하는 데이터 작업 플러그인에 요청 컨텍스트(예: 검증 데이터 참조, 측정항목 값, 필터 및 메타데이터)를 전달합니다. Oracle은 네 가지 유형의 데이터 작업 플러그인(CanvasDataAction
, URLNavigationDataAction
, HTTPAPIDataAction
및 EventDataAction
)을 제공합니다. 추상적 기본 클래스와 함께 해당 데이터 작업 플러그인 유형을 확장하여 고유 데이터 작업을 제공할 수 있습니다.
데이터 작업 범주로는 [URL로 이동], [HTTP API], [캔버스로 이동] 및 [이벤트 작업]이 있습니다.
GET/POST/PUT/DELETE/TRACE
명령을 사용하여 HTTP API를 대상으로 지정합니다. 새 탭이 열리지 않습니다. 대신 HTTP 상태 코드가 검사되고 임시 성공 또는 실패 메시지가 표시됩니다.URL로 이동 및 HTTP API 데이터 작업 범주 유형은 토큰 구문을 사용하여 시각화에서 URL
및 POST
매개변수로 데이터나 메타데이터를 넣을 수 있습니다.
URL 토큰 바꾸기
HTTP 데이터 작업은 URL의 토큰을 데이터 작업에 전달된 컨텍스트의 값으로 바꿀 수 있습니다. 검증 데이터 참조 값, 필터 값, 사용자 이름, 워크북 경로 및 캔버스 이름을 예로 들 수 있습니다.
토큰 | 주 | 바꿀 내용 | 예 | 결과 |
---|---|---|---|---|
${valuesForColumn:COLUMN} |
해당 사항 없음 | 검증 데이터 참조의 열 표시 값 | ${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} |
해당 사항 없음 | 검증 데이터 참조의 열 키 값 | ${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
데이터 작업을 검증한 후 null(적합한 경우) 또는 DataActionError
(부적합한 경우)를 반환합니다.
+ getSettings():JSON
데이터 작업의 Knockout 모델을 보고서에 포함할 수 있도록 JSON으로 직렬화합니다(komapping.toJS(_koModel) 사용).
+ createNameGadgetInfo(oReport) : AbstractGadgetInfo
데이터 작업의 이름 필드를 렌더링할 수 있는 GadgetInfo
를 생성 및 반환합니다.
+ createAnchorToGadgetInfo(oReport) : AbstractGadgetInfo
데이터 작업의 앵커 위치 필드를 렌더링할 수 있는 GadgetInfo
를 생성 및 반환합니다.
+ createPassValuesGadgetInfo(oReport) : AbstractGadgetInfo
데이터 작업의 값 전달 필드를 렌더링할 수 있는 GadgetInfo
를 생성 및 반환합니다.
하위 클래스는 기본 클래스가 제공하는 모든 GadgetInfo
를 필요로 하지 않을 수 있으므로 해당 메소드를 모두 호출할 필요는 없습니다. 이 방식으로 각 필드의 렌더링을 분리하면 언제든지 하위 클래스가 필요한 가젯을 선택할 수 있습니다. 일부 하위 클래스는 이러한 공통 데이터 작업 가젯의 다른 구현을 제공하도록 선택할 수도 있습니다.
CanvasDataAction, URLNavigationDataAction, HTTPAPIDataAction, EventDataAction
해당 클래스는 데이터 작업의 기본 유형에 대한 구체화된 클래스입니다. 자체적으로 작동하여 이러한 유형의 데이터 작업에 대한 일반 사용자 인터페이스를 제공합니다. 또한 사용자정의 데이터 작업 플러그인을 확장하는 데 편리한 기본 클래스로도 사용될 수 있습니다.
GET/POST/PUT/DELETE/TRACE
요청을 생성하고 HTTP Response
를 프로그래밍 방식으로 처리하는 데 사용됩니다.각 클래스는 다음을 처리해야 합니다.
invoke(oActionContext: ActionContext, oDataActionContext:DataActionContext)
이 메소드는 지정된 DataActionContext
객체를 사용하여 KOModel에서 정의된 속성을 결합하여 데이터 작업을 호출해야 합니다.
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
클래스는 다양한 데이터 작업 플러그인을 등록합니다. 해당 API는 다른 플러그인 처리기(예: 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
DataActionUpgradeHandler
클래스는 보고서가 열릴 때 UpgradeService
에 의해 호출됩니다.
DataActionHandler
클래스는 다음 두 가지 주요 메소드를 제공합니다.
deferredNeedsUpgrade(sCurrentVersion, sUpgradeTopic, oDataActionJS, oActionContext) : Promise
지정된 데이터 작업을 업그레이드해야 할지 여부(true
또는 false
)를 나타내는 부울로 분석되는 Promise
를 반환합니다. 메소드는 데이터 작업 인스턴스와 데이터 작업 생성자를 비교하여 데이터 작업을 업그레이드해야 할지 여부를 결정합니다.
performUpgrade(sCurrentVersion, sUpgradeTopic, oDataActionJS, oActionContext, oUpgradeContext) : Promise
지정된 데이터 작업에 대해 업그레이드를 수행하고 Promise
를 분석합니다. 업그레이드 자체는 데이터 작업에 대해 upgrade()
메소드를 호출하여 수행됩니다(업그레이드하려는 데이터 작업의 특정 하위 클래스만 업그레이드할 수 있음).
getOrder(sPluginType:String) : Number
데이터 작업 유형의 목록을 선호 순서대로 정렬하는 데 사용된 숫자를 반환합니다.
데이터 작업은 사용자 인터페이스 필드를 생성할 때와 사용자가 데이터 작업을 호출할 때 Oracle Analytics 코드와 상호작용합니다.
새 데이터 작업 인스턴스에 대한 필드 생성
이 상호작용은 Oracle Analytics가 데이터 작업 사용자 인터페이스 필드를 렌더링할 때 시작됩니다. 이를 위해 다음 작업이 수행됩니다.
GadgetInfos
에 대해 상위 GadgetInfo
로 사용되는 PanelGadgetInfo
를 생성합니다.getGadgetInfos()
를 호출합니다.PanelGadgetInfo
의 하위 항목으로 데이터 작업의 GadgetInfos
를 추가합니다.PanelGadgetInfo
를 렌더링하는 PanelGadgetView
를 생성합니다.PanelGadgetView
의 컨테이너인 HTMLElement
를 설정합니다.HostedComponent
트리에 연결된 HostedComponent
의 하위 HostedComponent
로 PanelGadgetView
를 등록합니다.
그러면 getGadgetInfos()
가 반환하는 배열에서 표시되는 순서대로 패널 가젯 내에서 데이터 작업의 가젯이 렌더링됩니다.
데이터 작업 호출
이 상호작용은 Oracle Analytics 사용자 인터페이스를 통해 (시각화의 데이터 포인트에 대한 컨텍스트 메뉴에서) 사용자가 데이터 작업을 호출할 때 시작됩니다.
사용자 상호작용에 대한 응답으로 코드는 다음과 같이 작동합니다.
DataVisualization
및 TransientVizContext
객체를 포함하는 INVOKE_DATA_ACTION
이벤트를 게시합니다.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>