1.1 DatabaseTriggerとは
- Magic xpi のDatabaseTriggerを使用すると、データベースのテーブルを監視し、テーブルにデータが挿入・更新・削除されたタイミングで、xpiのフローを起動することができます。


| DBMS | バージョン |
| MS-SQL | 2008, 2008R2, 2012, 2014, 2016, 2017, 2019 |
| Oracle | 12c, 18c, 19c |
| DB2 | UDB 9.7 |
| DB2/400 | V7R1, V7R2, V7R3, V7R4 |
| MySQL | 5.x |
| PostgreSQL | 11 |

<xpi インストールフォルダ>\Runtime\Java\DatabaseDrivers
| DBMS | JDBCドライバの入手方法 |
| MS-SQL | xpi のインストール時にインストールされる |
| Oracle | OracleのHPよりダウンロードする(Oracleプロファイルへのサインインが必要)
https://www.oracle.com/database/technologies/appdev/jdbc-downloads.html |
| DB2 | IBMのHPよりダウンロードする
https://www.ibm.com/support/pages/db2-jdbc-driver-versions-and-downloads |
| DB2/400 | 接続先のIBM iより取得する
/qibm/ProdData/HTTP/Public/jt400/lib/jt400.jar |
| MySQL | MySQLのHPよりダウンロードする(Oracleプロファイルへのサインインが必要)
https://dev.mysql.com/downloads/connector/j/ |
| PostgreSQL | PostgreSQLのHPよりダウンロードする
https://jdbc.postgresql.org/download.html |
※ xpi 4.13は、JDK1.8で動作しています。JDK1.8に対応したJDBCドライバを入手、使用してください。
| 設定ファイル | パス |
| ifs.ini | <プロジェクトフォルダ>\ifs.ini |
| magic.ini | <Magic xpi インストールフォルダ>\Runtime\Magic xpa\magic.ini |

※ このパラメータを「Y」に設定すると、パラメータを省略または「N」に設定した場合に比べ、若干、処理速度が遅くなります。
※ 順番を担保しなくてもよい場合は、パラメータを省略または「N」に設定し、パフォーマンスを優先させることもできます。
【サービスの作成】

【サービスの作成】

【サービスの設定例 MS-SQL①】

| 名 | 値 |
| JDBC URL | jdbc:sqlserver://<IPアドレス>:<ポート番号> |
| データベース名 | <データベース名> |
| ユーザ名 | <ユーザ名> |
| パスワード | <パスワード> |
| クリーンアップ期間(日) | TriggerActionテーブルの処理済みのレコードを削除するまでの日数を指定 |
【サービスの設定例 MS-SQL②】

| 名 | 値 |
| JDBC URL | jdbc:sqlserver://<IPアドレス>:<ポート番号>;databaseName=<データベース名>;
integratedSecurity=true |
| データベース名 | (設定しない) |
| ユーザ名 | (設定しない) |
| パスワード | (設定しない) |
| クリーンアップ期間(日) | TriggerActionテーブルの処理済みのレコードを削除するまでの日数を指定 |
【サービスの設定例 Oracle①】

| 名 | 値 |
| JDBC URL | jdbc:oracle:thin:@<IPアドレス>:<ポート番号>:<SID> |
| データベース名 | <データベース名> ※ここでいうデータベース名とは、ユーザ名(スキーマ名)と同義 |
| ユーザ名 | <ユーザ名> |
| パスワード | <パスワード> |
| クリーンアップ期間(日) | TriggerActionテーブルの処理済みのレコードを削除するまでの日数を指定 |
【サービスの設定例 Oracle②】

| 名 | 値 |
| JDBC URL | jdbc:oracle:thin:@<IPアドレス>:<ポート番号>/<サービス名> |
| データベース名 | <データベース名> ※ここでいうデータベース名とは、ユーザ名(スキーマ名)と同義 |
| ユーザ名 | <ユーザ名> |
| パスワード | <パスワード> |
| クリーンアップ期間(日) | TriggerActionテーブルの処理済みのレコードを削除するまでの日数を指定 |
【サービスの設定例 DB2/400】

| 名 | 値 |
| JDBC URL | jdbc:as400://<IPアドレス>/ |
| データベース名 | <ライブラリ名> |
| ユーザ名 | <ユーザ名> |
| パスワード | <パスワード> |
| クリーンアップ期間(日) | TriggerActionテーブルの処理済みのレコードを削除するまでの日数を指定 |
【サービスの設定例 MySQL】

| 名 | 値 |
| JDBC URL | jdbc:mysql://<IPアドレス>:<ポート番号>/ |
| データベース名 | <データベース名> |
| ユーザ名 | <ユーザ名> |
| パスワード | <パスワード> |
| クリーンアップ期間(日) | TriggerActionテーブルの処理済みのレコードを削除するまでの日数を指定 |
【サービスの設定例 PostgreSQL】

| 名 | 値 |
| JDBC URL | jdbc:postgresql://<IPアドレス>:<ポート番号>/ |
| データベース名 | <データベース名> |
| ユーザ名 | <ユーザ名> |
| パスワード | <パスワード> |
| クリーンアップ期間(日) | TriggerActionテーブルの処理済みのレコードを削除するまでの日数を指定 |
【イベントの定義】

【イベントの定義】

【データベーストリガーの作成】
<xpi プロジェクトフォルダ>\Service\<サービス名>\EventActionScripts\<イベント名>_trigger.sql
| DBMS | クライアントツール(例) |
| MS-SQL | SQL Server Management Studio |
| Oracle | SQL Developer |
| DB2 | IBM Data Studio |
| DB2/400 | System i ナビゲーター |
| MySQL | MySQL Workbench |
| PostgreSQL | pgAdmin |
【テンプレートスクリプトの修正】
TriggerActionテーブル
| 列名 | データ型(DBMS依存) | 備考 |
| ActionId | 数値 | 1から連番が振られる |
| SchemaName | 文字(200) | スキーマ名(データベース名)が設定される |
| TriggerTableName | 文字(200) | 監視対象のテーブル名が設定される |
| ActionType | 文字(1) | アクションタイプが設定される
挿入:「C」、更新:「U」、削除:「D」 |
| TriggerStatus | 数値 | レコード挿入時はデフォルト値「0:未処理」が設定される
xpiのDatabaseTrigger処理時に「1:処理済」に更新される |
| Payload | 文字(1000)※ | 更新後の列の値(削除時は削除前の列の値)が設定される |
| CreatedDateTime | 日時 | レコード挿入時のシステム日時が設定される |
※ Payload列の長さは1000文字となっていますが、足りない場合は各DBMSのクライアントツールでテーブル定義を変更してください。
【テンプレートスクリプトの修正】
< MS-SQLのテンプレートのPayLoadをXML形式に修正する例 >



| 戻り値 | 変数に格納される内容 |
| 戻り値(テーブル名) | TriggerActionテーブルのTriggerTableNameの値 |
| 戻り値(アクションタイプ) | TriggerActionテーブルのActionType列の値
挿入:「C」、更新:「U」、削除:「D」 |
| 戻り値(Payload) | TriggerActionテーブルのPayload列の値 |