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列の値 |