1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【SAP Cloud Integration】ODataサービスを呼ぶ

Last updated at Posted at 2021-10-25

はじめに

この記事では、SAP Cloud Integrationを利用してODataサービスを呼ぶ、というシンプルなシナリオを実装してみます。単に「つなげるだけ」に主眼を置いており、取得したデータを利用することはしていません。シンプルに見えてつまづいた点もあったので記録に残しておきます。

初期設定は以下のチュートリアルを参考に実施します。
Set Up Integration Suite Trial

呼び出すサービス

2つのODataサービスを呼んでみます。いずれも、API Business Hubのサンドボックス環境を使用します。

事前準備

EDMXファイルのダウンロード

API Business Hubから各ODataサービスのEDMXファイルをダウンロードしておきす。
image.png

API Keyの取得

"Show API Key"をクリックしてAPI Keyを表示させ、コピーしておきます。
image.png

Integration Flowの作成

以下のようなフローを作成しました。各ステップの設定は以降で説明します。(Graph APIを呼ぶためにHTTPとOData V4と2つの方法を試しています)
image.png

Start Timer

タイマーで起動する設定です。このフローはデプロイ時に一度だけ動きます。
image.png

Set API Key

このステップはContent Modifierです。Content Modifierでは後続処理に渡すためのヘッダやボディの項目を編集できます。ここではapiKeyというヘッダ項目を定義しました。Valueには、事前準備で取得したAPI Keyを設定します。
image.png

Get Graph HTTP

最初はあえてODataアダプターを使わずに、HTTPアダプターでGraphのODataサービスを呼んでみます。
ポイントは、Request HeadersにContent Modifierで設定したapiKeyを指定するところです。ここではヘッダ項目が1つだけですが、複数指定する場合は|で区切って指定します。
image.png

Get SO V2

次に、S/4HANA CloudのSales OrderをOData V2のアダプターで呼びます。
image.png
ProcessingタブでResource Pathを選ぶときは、"Select"ボタンを押してダウンロードしておいたEDMXファイルを取り込みます。
image.png
ステップ1でLocal EDMX Fileを選択し、ダウンロードしておいたファイルを選択します。
image.png
ステップ2でエンティティを選択し、取得する項目やTop, Skipといったクエリパラメータを指定します。
image.png

Processingタブの下の方では、Request HeadersにapiKeyを設定します。HEADER DETAILSとMETADATA DETAILSの両方に設定します。
image.png

Get Graph OData V4

最後に、GraphのSales OrderをOData V4のアダプターで呼びます。
image.png
Proccessingタブでは、OData V2と同様に、ダウンロードしておいたEDMXファイルを取り込んでクエリパラメータの設定をします。Request HeadersにapiKeyを設定します。
image.png

以上でフローの設定は完了です。

接続のテスト

フローを動かす前に、各バックエンドへの接続がうまくいくかテストしてみましょう。
image.png
"TLS"のタブでテストします。証明書の有効性が確認でき、安全に接続できるかどうかがテストされます。
Hostに接続先のホスト名(https://を含まない)を入力し、"Send"をクリックします。
image.png

Integration Flowのテスト

作成したフローをデプロイします。タイマー起動なので、デプロイが完了するとすぐに動きます。Monitor Message Processingのタイルを見ると、エラーになっていることがわかります。
image.png
image.png
エラーのログを見ると、最後のOData V4の接続でエラーになっています。HTTPアダプターでは接続できましたが、OData V4アダプターでは接続できなかったようです。
image.png
エラーの詳細は以下です。unable to find valid certification path to requested targetというのが根本原因のようです。
image.png

トラブルシューティング

以下のノートによると、ODataV4の場合は接続先のホストの証明書の他に、EDMXが参照する外部のEDMXファイルにかかわる証明書が必要になるそうです。
https://launchpad.support.sap.com/#/notes/0002891906
EDMXファイルを開くと、以下の部分があります。https://oasis-tcs.github.ioの証明書が必要ということになります。

  <edmx:Reference Uri="https://oasis-tcs.github.io/odata-vocabularies/vocabularies/Org.OData.Capabilities.V1.xml">
    <edmx:Include Alias="Capabilities" Namespace="Org.OData.Capabilities.V1"/>
  </edmx:Reference>

証明書をダウンロードするには、ブラウザにhttps://oasis-tcs.github.ioと打ち込み、"Certificate"をクリックします。詳細な手順については以下のノートをご参照ください。
https://launchpad.support.sap.com/#/notes/2715005
image.png
証明書をダウンロードしたら、Keystoreからインポートします。
image.png
Add>Certificateより、ダウンロードした証明書を選択します。
image.png
証明書が追加されました。
image.png

念のためoasis-tcs.github.ioへの接続をテストしてみると、正常に終了します。
image.png

このあとフローを再度デプロイすると、正常に終了します。
image.png

まとめ

ODataサービスを呼ぶという簡単なシナリオでしたが、わかったことがいくつかありあす。

  • HTTPリクエストのヘッダは事前にContent Modifierで作成しておく必要がある
  • OData V4を使う場合、接続先ホスト以外にも証明書が必要になる
  • Connectivity Testをやっておくと吉(接続の問題なのかフローの問題なのかが切り分けれられる)
  • 証明書エラーはよく起きる。起こったら粛々と証明書をインポートすること
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?