40
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を操作するためのアプリケーション接続設定で作成したアプリケーション接続を利用して、DBのテーブルにデータを登録(INSERT)する実装を確認します。

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

データをテーブルに登録する実装

DBのテーブルにデータを登録(INSERT)するには次のようにCAIプロセスを作成します。

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

    • 名前を recipe-psa-jdbcInsert とする
    • 匿名アクセス を許可する
    • Secure Agent にデプロイする
  2. 作成ステップ を追加して作成タブを表示して、接続DBを操作するためのアプリケーション接続設定で作成した recipe-appConn-JDBC を指定します。 オブジェクト には主キーを持つテーブル RECIPETEST001PK に指定します。
    image.png

  3. 作成ステップ入力フィールド に切り替えて、COL1/COL2にそれぞれ recipe, val_recipe という文字を コンテンツ として指定します。
    image.png

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

実装したCAIプロセスは出力フィールドを持ちません。そのため、CAIプロセスを1度実行するだけでは空のレスポンスが得られますが、CAIプロセスを2回実行すると以下のように主キー制約違反としてORA-1発生する動作を確認できます。

curlコマンドと実行結果
// curl コマンド
curl -k https://localhost:7443/process-engine/public/rt/recipe-psa-jdbcInsert

// 実行結果(1回目)
{}

// 実行結果(2回目)
{
  "error": {
    "code": 500,
    "detail": {
      "reason": "ORA-00001: unique constraint (SCHEMA.PK_RECIPETEST001PK) violated\n Query: Insert Into \"SCHEMA\".\"RECIPETEST001PK\" (\"COL1\",\"COL2\") Values (?,?) ",
      "code": "CreateDataException"
    },
    "message": "ORA-00001: unique constraint (SCHEMA.PK_RECIPETEST001PK) violated\n Query: Insert Into \"SCHEMA\".\"RECIPETEST001PK\" (\"COL1\",\"COL2\") Values (?,?) "
  }
}

エラーハンドリングの実装

データをテーブルに登録する実装では、データ登録処理時に一意制約エラーが発生する動作を確認しました。既定の処理ではエラー発生時にはCAIプロセスは異常終了して HTTP 500 を返す動作です。エラー発生時に処理を分岐して動作を制御するには次のように 作成ステップ にて__フォルトの取得__ を有効化します。のオプションを有効化すると、エラー発生後に faultInfo というフィールドにエラー情報が記録されます。
image.png

参照

40
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
40
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?