IICS CAIの実装レシピ - マスターページ

このページでは次のカテゴリを対象に、CAIの開発時にお役立ていただける記事を体系的にまとめています。

- [基礎](#基礎)
- [XQueryと関数を利用した実装](#xqueryと関数を利用した実装)
- [サービス接続](#サービス接続)
- [ファイル処理](#ファイル処理)
- [DB操作](#db操作)
- [その他のアプリケーション接続](#その他のアプリケーション接続)
- [IICSの他サービスとの連携](#iicsの他サービスとの連携)
- [運用監視](#運用監視)
- [トラブルシューティング](#トラブルシューティング)

なお、[CAIレシピ]では特に記載のない限りLinux環境にインストールしたSecure Agentを利用して、Linux環境にて動作確認を行っております。

## 実装レシピ

### 基礎

- [はじめてCAIを使う際に](https://qiita.com/shunsuzu/private/12b8dbd08a30efa0003a)
- [プロセスの作成と実行(匿名アクセスと基本認証)](https://qiita.com/shunsuzu/private/01d91caedb92bd7781ea)
- [プロセス実行環境の切り替え(Secure Agent環境での実行)](https://qiita.com/shunsuzu/private/2afc72613d894b4d553e)
- [Secure Agent環境の証明書入れ替え](https://qiita.com/shunsuzu/private/c7c520fba50e7934375e)
- [プロセスのデプロイ先・認証方法によるサービスURLの違い](https://qiita.com/shunsuzu/private/6e3ed33855993a80fc75)
- [API Managerを利用したプロセスの実行](https://qiita.com/shunsuzu/private/7937bdcf4c081321f3e7)
- [割り当てステップと、各種変数フィールドの利用](https://qiita.com/shunsuzu/private/fae696539cd245828848)
- [プロセスIDの取得と、アプリケーション統合コンソールとの突き合わせ](https://qiita.com/shunsuzu/private/fe094e2bd40692416c92)
- [デバッグのためのログレベル](https://qiita.com/shunsuzu/private/539f687049ab67444209)
- [待機ステップによるスリープ処理](https://qiita.com/shunsuzu/private/3e0ad5711a6d884915ce)
- [マイルストーンステップによる非同期実行](https://qiita.com/shunsuzu/private/c4ec68a42fc9d773b3b2)
- [終了ステップによるHTTPレスポンスコード/ヘッダーの設定](https://qiita.com/shunsuzu/private/a0acf33c961ec52ed4fd)
- [ディシジョンステップによるによる分岐処理](https://qiita.com/shunsuzu/private/cf69000890ccdfd1d42f)
- [ジャンプステップによる実行制御](https://qiita.com/shunsuzu/private/07da81c4301cbe5bfe9a)
- [並列パスステップによる同時実行制御](https://qiita.com/shunsuzu/private/38eaeabc07792d57e30d)
- [OSコマンドの実行](https://qiita.com/shunsuzu/private/19c35d8ce80126503a1f)
- [プロセスオブジェクトによるユーザー定義変数の利用](70f1c56f95536645e62f)
- [リスト型のプロセスオブジェクト変数の利用](https://qiita.com/shunsuzu/private/e625af9a3f5170a7d0fc)
- スケジューラによるCAIプロセスの実行

### XQueryと関数を利用した実装
- [CAIでXQueryを利用する時に覚えておきたいこと](https://qiita.com/shunsuzu/private/00f351d0ab9896fa36dc)
- [XQuery+XPathサンプル](https://qiita.com/shunsuzu/private/f8cb01d4461c82d041e6)
- [CAIプロセス実行時のプロトコル(HTTP/HTTPS)を確認する](https://qiita.com/shunsuzu/private/6bf431091db7d057acb6)
- [CAIプロセス実行時の動詞(GET, POSTなど)/ResourcePathに応じた処理](https://qiita.com/shunsuzu/private/98e26b0c23f66add4c7a)
- [CAIプロセス呼び出し元IPアドレスの取得](https://qiita.com/shunsuzu/private/ae4d8c6cbe9a225814a1)


### サービス接続
- [サービス接続によるREST APIの実行](https://qiita.com/shunsuzu/private/f2783c55a4d75661fc0b)
- [動的なURLを使用するサービス接続](https://qiita.com/shunsuzu/private/ca503453572158279008)
- [BASIC認証を使用するサービス接続](https://qiita.com/shunsuzu/private/581c65ee4b10f8b780f2)
- [HTTPレスポンスコード/ヘッダーを扱うサービス接続](https://qiita.com/shunsuzu/private/d87f324e758e6a3e95df)
- [REST APIによりファイルを取得するサービス接続](https://qiita.com/shunsuzu/private/669fb87728433ed1fd50)


### ファイル処理

- [ファイルの存在チェック](https://qiita.com/shunsuzu/private/2ebe6dba1327525a9bbd)
- [テキストファイルの作成](https://qiita.com/shunsuzu/private/7b460174a8da9a31c228)
- [CSVファイル読み込み・CSVファイル書き出し](https://qiita.com/shunsuzu/private/0f7bcf02639ced5af658)
- [CSVファイル読み込み・CSVファイル書き出し(動的ヘッダー)](https://qiita.com/shunsuzu/private/66197f4156ccba174eb6)
- CSVファイル読み込み、XMLファイル書き出し
- XMLファイル読み込み、CSVファイル書き出し
- XMLファイル読み込み、JSONファイル書き出し
- [ファイルアップロードとSecure Agent環境への保存(multipart/form-data)](https://qiita.com/shunsuzu/private/5582edefe55a9867a335)
- [Secure Agent実行環境のファイルダウンロード](https://qiita.com/shunsuzu/private/c9cce26ab766f2f0dd27)
- ファイルの監視と処理(CSVファイル)
- ファイルの監視と処理(固定長ファイル)



### その他のアプリケーション接続
- メール接続を利用したメール送信

### DB操作
- DBを操作するためのアプリケーション接続設定
- DBデータの取得(SELECT)
- DBデータの登録(INSERT)
- DBデータの更新(UPDATE)
- DBデータの更新(UPSERT)
- DBデータの削除(DELETE)
- DASによるSQL実行
- DASによるストアドプロシージャ実行

### IICSの他サービスとの連携
- IICS REST APIをサービス接続で利用する
- アセットのエクスポートと保存の自動化
- MassIngestion Taskの実行
- Mapping Taskの実行
- Taskflowの実行

### 運用監視

- [実行済みCAIプロセスのステータス取得](https://qiita.com/shunsuzu/private/08d434246a4767ce6de7)
- [実行中のCAIプロセスの取得](https://qiita.com/shunsuzu/private/a6d557597f2b6c4f07ed)

### トラブルシューティング
- 意図しないエラーを発生させて製品動作を理解する - OOM(OutOfMemory)
- JDBC接続利用時のトレース方法
- HTTP Request/Responseのトレース方法

## おわりに

私が社会人をプログラマとしてスタートした時、お世話になった書籍は __秀和システムさんの逆引き大全シリーズ__ と __技術評論社さんのSQLポケットリファレンス__ でした。体系的に情報がまとめられており、かけだしプログラマーの私にはバイブル的な存在でした。

CAIはプログラミング要素の強い製品であり、体系的に・順を追って製品の理解を深めてゆく必要があると感じています`(例えば、CSVファイルの読み込み・書き出し処理を実装したい場合は、まずは基本的なCAIプロセスの作り方、割り当てステップの使い方、プロセスオブジェクトの使い方、XQueryの使い方、アプリケーション接続の使い方を理解する必要があります)`。しかし、残念ながら2024年時点では、CAIの実装を体系的に・順を追って理解を深められる情報はありませんでした。

このような現状を踏まえてQiitaの場を借りて、CAIの実装レシピをまとめてみました。一連のCAIレシピが、CAIエンジニアにとってのバイブル的な存在になってくれると嬉しいなと思っています。

`2024年12月時点では、紹介したい未投稿のレシピが多数あります。
2025年12月末までには現状でリンクのないレシピを全てお見せできるように頑張りたいと思っています。もし良ければイイね！をいただけると、とても励みになります！！`