37
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

次の記事で紹介している実装では、DBのデータを操作する際にSQLを記述する必要がないため、SQLに不慣れなエンジニアでもDBのデータを操作するアプリケーション連携の実装が可能です。一方で複雑な処理を実装したい場合や、処理性能を意識した実装が必要な場合には、これらの実装は不向きでした。

CAIにおいて開発者が書いたSQLを実行する方法としては以前よりProcess Developerを利用して実装する方法がありましたが、Eclipseベースの統合開発環境を操作する必要があり、実装コスト・アセット管理のコストを踏まえるとプロジェクトでの導入には敷居が高いものでした。

このような状況の中で2022年7月にDAS(Data Access Service)接続機能がリリースされ、容易にSQLによるデータの取得・登録・更新・削除処理が可能になりました。

この記事では、DAS接続によりSQLを実行する手順を確認します。

なお、この記事は次の記事の内容を理解していることを前提としています。

DAS接続を利用してSQLを実行する

DAS接続を利用してSQLを実行する大まかな流れは次の3ステップになります。

  • サービス接続の作成
  • アプリケーション接続の作成
  • CAIプロセスの作成

具体的な手順を確認してゆきましょう。

DAS接続の作成

  1. 最初に、接続したいDBが提供しているJDBCドライバをダウンロードします。今回は、DBを操作するためのアプリケーション接続設定でダウンロードしたOracle DBのJDBCドライバおよびテスト用に作成したテーブルを利用します。

  2. IICSにログインして アプリケーション統合 のページに移動、 新規メニュー を選択して フォームを使用したデータアクセスコネクタ の作成画面を表示します。
    image.png

  3. 名前recipe-svcconn-jdbc-DAS を指定します。

  4. 接続プロパティ セクションでは必須フィールド(*)に必要な値を指定します。
    image.png
    以下、注意が必要なフィールドの補足です。

    • JDBCドライバ ... /apps/process-engine/ext に保存しているJDBCドライバのクラス名を指定します。
    • JDBC接続URL ... どのDBに、どのように接続するかを定義するフィールドです。具体的な指定方法はJDBCドライバの提供元にて公開している情報を参照します。
  5. アクションタブ に切り替えてアクションを定義します。ここでは アクション名 として DAS Sample を指定しています。
    image.png

  6. SQLバインディングタブ に切り替えてSQLを作成します。今回は タイプ として データの操作SQLクエリ として select * from recipeTest001pk where col1='900' を指定して、作成ボタン をクリックします。
    image.png
    なお、今回はSELECT SQLを実行してクエリ結果を取得していますが、INSERT・UPDATE・DELETEを実行した場合には影響を受けた行数を取得する動作になります。
    また、SQLバインディングタブ では複数のSQLを登録できます。複数のSQLを登録した場合、全てのSQLの実行が完了した時点にてトランザクションのコミットが行われます。

  7. テスト結果タブ に切り替えて テスト を実行、応答ペイロード を確認して問題なければ プロセスオブジェクトの生成 をクリックします。
    image.png

  8. 出力タブ に切り替えて出力フィールドとして DasOut を次のように定義します。
    image.png

  9. 再度 テスト結果タブ に切り替えて テスト を実行して 出力フィールド が期待通りに出力されていることを確認します。
    image.png

  10. 保存して パブリッシュ を実行します。

アプリケーション接続の作成

  1. 作成したDAS接続を利用するアプリケーション接続を作成します。アプリケーション接続の作成画面にて検索ボックスに DAS と入力して接続タイプをフィルタ後に recipe-svcconn-jdbc-DAS を選択します。
    image.png

  2. 名前recipe-appconn-jdbc-DAS を指定します。ランタイム環境 には Secure Agent または __ Secure Agentグループ__ を指定できます(Cloudは指定できません)。
    image.png

  3. 接続プロパティ セクションでは必須フィールド(*)に必要な値を指定します。
    image.png
    なお、DAS接続作成時にもこれらのフィールドは入力していましたが、DAS接続の画面では テスト接続 のための値を指定しておりました。こちらの画面ではCAIプロセスでDAS接続を利用時に利用する値を設定しています。

  4. 保存して パブリッシュ を実行します。

CAIプロセスの作成と実行

  1. CAIプロセスを次の設定で作成します。

    • 名前を recipe-psa-jdbcDAS とする
    • 匿名アクセス を許可する
    • Secure Agent にデプロイする
  2. 出力フィールド out を次のように定義します。
    image.png

  3. サービスステップ を追加して次のように指定します。
    image.png

  4. 割り当てステップ を追加して、DAS接続により得られた結果 DasOut を出力フィールド out に割り当てます。
    image.png

  5. 保存してパブリッシュします。

curlコマンドによりCAIプロセスを実行すると以下のように非主キー列であるcol2の値も含めた結果が得られます。

curlコマンドと実行結果
// curl コマンド
curl -k https://invgcsjcsa01.informatica.com:7443/process-engine/public/rt/recipe-psa-jdbcDAS

// 実行結果
{"out":{"result":{"statementId":"SQL Name 1","row":{"col1":900,"col2":"val-900"}}}}

アプリケーション接続(JDBC)を利用する場合、非主キー列の値を含めたデータを取得するためには2回SQLが実行されますが、DASを利用した場合には非主キー列の値を含めたデータ取得は1回のSQL実行で完了します。そのため処理時間にシビアな実装が求められる場合には、DAS接続を利用する方針を検討すると良いかもしれません。

参照

  • Qiita - IICS CAIの実装レシピ - マスターページ
  • 複数SQL指定時のコミット動作に関する製品ドキュメントの記載:
    Application Integration does not perform a commit after it executes every SQL query. To help with a rollback in case of an SQL query failure, the commit is done only at the end after all the SQL queries are executed. In a few databases, implicit commit occurs for DDL statements such as CREATE TABLE, DROP TABLE, and so on. These executions can't be rolled back.
37
1
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
37
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?