데이터 작업 플러그인 및 데이터 작업 프레임워크 정보

데이터 작업 플러그인은 데이터 작업 프레임워크를 활용하여 Oracle Analytics 사용자 인터페이스에 잘 맞게 통합된 사용자정의 데이터 방식 작업을 제공합니다.

사용자가 데이터 작업을 호출하면 Data Action Manager가 요청을 처리하는 데이터 작업 플러그인에 요청 컨텍스트(예: 검증 데이터 참조, 측정항목 값, 필터 및 메타데이터)를 전달합니다. Oracle은 네 가지 유형의 데이터 작업 플러그인(CanvasDataAction, URLNavigationDataAction, HTTPAPIDataActionEventDataAction)을 제공합니다. 추상적 기본 클래스와 함께 해당 데이터 작업 플러그인 유형을 확장하여 고유 데이터 작업을 제공할 수 있습니다.

데이터 작업 범주

데이터 작업 범주로는 [URL로 이동], [HTTP API], [캔버스로 이동] 및 [이벤트 작업]이 있습니다.

  • URL로 이동: 지정된 URL을 새 브라우저 탭에서 엽니다.
  • HTTP API: GET/POST/PUT/DELETE/TRACE 명령을 사용하여 HTTP API를 대상으로 지정합니다. 새 탭이 열리지 않습니다. 대신 HTTP 상태 코드가 검사되고 임시 성공 또는 실패 메시지가 표시됩니다.
  • 캔버스로 이동: 사용자가 소스 캔버스에서 동일한 시각화 또는 다른 시각화의 대상 캔버스로 이동할 수 있습니다. 소스 캔버스에서 적용되는 모든 필터가 외부 필터로 대상 캔버스에 전달됩니다. 대상 캔버스가 열리면 시각화에 외부 필터 적용이 시도됩니다. 외부 필터 적용 방식은 여기서 설명되지 않습니다.
  • 이벤트 작업: Oracle Analytics 이벤트 라우터를 사용하여 이벤트를 게시합니다. 모든 JavaScript 코드(예: 타사 플러그인)가 해당 이벤트를 구독하고 이에 맞게 사용자정의 응답을 처리할 수 있습니다. 플러그인 개발자가 데이터 작업 응답 방식을 선택할 수 있으므로 유연성이 최대화됩니다. 예를 들어, 사용자 인터페이스를 표시하거나 한 번에 여러 서비스로 데이터를 전달하도록 선택할 수 있습니다.

URL로 이동HTTP API 데이터 작업 범주 유형은 토큰 구문을 사용하여 시각화에서 URLPOST 매개변수로 데이터나 메타데이터를 넣을 수 있습니다.

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, sUserIDsUserName입니다. 환경 변수 ${env:'sUserID'} myUserName

데이터 작업 컨텍스트

사용자가 데이터 작업을 호출할 때 전달되는 컨텍스트를 정의할 수 있습니다.

데이터 작업을 생성할 때 데이터 작업으로 전달되는 컨텍스트의 양을 정의합니다.

검증 데이터 참조

데이터 작업이 호출되면 LogicalFilterTree 객체의 배열을 사용하여 표시된 각 데이터 포인트에 대해 검증 데이터 참조가 생성됩니다. LogicalFilterTree는 트리 구조에서 배열되는 다중 LogicalFilterNode 객체로 구성됩니다. 이 객체는 다음과 같습니다.

  • 데이터 레이아웃의 행 또는 열 모서리에 있는 속성
  • 표시된 각 셀을 처리하는 측정항목 모서리의 특정 측정항목
  • 표시된 각 셀에 대한 특정 측정항목 값
  • 키 값 및 표시 값

환경 변수

특정 데이터 작업에는 표시된 각 데이터 포인트를 기술하는 메타데이터와 데이터를 비롯하여 데이터 작업이 호출되는 소스 환경을 기술하는 추가 컨텍스트가 필요할 수 있습니다. 각 환경 변수는 다음과 같습니다.

  • 프로젝트 경로
  • 프로젝트 이름
  • 캔버스 이름
  • 사용자 ID
  • 사용자 이름

데이터 작업 코드 설계

API 클래스를 사용하여 데이터 작업을 생성합니다.

  • AbstractDataAction 클래스에서 상속하는 데이터 작업의 구체화된 클래스는 다음과 같은 네 가지입니다.
    • CanvasDataAction
    • URLNavigationDataAction
    • HTTPAPIDataAction
    • EventDataAction
  • 데이터 작업 플러그인 API를 사용하여 새 유형의 데이터 작업을 생성할 수 있습니다.
  • 데이터 작업 유형의 레지스트리는 DataActionPluginHandler를 통해 관리됩니다.
  • 데이터 작업 인스턴스 생성, 읽기, 편집, 삭제 또는 호출을 수행하는 코드는 이벤트 게시를 통해 작동합니다.
  • 이벤트는 DataActionManager에 의해 처리됩니다.

데이터 작업 모델 클래스

여러 가지 유형의 데이터 작업 모델 클래스가 있습니다.

AbstractDataAction

이 클래스는 다음을 처리해야 합니다.

  • Knockout 모델을 저장합니다(하위 클래스가 고유 속성을 사용하여 Knockout 모델을 확장할 수 있음).
  • 하위 클래스가 구현해야 할 추상적 메소드를 정의합니다.
    • + 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

해당 클래스는 데이터 작업의 기본 유형에 대한 구체화된 클래스입니다. 자체적으로 작동하여 이러한 유형의 데이터 작업에 대한 일반 사용자 인터페이스를 제공합니다. 또한 사용자정의 데이터 작업 플러그인을 확장하는 데 편리한 기본 클래스로도 사용될 수 있습니다.

  • CanvasDataAction: 캔버스로 이동하는 데 사용됩니다.
  • URLNavigationDataAction: 새 브라우저 창에서 웹 페이지를 여는 데 사용됩니다.
  • HTTPAPIDataAction: HTTP API에 대한 GET/POST/PUT/DELETE/TRACE 요청을 생성하고 HTTP Response를 프로그래밍 방식으로 처리하는 데 사용됩니다.
  • EventDataAction: 이벤트 라우터를 통해 JavaScript 이벤트를 게시하는 데 사용됩니다.

각 클래스는 다음을 처리해야 합니다.

  • 기본 클래스에서 추상적 메소드를 구현합니다.
    • 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가 데이터 작업 사용자 인터페이스 필드를 렌더링할 때 시작됩니다. 이를 위해 다음 작업이 수행됩니다.

  1. 데이터 작업이 반환하는 GadgetInfos에 대해 상위 GadgetInfo로 사용되는 PanelGadgetInfo를 생성합니다.
  2. 데이터 작업에 대해 getGadgetInfos()를 호출합니다.
  3. 첫번째 단계에 생성된 PanelGadgetInfo의 하위 항목으로 데이터 작업의 GadgetInfos를 추가합니다.
  4. PanelGadgetInfo를 렌더링하는 PanelGadgetView를 생성합니다.
  5. PanelGadgetView의 컨테이너인 HTMLElement를 설정합니다.
  6. 이미 HostedComponent 트리에 연결된 HostedComponent의 하위 HostedComponentPanelGadgetView를 등록합니다.

    그러면 getGadgetInfos()가 반환하는 배열에서 표시되는 순서대로 패널 가젯 내에서 데이터 작업의 가젯이 렌더링됩니다.

데이터 작업 호출

이 상호작용은 Oracle Analytics 사용자 인터페이스를 통해 (시각화의 데이터 포인트에 대한 컨텍스트 메뉴에서) 사용자가 데이터 작업을 호출할 때 시작됩니다.

사용자 상호작용에 대한 응답으로 코드는 다음과 같이 작동합니다.

  1. 데이터 작업의 ID, 데이터 작업이 호출되는 DataVisualizationTransientVizContext 객체를 포함하는 INVOKE_DATA_ACTION 이벤트를 게시합니다.
  2. DataActionManager가 다음 방식으로 이 이벤트를 처리합니다.
    1. ID에서 데이터 작업 인스턴스를 얻습니다.
    2. 지정된 DataVisualization에서 표시된 데이터 포인트에 대한 LogicalFilterTrees를 얻습니다.
    3. 데이터 작업의 대상으로 전달할 모든 정보를 포함하는 DataActionContext를 생성합니다.
    4. 데이터 작업에 대해 invoke(oDataActionContext)를 호출합니다.

데이터 작업 plugin.xml 파일 예

이 항목에서는 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>

데이터 작업 플러그인 파일 및 폴더

데이터 작업 플러그인 구현에 사용되는 파일 및 폴더는 다음과 같습니다.

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