はじめに
次の記事で紹介している実装では、DBのデータを操作する際にSQLを記述する必要がないため、SQLに不慣れなエンジニアでもDBのデータを操作するアプリケーション連携の実装が可能です。一方で複雑な処理を実装したい場合や、処理性能を意識した実装が必要な場合には、これらの実装は不向きでした。
CAIにおいて開発者が書いたSQLを実行する方法としては以前よりProcess Developerを利用して実装する方法がありましたが、Eclipseベースの統合開発環境を操作する必要があり、実装コスト・アセット管理のコストを踏まえるとプロジェクトでの導入には敷居が高いものでした。
このような状況の中で2022年7月にDAS(Data Access Service)接続機能がリリースされ、容易にSQLによるデータの取得・登録・更新・削除処理が可能になりました。
この記事では、DAS接続によりSQLを実行する手順を確認します。
なお、この記事は次の記事の内容を理解していることを前提としています。
- はじめてCAIを使う際に
- プロセスの作成と実行(匿名認証と基本認証)
- 割り当てステップと、各種変数フィールドの利用
- ディシジョンステップによるによる分岐処理
- ジャンプステップによる実行制御
- プロセスオブジェクトによるユーザー定義変数の利用
- DBを操作するためのアプリケーション接続設定
DAS接続を利用してSQLを実行する
DAS接続を利用してSQLを実行する大まかな流れは次の3ステップになります。
- サービス接続の作成
- アプリケーション接続の作成
- CAIプロセスの作成
具体的な手順を確認してゆきましょう。
DAS接続の作成
-
最初に、接続したいDBが提供しているJDBCドライバをダウンロードします。今回は、DBを操作するためのアプリケーション接続設定でダウンロードしたOracle DBのJDBCドライバおよびテスト用に作成したテーブルを利用します。
-
IICSにログインして アプリケーション統合 のページに移動、 新規メニュー を選択して フォームを使用したデータアクセスコネクタ の作成画面を表示します。

-
名前 に recipe-svcconn-jdbc-DAS を指定します。
-
接続プロパティ セクションでは必須フィールド(*)に必要な値を指定します。

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

-
SQLバインディングタブ に切り替えてSQLを作成します。今回は タイプ として データの操作、 SQLクエリ として
select * from recipeTest001pk where col1='900'を指定して、作成ボタン をクリックします。

なお、今回はSELECT SQLを実行してクエリ結果を取得していますが、INSERT・UPDATE・DELETEを実行した場合には影響を受けた行数を取得する動作になります。
また、SQLバインディングタブ では複数のSQLを登録できます。複数のSQLを登録した場合、全てのSQLの実行が完了した時点にてトランザクションのコミットが行われます。 -
テスト結果タブ に切り替えて テスト を実行、応答ペイロード を確認して問題なければ プロセスオブジェクトの生成 をクリックします。

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

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

-
接続プロパティ セクションでは必須フィールド(*)に必要な値を指定します。

なお、DAS接続作成時にもこれらのフィールドは入力していましたが、DAS接続の画面では テスト接続 のための値を指定しておりました。こちらの画面ではCAIプロセスでDAS接続を利用時に利用する値を設定しています。 -
保存して パブリッシュ を実行します。
CAIプロセスの作成と実行
-
CAIプロセスを次の設定で作成します。
- 名前を recipe-psa-jdbcDAS とする
- 匿名アクセス を許可する
- Secure Agent にデプロイする
-
保存してパブリッシュします。
curlコマンドによりCAIプロセスを実行すると以下のように非主キー列であるcol2の値も含めた結果が得られます。
// 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.




