イントロダクション

このチュートリアルでは、Oracle EPM Cloud PlanningのGroovyスクリプトから外部Rest APIをコールする方法を示します。スクリプトを呼び出す用のメニュー・アイテムを含む右クリック・アクション・メニューの作成方法と、アクション・メニューとデータ・フォームを関連付ける方法も学習します。

バックグラウンド

Groovy EPMオブジェクト・モデルは、内部(POD間またはその他のOracle Cloud Services)および外部REST APIをコールする方法を提供します。この例では、Groovyルールを作成して実行し、外部Google Places REST APIをコールして、ManageEmployeesフォームの従業員住所情報を追加または更新します。

前提条件

Cloud EPMのハンズオン・チュートリアルでは、Cloud EPM Enterprise Serviceインスタンスにスナップショットをインポートする必要がある場合があります。チュートリアル・スナップショットをインポートする前に、別のCloud EPM Enterprise Serviceインスタンスをリクエストするか、現在のアプリケーションおよびビジネス・プロセスを削除する必要があります。チュートリアル・スナップショットは、既存のアプリケーションまたはビジネス・プロセスにはインポートされません。また、現在作業中のアプリケーションまたはビジネス・プロセスを自動的に置換または復元することもありません。

このチュートリアルを開始する前に、次のことを行う必要があります。

  • サービス管理者にCloud EPM Enterprise Serviceインスタンスへのアクセス権を付与します。
  • このスナップショットをPlanningインスタンスにアップロードおよびインポートします。別のGroovyチュートリアルのスナップショットを以前にアップロードした場合は、同じスナップショットを引き続き使用できます。
  • このチュートリアルで使用するPlaces REST APIを含むGoogle Maps Platform APIの使用を開始する前に、APIキーを取得するために、サインアップして請求アカウントを作成する必要があります。詳細は、Google Mapsプラットフォームの開始を参照してください。

ノート:

スナップショットのインポート中に移行エラーが発生した場合は、HSS-Shared Servicesコンポーネントを除く移行、およびコア・コンポーネントのセキュリティ・アーティファクトとユーザー・プリファレンス・アーティファクトを再実行します。スナップショットのアップロードおよびインポートの詳細は、Oracle Enterprise Performance Management Cloud移行の管理のドキュメントを参照してください。

ヒント :

このチュートリアルに必要なスクリプトは、各セクション内にテキスト・ファイルとしてリンクされています。

Planning計算変数のロード

この項では、Groovyスクリプトで使用する計算変数をXMLファイルからアップロードします。

  1. HP4_Plan2_Variables.xmlのリンクを右クリックして、ファイルをローカル・ドライブに保存します。
  2. 左上からナビゲータ・アイコン「ナビゲータ」をクリックし、「ルール」(「作成および管理」の下)に移動してCalculation Managerを開きます。システム・ビューで、「EPM Cloud」→「HP4」を展開します。Plan2を右クリックし、「インポート」を選択します。
  3. 「ファイル・インポートの詳細」で、ローカル・ドライブからHP4_Plan2_Variables.xmlを選択して参照します。
  4. 「Location Details」で、次の項目を選択します。
    • アプリケーション・タイプ: EPM Cloud
    • アプリケーション: HP4
    • キューブ: Plan2
  5. 「インポート・オプション」で、「既存のオブジェクトの上書き」を選択します。
  6. インポート変数
  7. 「インポート」をクリックします。インポート結果を確認し、「OK」をクリックします。
    インポートの結果
  8. 「インポート」ダイアログ・ボックスを閉じるには、「取消」をクリックします。

Planningでの名前付き接続の作成

この項では、既存の接続を編集して、場所REST APIキーを含めます。

  1. 「ツール」の下の「接続」に移動し、「場所」接続を選択します。
  2. 接続
  3. キー・パラメータにAPIキーを入力して接続を編集します。接続を保存してクローズします。
  4. APIキー・パラメータ

Groovyスクリプトの作成

この項では、従業員住所を更新するGroovyスクリプトを実装します。事前定義済のManageEmployeesフォームを使用します。

従業員の管理
  1. Calculation Managerで、Plan2キューブに「Groovy Add or Update Employee Address」という名前のルールを作成します。
  2. 新規ルール
  3. ルール・エディタで、デザイナ・オプションを「スクリプトの編集」に変更し、スクリプト・タイプを「Groovyスクリプト」に設定します。
  4. ルール・エディタのオプション
  5. このスクリプトをコピーして、エディタに貼り付けます:
  6. /*RTPS: {Employee} {EmployeeAddress} {Scenario} {Year} {Period} {Entity} {Version}*/ 
    Member employee = rtps.Employee.member  
    
    // Get the complete address using the Google maps REST API. Use the original if Google maps can't find the address
    def address = rtps.EmployeeAddress  
    HttpResponse<String> jsonResponse = operation.application.getConnection("Places")
    .get()
    .queryParam("input", rtps.EmployeeAddress.enteredValue)
    .asString()  
    println(jsonResponse.body)  
    ReadContext ctx = JsonPath.parse(jsonResponse.body) 
    if(ctx.read('$.status') == "OK") 
    	address = getTextCellId(ctx.read('$.candidates[0].formatted_address') as String, true) 
    
    // Generate the calc script to save the employee address
    """SET CREATENONMISSINGBLK ON;
    FIX(${fixValues(rtps.Scenario, rtps.Year, rtps.Period, rtps.Entity, rtps.Version, employee)}, "USD")
        "Employee Address" = $address;
    ENDFIX;"""   
    

    このルールで使用されるすべてのランタイム・プロンプト(RTP)を1行目で定義します。

    Employee RTPで指定されたemployeeのメンバー・オブジェクトを取得します。

    EmployeeAddress RTPに入力したテキストをaddressのデフォルト値として割り当てます。

    Places接続を取得して、このリソースでHTTP GETリクエストを実行し、EmployeeAddress RTPに入力されたテキストをinput問合せパラメータの値として渡します。

    ノート:

    Places接続オブジェクトは、GroovyスクリプトとGoogle Places REST APIリソース間の通信リンクです。

    デバッグ目的でGoogle Maps REST APIレスポンスを記録します。

    JsonPathライブラリを使用して、APIから受信したJSONレスポンスを解析します。status == OKの場合、返された配列の最初の候補のオブジェクトからformatted_addressフィールドを読み取り、formatted_addressのテキスト・セルIDを取得し、アドレスに割り当てます。

    この従業員住所を保存するための計算スクリプトを生成します。

  7. ツールバーで、保存(保存)をクリックしてスクリプトを保存します。
  8. ノート:

    スクリプトを保存すると、「変数」タブに変数が表示されます。
  9. ユーザーは、EmployeeAddressの値のみを入力できます。「変数」タブで、「従業員」「エンティティ」「期間」「シナリオ」「バージョン」および「年」「非表示」を選択します。
  10. 非表示の変数

    ノート:

    ユーザーがフォームからスクリプトを実行すると、これらの非表示変数にはフォーム・コンテキストから値が割り当てられます。
  11. スクリプトを再度保存します。
  12. 検証およびデプロイ (検証およびデプロイ)をクリックします。検証のためにRTP値を入力します。
    • 従業員: Full Time Employees
    • エンティティ: No Entity
    • 期間: Jan
    • シナリオ: Current
    • バージョン: BU_Version_1
    • 年: FY16
    ルール・エディタのオプション
  13. 検証目的でこれらの値をデフォルトとして保存するには、「ルールに値を適用」を選択し、「OK」をクリックします。
  14. ノート:

    このステップでは、ルールは実行されません。ただし、検証プロセスを成功させるには、有効なメンバーを入力する必要があります。
  15. プロンプトが表示されたら「OK」をクリックし、Calculation Managerを閉じます。

Groovyスクリプトを実行するためのPlanningアクション・メニューの作成

この項では、Groovyスクリプトを実行する右クリック・アクション・メニュー項目を使用して、「従業員の管理」というアクション・メニューを作成します。

  1. 左上からナビゲータ・アイコン「ナビゲータ」をクリックし、「アクション・メニュー」(「作成および管理」の下)に移動して、「従業員の管理」という名前のアクション・メニューを作成します。
  2. 「従業員の管理」処理メニューの作成
  3. 「従業員の管理」処理メニューを編集し、「従業員住所の更新」という名前の子メニュー項目を追加します。次のオプションを入力または選択して、メニュー項目を定義します。
  4. オプション・フィールド 入力または選択する値
    メニュー・アイテム 従業員住所の更新
    ラベル 従業員住所の更新
    入力してください ビジネス・ルール
    必須パラメータ 従業員
    キューブ Plan2
    ビジネス・ルール Groovy従業員住所の追加または更新

    従業員住所メニュー項目の更新

  5. 「保存」をクリックし、「OK」をクリックしてメニュー・アイテムを保存します。最後に、「保存」をクリックしてアクション・メニューを保存します。
  6. 完了従業員の管理処理メニュー

Planningアクション・メニューとフォームの関連付け

このステップでは、アクション・メニューをManageEmployeesフォームに関連付けて、スクリプトをテストします。

  1. (「作成および管理」の下にある)「フォーム」にナビゲートし、ManageEmployeesフォームを編集します。
  2. 「従業員の管理」フォームの編集
  3. 「その他のオプション」タブで、「従業員の管理」コンテキスト・メニューを「選択したメニュー」リストに追加します。
  4. 「Manage Employees(従業員の管理)」コンテキスト・メニューの追加
  5. 「終了」をクリックして、フォームへの変更を保存します。
  6. フォーム・マネージャを閉じて、ホーム・ページに戻ります。

Groovyスクリプトのテスト

このステップでは、スクリプトをテストします。テスト手順には、EmployeeAddress RTPでその場所の完全なアドレスを取得するための有効な場所の入力が含まれます。

  1. 左上から、ナビゲータ・アイコン「ナビゲータ」をクリックし、「データ」をクリックしてデータ入力フォームのリストを表示し、ManageEmployeesをクリックして「従業員の管理」フォームを開きます。
  2. データ入力フォームのリスト
  3. Groovyスクリプトをテストするには、「従業員1」を右クリックして「従業員住所の更新」メニュー項目を選択します。
  4. 無効なEメールおよび名前を含む「従業員の追加」ダイアログ
  5. 従業員住所プロンプトで、Oracle、 San Joseと入力し、「起動」をクリックします。
  6. 無効な従業員名エラー・メッセージ

    開始に成功すると、Oracleの完全な住所であるSan Joseが従業員1の完全な住所として保存されています。

    無効な従業員Eメール・エラー・メッセージ
  7. フォームを保存して閉じます。「アプリケーション」の下の「ジョブ」にナビゲートして、ジョブ・コンソールを開きます。
  8. ジョブ・コンソール
  9. 「Groovy従業員住所の追加および更新」をクリックして、ジョブの詳細を表示します。「完了」ステータスをクリックして、Groovyスクリプトによって出力されるログ・メッセージを表示します。
  10. Groovyスクリプト・ログ・メッセージ

その他の学習リソース

docs.oracle.com/learnで他のラボを確認するか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。さらに、Oracle Universityにアクセスして、利用可能なトレーニング・リソースを確認してください。

製品ドキュメントについては、Oracle Help Centerを参照してください。