開発・運用サポート

1. サポートツールについて

2. テナント管理ツール

iPLAssを動かすために必要なテナントの作成はTenantManagerを利用します。

2.1. TenantManager

テナントマネージャーは、テナントの新規作成、削除、一覧表示の機能を持っています。

Swingで作成されたGUI版と、バッチ・シェルで作成されたCUI版があります。 GUI版では上の3つの機能全てを提供しています。 CUI版では新規作成、削除機能のみを提供しています。 AWS環境などへtelnet接続して利用する場合は、CUI版を利用してください。

環境設定

どちらの形式もバッチを実行して起動します。 バッチを実行するにはバッチの共通設定を参照して環境を設定してください。

2.2. TenantManager(GUI版)

GUI版を起動する場合は、 tenant_gui.bat (シェル版はありません)から実行します。

(例)GUIモードで起動した場合

画面が起動すると登録されているテナントの一覧が表示されます。 Partition List ボタンは、MySQL及びPostgreSQLの場合のみ表示されます。

tenant TenantManager GUI
テナントの作成

Create Default Tenant ボタンをクリックして新規作成ダイアログを表示します。

設定可能な項目は以下の通りです。

変数 設定値

name

テナント名を指定します。

Admin User Id

管理者ユーザーIDを指定します。

Admin User Password

管理者ユーザーパスワードを指定します。

Confirm Password

確認用の管理者ユーザーパスワードを指定します。

url

テナントを識別するURLを指定します。通常「/{name}」を設定します。 ここで設定する値は一意である必要があります。

displayName

テナント表示名を指定します。

TopUrl

テナントのTOP画面のURLを指定します。

UseLanguages

利用可能言語を指定します。 複数指定する場合はカンマ区切りで指定してください。 先頭をテナントのデフォルト言語に設定します。 未指定の場合は多言語利用をしない設定で作成します。

create blank Tenant

テナント情報と管理者ユーザーのみ作成するブランクテナントの作成を指定します。 デフォルトは未チェックです。 別環境から全てのメタデータを移行し、同様の環境(テスト環境など)を作成する場合などに指定します。

Sub-Partition size

サブパーティション数を指定します。 未指定の場合のサブパーティション数は「8」となります。 「0」が指定された場合はサブパーティションを利用しません。 PostgreSQLの場合のみ表示されます。

テナントの削除

一覧から削除したいテナントを選択し、 Remove Tenant ボタンをクリックします。

MySQLパーティション管理

MySQLの場合、内部で利用しているデータベーステーブルに対して、テナントIDごとにパーティションを作成します。 通常、テナントを新規で作成する際にパーティションを作成します。 ただしパーティションの作成処理はテーブルロックを伴うため、複数のテナントを運用している環境などでは、 パーティション作成処理中に他のテナントに対しても影響が発生します。 これを回避するために、データベースの初期構築時やAPサーバがオフラインのとき、 ユーザーアクセスが少ない時間帯に前もってパーティションを作成できるようにする機能が Partition List です。

Partition List ボタンをクリックすると、テーブルに対してすでに作成されているパーティション情報を表示します。 Max Tenant Id には、すでに作成済みのパーティション最大のテナントIDが表示されます。 Tenant List ボタンをクリックすることでテナントの一覧画面に戻ります。

パーティションを作成する場合、 Create Partition ボタンをクリックします。

Max Tenant ID に作成する最大のテナントID(数値)を指定して、 Create ボタンをクリックすると、すでに登録済みのパーティションから1ずつ増やしたパーティションを作成します。

例えば 10 を入力した場合、すでに 6 まで作成されていれば、 7、8、9、10 用のパーティションが作成されます。 この実行の間、テーブルロックが発生します。

変数 設定値

Max Tenant ID

作成するパーティションの最大のIDを指定します。

PostgreSQLパーティション管理

パーティション対応のPostgreSQLの場合、内部で利用しているデータベーステーブルに対して、テナントIDごとにパーティションを作成します。 通常、テナントを新規で作成する際にパーティションを作成しますが、前もってパーティションを作成できるようにする機能が Partition List です。

Partition List ボタンをクリックすると、パーティション対応のテーブルに対してすでに作成されているパーティション情報を表示します。 Max Tenant Id には、すでに作成済みのパーティション最大のテナントIDが表示されます。PostgreSQLではテナントIDの採番はシーケンスで行われるため、 表示されているテナントIDが最終のテナントIDとは限りません(最後に作成されたテナントが削除された場合など)。 Tenant List ボタンをクリックすることでテナントの一覧画面に戻ります。

パーティションを作成する場合、 Create Partition ボタンをクリックします。

Max Tenant ID に作成する最大のテナントID(数値)を指定して、 Create ボタンをクリックすると、すでに登録済みのパーティションから1ずつ増やしたパーティションを作成します。

例えば 10 を入力した場合、すでに 6 まで作成されていれば、 7、8、9、10 用のパーティションが作成されます。

変数 設定値

Max Tenant ID

作成するパーティションの最大のIDを指定します。

SubPartition Size

作成するサブパーティション数を指定します。「0」が指定された場合はサブパーティションを利用しません。

2.3. TenantManager(CUI版)

テナント作成

CUI版のテナント作成バッチを起動する場合は、 tenant_create.bat(sh) から実行します。 環境情報が表示された状態で止まるので、何かKEYを入力してください。

ここからテナント作成に必要な情報をウィザード形式で入力します。 表示されるメッセージに従って設定値を入力してください。

  • -show と入力すると、登録されているテナントの一覧を出力します。

  • -env と入力すると、実行している環境が出力されます。

全て設定が終わると、実行前に確認メッセージが表示されます。 yesでテナントの作成を開始します。

正常に作成されると SUCCESS が出力されます。 何かキーを入力して終了します。

テナント削除

CUI版のテナント削除バッチを起動する場合は、 tenant_delete.bat(sh) から実行します。 環境情報が表示された状態で止まるので、なにかKEYを入力してください。

ここからテナント削除に必要な情報をウィザード形式で入力します。 表示されるメッセージに従って設定値を入力してください。

テナント作成同様、 -show-env が利用できます。

全て設定が終わると、実行前に確認メッセージが表示されます。 yesでテナントの削除を開始します。

正常に削除されると SUCCESS が出力されます。 何かキーを入力して終了します。

MySQLパーティション作成

CUI版のMySQL用パーティション作成バッチを起動する場合は、 mysql_partition.bat(sh) から実行します。 環境情報が表示された状態で止まるので、なにかKEYを入力してください。

ここからパーティション作成に必要な情報をウィザード形式で入力します。 表示されるメッセージに従って設定値を入力してください。

テナント作成同様、 -show-env が利用できます。

全て設定が終わると、実行前に確認メッセージが表示されます。 yesでパーティション作成を開始します。

正常に作成されると SUCCESS が出力されます。 何かキーを入力して終了します。

PostgreSQLパーティション作成

CUI版のPostgreSQL用パーティション作成バッチを起動する場合は、 postgres_partition.bat(sh) から実行します。 環境情報が表示された状態で止まるので、なにかKEYを入力してください。

ここからパーティション作成に必要な情報をウィザード形式で入力します。 表示されるメッセージに従って設定値を入力してください。

テナント作成同様、 -show-env が利用できます。

全て設定が終わると、実行前に確認メッセージが表示されます。 yesでパーティション作成を開始します。

正常に作成されると SUCCESS が出力されます。 何かキーを入力して終了します。

サイレント形式

サイレント形式によるテナント作成バッチを起動する場合は、 tenant_silent.bat(sh) から実行します。 サイレント形式では、実行前の確認は行わず即座にテナントの作成を行います。

サイレント形式の場合、実行に必要な情報は設定ファイルで指定します。

設定ファイルは、 conf/tenant-create-config.properties として配布しています。 必要に応じて編集してください。

もし設定ファイルのパスやファイル名を変更した場合は、パッチの TENANT_CONFIG を変更してください。

正常に作成されると SUCCESS が出力されます。

2.4. iPLAssのデータ移行

各環境間でテナントに対するデータを移行する場合、iPLAssではメタデータとエンティティデータが対象になります。 メタデータ、エンティティデータそれぞれに移行ツールを提供しています。

ツールは、AdminConsoleのToolsバッチやシェルの形式で提供していますので、 利用場面に応じて選択してください。

メタデータの移行

メタデータの移行には、AdminConsoleのMetaDataExplorerを利用します。 MetaDataExplorerの詳細についてはMetaDataExplorerを参照してください。
メタデータのエクスポート、インポートについては、バッチも提供しています。

エンティティデータの移行

エンティティデータの移行には、AdminConsoleのEntityExplorerを利用します。 エンティティデータに含まれるバイナリファイルも一緒に移行したい場合は、Packaging機能を利用してください。 EntityExplorerの詳細についてはEntityExplorerを参照してください。

メタデータとエンティティデータを一緒に移行

メタデータとエンティティデータを一緒に移行する場合は、AdminConsoleのPackagingを利用します。 Packagingの詳細についてはPackagingを参照してください。
Pacakageのエクスポート、インポートについては、バッチも提供しています。

2.5. サービス閉塞機能

メタデータの更新作業の際などに、テナントで提供しているサービス(画面やWebApi)を一時的に利用不可にできる機能です。 サービスは以下の単位で利用不可できます。

  • 画面機能の利用停止
    Action単位で利用不可にできます。

  • WebApiに対する利用停止
    WebApi単位で利用不可にできます。

  • Entityに対する更新処理の停止(データリードオンリー)
    Entity単位で利用不可にできます。

それぞれの利用停止範囲は、ログインユーザー情報やアクセスパス(対象Action、対象WebApi、対象Entity)を参照して、GroovyScriptで制御できます。

tenant TenantMaintenance UnderMaintenance
(例)画面利用停止時の表示画面

設定方法

利用可否設定の確認・編集は、AdminConsoleのTenant設定から行います。

tenant TenantMaintenance StatusCheck

テナント情報の右上に現在のステータスが表示されます。 また編集ボタンから設定を変更できます。

設定画面は、上部の「ステータスの設定」と下部の「利用可否条件の設定」に分かれます。

  • ステータスの設定
    テナント自体のサービス利用可否を設定します。

  • 利用可否条件の設定
    ステータスが利用不可状態の場合にActionやWebApi、Entity等へのアクセス可否を判定するためのスクリプトを設定します。

まず利用不可にしたい条件をあらかじめ作成しておいて、実際に利用不可にしたいタイミングでステータスを更新することで、利用可否条件が有効になります。 「ステータスの設定」と「利用可否条件の設定」で保存タイミング(Saveボタン)が異なります。

ステータスの設定

ステータスは次の3つから選択します。

ステータス 内容

Available

テナントの全ての機能が利用可能な状態です。

UnAvailable

テナントの画面、WebApiを利用不可にします。 対象の画面(Action)やWebApiは指定されている条件により制御します。

なお、この状態でも管理者ユーザー(user.isAdmin() == true)は全ての機能が利用可能になります。

DataReadOnly

Entityの更新処理(InsertやUpdate、Delete、UpdateAllなど)ができない状態です。 参照のみ可能です。 対象のEntityは指定されている条件により制御します。

なお、この状態でも管理者ユーザー(user.isAdmin() == true)は更新可能になります。

利用可否条件の設定

複数の条件パターンを登録しておいて、そのどれを利用するかを指定する構成になっています。

有効にする条件の指定

予め作成しておいた条件パターンから、有効にする条件を選択します。 未指定の場合、以下の動作となります。

ステータス 内容

UnAvailable

全ての画面(Action)やWebApiが利用不可になります。

DataReadOnly

全てのEntityの更新処理(InsertやUpdate、Delete、UpdateAllなど)ができない状態になります。

  • 条件パターン
    現在定義している条件パターンが表示されます。 条件パターンをダブルクリックすると右の条件に内容を表示します。

  • 条件
    条件として以下の項目を設定できます。

設定項目 設定値

Name

条件名です。

Action Filter Script

Actionに対する利用可否をGroovyScript形式で定義します。 未指定の場合、全てが利用不可となります。 対象のAction名がバインドされるので、それをもとにtrue(利用可)/false(利用不可)を返すように定義します。 利用可能なバインド変数は、編集ダイアログの「Notes」を参照してください。

/* samples/ec01/配下を利用不可に設定 */
if (path.startsWith("samples/ec01/")) {
    return false;
}
return true;

Action Unavailable Customize Message

Actionが利用不可の場合にメンテナンスエラー画面に表示するメッセージをGroovyTemplate形式(HTMLタグ可)でカスタマイズできます。 未指定の場合、標準のメッセージが表示されます。 もしメンテナンスエラー画面(Template)自体を変えたい場合は、テナントの「エラー画面Template制御Script」で制御します。

発生する例外は org.iplass.mtp.tenant.available.UnavailableException です。

詳細は エラー画面Template制御Scriptの設定 を参照してください。

WebApi Filter Script

WebApiに対する利用可否をGroovyScript形式で定義します。 未指定の場合、全てが利用不可となります。 対象のWebApi名がバインドされるので、それをもとにtrue(利用可)/false(利用不可)を返すように定義します。 利用可能なバインド変数は、編集ダイアログの「Notes」を参照してください。

/* WebApiは利用可能 */
return true;

WebApi Unavailable Exception Customize Message

WebApiが利用不可の場合にレスポンスのJSONオブジェクトに設定するエラーメッセージをGroovyTemplate形式でカスタマイズできます。 なお、WebApiが利用不可の場合はHTTPステータスコードは503を返します。

Read Only Entity Filter Script

Entityに対する更新可否をGroovyScript形式で定義します。 未指定の場合、全てが更新不可となります。 対象のEntity名がバインドされるので、それをもとにtrue(ReadOnly=更新不可)/false(更新可)を返すように定義します。 利用可能なバインド変数は、編集ダイアログの「Notes」を参照してください。

/* samples.ec01配下を更新不可に設定 */
if (entityName.startsWith("samples.ec01.")) {
    return true;    //trueがReadOnlyなので注意
}
return false;

Entity Read Only Customize Message

Entityが更新不可の場合に発生する EntityReadOnlyException に対してメッセージをGroovyTemplate形式で指定できます。

汎用画面の場合、 ApplicationException が発生すると画面上(登録ボタン上部)にエラーメッセージを表示するようになっており、 設定したメッセージはここに表示されます。 汎用画面以外の場合はそれぞれのテンプレート内で制御するか、テナントの「エラー画面Template制御Script」で呼び出すテンプレート自体を制御します。

発生する例外は org.iplass.mtp.entity.available.EntityReadOnlyException です。

詳細は エラー画面Template制御Scriptの設定 を参照してください。

3. AdminConsoleのツール

AdminConsoleには開発をサポートするための各種ツールが付属しています。

3.1. EQLWorksheet

EQLWorksheetではEQLを実行し、結果を一覧で表示できます。 Functionや条件文、関数やバインド変数(Notes参照)の利用もできます。 また、EQLWorksheetでは更新や削除はできません。 AdminConsole上で更新や削除を行う場合は、EntityExplorerを利用してください。

EQL実行

EQLを作成し、 Execute ボタンをクリック(もしくはF8押下)することで、実行結果とメッセージログを確認する事ができます。 また、 Select Entity ボタンをクリックすることで、選択したEntityに対するSelect用EQLを自動生成できます。 尚、EQLの文法については画面上のNotes、およびEQL Referenceを参考にして下さい。

CSV出力

EQLが入力された状態で Export CSV ボタンをクリックすると、EQLの実行結果をCSVで出力できます。

3.2. EntityExplorer

EntityExplorerではEntityデータの確認、操作、メンテナンスを行うことができます。 Entityに対するツール機能は、このEntityExplorerに集約されています。

Entity List

Entity定義の一覧表示、各Entityに対するデータ検索を実行することができます。

定義のエクスポート

出力したいEntity定義にチェックを入れ ConfigExport をクリックする事で、Entityメタデータの定義を保存します。

  • CSV形式
    Entityのプロパティ定義またはView定義を一覧形式で出力します。

  • XML形式
    Entity定義、View定義、MenuItem定義、EntityWebApi定義をXML形式で出力します。

Entityデータ操作

Entity ListからEntityの行をダブルクリックする事で、そのEntityのデータを操作する画面を表示します。 Entityのメタデータメニュー上で「データを参照する」を実行した場合も、この画面が表示されます。

検索

Where条件、OrderBy条件を指定した検索やデータ件数取得ができます。 Select句はEntityに定義されているプロパティで固定となります。 Select句も含めカスタマイズしたい場合は、EQLWorksheetを利用してください。

Export、Import

指定されたWhere条件、OrderBy条件をもとにCSVファイルまたはPackageファイル(zip)としてエクスポートすることが可能です。 エクスポートされたファイルをインポートすることもできます。

Entityデータのインポートオプション

CSV形式のEntityデータを取り込む場合は、オプションを設定します。

項目 設定内容

既存データを全て削除する

対象となるEntityデータを一度全て削除します。データが削除されたタイミングで1度コミットされます。

bulkUpdateを利用する

データの更新方法としてbulkUpdateを利用します。 bulkUpdateの場合、Listener、Validation、forceUpdate、エラースキップ、UniqueKeyの指定が無効になります。

Listener処理を実行する

データを更新する際に、EventListenerを実行します。 Userエンティティをインポートする場合は必ず実行してください。

Validation処理を実行する

データを更新する際に、Validationを実行します。更新不可項目を更新する場合は実行できません。

更新不可項目を更新する

Updateの場合に、更新不可に設定されているプロパティもCSVの内容で強制的に更新します。 監査プロパティ(作成日、作成者、更新日、更新者)は対象外です。

Insert時に監査プロパティ値を指定する

Insertの場合に監査プロパティをCSVで指定された値で登録します。 指定しない場合、実行日時と実行ユーザーで登録されます。Updateの場合は対象外です。

変更が無い場合も強制的に更新する(force Update)

全ての値が同じ場合も、更新日時を更新します。

エラーデータはスキップしてインポートを続ける

データにエラーが発生した場合も、続けて後続のデータの取り込みを続けます。

Entity定義に存在しないプロパティデータは無視する

旧データの取り込み時など、既に存在しないプロパティは無視して取り込みます。

OID Prefix(英数字)

別サーバや別テナントのデータをインポートする場合に、OIDの衝突を避けるために指定します。 別環境などから取り込む際は必ず指定してください。また、参照関係のあるEntityデータを分割してインポートする場合、同じPrefixを指定してください。

UniqueKey

insertかupdateの判断を行う際に、OIDプロパティ以外でCSV上ユニークなプロパティがある場合は、そのプロパティを利用することが可能です。 Packageの場合は指定できません。

コミット単位

大量データを登録する際は、必ず分割してコミットしてください。

File Locale

出力されているEntityデータはロケールやタイムゾーンに依存した形式となっています。ロケールやタイムゾーンが異なる環境間でインポートする場合は、作成元の値を指定してください。

File Timezone

EntityExplorerではBinaryプロパティのデータを登録できません。Binaryを登録する場合はPackageを利用してください。
Userエンティティデータのインポート

User エンティティに対して、CSVファイルで初期パスワードを指定してInsertするには、 EntityCsvImportServicecanCreateUserWithSpecificPasswordtrue に設定する必要があります。 有効にした場合、CSVファイルで password 列を定義してパスワードを指定します。

インポート時は、Listenerの実行を有効にする必要があります。 また、登録ユーザーに適用される認証ポリシーの パスワードポリシー 設定で、 create account with specific passwordtrue になっている必要があります。

インポートCSVファイルの編集

EntityデータのCSVファイルに対して、ヘッダ行の先頭に"_useCtrl"を追加することで、CSVファイル内の各レコードに対して「追加、更新、削除」を指定できます。 各レコードの先頭に以下のコードを指定します。

I

インサート

U

アップデート

D

削除

M

マージ(インサートorアップデート)

_useCtrlを指定する場合のイメージは以下の様になります。

_useCtrl oid name description

U

38620

sample001-Update

sample001-Update

D

38621

sample002

sample002

I

12345

sample003

sample003

M

67890

sample004

sample004

バージョン管理されているEntityに対して削除をする場合、 version が指定されていればそのバージョンのみを削除します。 version が未指定の場合は全バージョンを削除します。
updateAll

画面上からEntityに対して一括更新(UpdateAll)を実行することができます。

項目 設定内容

enable unupdatable properties

変更不可プロパティを更新対象にするかを指定します。

プロパティ

更新対象のプロパティを選択します。共通プロパティのうち、KEY項目と監査プロパティは更新できません。 選択したプロパティをダブルクリックして、更新値を設定します。

delete、deleteAll

画面上から選択データの削除(Delete)や、条件指定による一括削除(DeleteAll)を実行することができます。

項目 設定内容

Delete Operation

Deleteを実行した場合は、選択データを削除するのか、条件による削除をするかを指定します。 Delete Allを実行した場合は、条件による削除になります。

Delete Condition

条件による削除の場合の条件を指定します。

execute EventListener

Entity定義のEvent Listenerを実行するかを指定します。 実行を選択した場合は、内部的に1件ずつ削除を実行します。

Commit Count

コミット単位を指定します。

Entity Crawl

全文検索 機能で必要となるIndexの作成処理(クローリング)を実行します。 全文検索機能を有効にしている場合にのみ表示されます。

一覧にはEntity定義で全文検索対象として保存されているEntityが表示されます。

クローリング

クローリング方法として、選択したEntityのみを対象に実行する方法と、全Entityをクローリングする2種類を提供しています。

  • 個別選択
    任意のEntityのみを対象としてクローリングしたい場合はリストのEntityにチェックをいれ、 Start Crawl ボタンをクリックして下さい。

  • 全実行
    クローリング対象Entityを全てクローリングしたい場合は Re Crawl All Entity ボタンをクリックして下さい。 この場合、チェックをいれていないEntityも全てが対象となります。

Entity Defrag

Entity定義の変更などにより、不要となった(参照されない)データ、バイナリファイルを削除します。 この実行によりデータベースの検索対象レコード件数が減るので、レスポンスが向上する場合があります。

対象のEntityを選択し、 Execute を実行してください。デフラグ処理はサーバ側で非同期に実行されます。

Audit Log

Entityの操作履歴(参照、追加・更新・削除)を検索、メンテナンス(削除)することができます。

検索処理

いくつかの条件で絞込みを行うことができます。

  • 対象のEntity、Property

  • 操作日時、操作内容

  • 操作したユーザー

検索した結果はCSVとしてエクスポートすることができます。

メンテナンス

不要になった操作履歴を削除することができます。検索処理と同様に条件を指定して絞り込みできます。

3.3. MetaDataExplorer

MetaDataExplorerでは、メタデータの確認、操作、メンテナンスを行うことができます。 メタデータに対するツール機能は、このMetaDataExplorerに集約されています。

検索処理

いくつかの条件で絞込みを行うことができます。

  • 更新日時

  • Tagの作成日時

一覧項目

一覧には、登録されているメタデータがパス(各メタデータ固有のパス+名前)ツリーで表示されます。

項目 内容

Path

メタデータのフルパス(各メタデータ固有のパス+名前)。 ツリー構造で表示します。

ID

メタデータ固有の一意な識別子。

Update Date

メタデータの最終更新日時。

SharedType

登録されているリポジトリの場所。

Shared

共有テナントまたはResouce(XML)、Annotationで定義されたメタデータ

Shared Overwrite

Sharedとして定義されたメタデータを自Tenant内で上書きしたもの。Localの状態。

Local

自Tenant内で定義されたメタデータ。

Sharable

このテナントが共有テナントとして動作する場合に、共有を許可するかの設定値。

Overwritable

このテナントが共有テナントとして動作する場合に、上書を許可するかの設定値。

Repository

メタデータの定義形式。

XML

XML形式

Annotation

Annotation形式

Rdb

Rdb形式

一覧上のメタデータをダブルクリックすることでメタデータの編集画面を表示します。

データのエクスポート、インポート

指定されたメタデータをXMLファイルとしてエクスポートすることが可能です。 エクスポートされたXMLファイルをインポートすることもできます。

またメタデータの名前の一覧をCSVファイルとして出力することも出来ます。

※インポートについて

インポートファイルをアップロード後、XMLファイルの解析が終わるとインポート可能なメタデータがツリー表示されます。 既存のメタデータと取り込むメタデータの状態によってはエラーや警告が表示されることがあります。 その際は一度両メタデータを確認し、インポートしても問題ないか確認してください。
またテナント情報がXMLに含まれる場合、更新対象の項目を選択するダイアログを表示します。 インポートする項目を選択してください。

Tag機能

ローカルのメタデータ(Rdb)をタグとして保存したり、そのタグからメタデータを復元する機能です。 メタデータを復元する際は、純粋な復元ではなく再インポートとなります。

Status Check機能

登録されているメタデータの整合性をチェックします。 MetaDataSettings メニュー上部からも同様のステータスチェックが実行可能です。

Execute をクリックするとステータスチェックが始ります。 エラーが発生した場合は、画面上にエラーが表示されます。 一覧を選択すると、「エラーメッセージ」にエラー内容が表示されます。 一覧をダブルクリックすると、エラーが発生しているメタデータの編集画面を表示します。

3.4. Packaging

PackagingはメタデータとEntityデータをまとめて、1つのPackage(Zipファイル)として管理する機能です。 作成したPackageはエクスポート、インポートが可能で、テナント間のデータ移行をサポートします。

パッケージの作成

Create を実行すると、Packageの作成画面を表示します。

Packageに含めるメタデータ、Entityデータを選択します。 ダイアログ上下のボタンで画面を切り替えることができます。 最後に Execute Pack でNameを指定して、 Create Package を実行します。

対象となるEntityデータの件数が多い場合は非同期で実行してください。 非同期で実行した場合、進捗状況は一覧画面で確認します。

同期で実行した場合、Packageの作成が完了すると、ダウンロード用のボタンが表示されます。

また非同期で実行した場合や同期で実行した場合でも、 1度作成したPackageは一覧上からダウンロードしたり、インポートすることが可能です。

インポート

別の環境などで作成したPackageを取り込むには、 Upload ボタンを実行します。 アップロード完了後、Packageのインポート画面を表示します。 また既にアップロード済みのPackageや自身で作成したPackageは一覧をダブルクリックすることでインポート画面を表示します。

Entityデータを取り込む場合は、オプションを設定します。 オプションについては、 Entityデータのインポートオプション を参照してください。

Import をクリックするとインポートを開始します。 インポート対象にテナント情報が含まれる場合、MetaDataExplorerと同様に項目の選択ダイアログが表示されます。

3.5. PermissionExplorer

PermissionExplorerはセキュリティに関連する定義を一括で設定する機能です。 汎用画面の権限情報で各権限を個別に設定することも出来ますが、PermissionExplorerを利用することで、ロール×権限の表形式で一括管理できます。

Role

Roleエンティティを管理します。 入力内容はロールを参照してください。

Entity Permission

表側にEntity定義、表頭にロールが表示されます。 権限を削除する場合は右クリックのメニューから行います。 入力内容はEntity権限を参照してください。

権限が設定されたセルは緑色、編集したセルはオレンジ、削除したセルは赤の背景色になります。 また、許可/不許可の設定により以下の表示になります。

C|R|U|D

参照(R)、追加(C)、更新(U)、削除(D)の内、許可した操作の頭文字を表示。 条件を指定した場合、「R(*)」のように表示される

All not allowed

参照、追加、更新、削除全てが不許可。

空欄

権限が未設定。

Action Permission

表側にAction定義がツリー構造で、表頭にロールが表示されます。 Action権限ではフォルダ階層に権限を設定することで、その階層から下のAction定義に対する権限をまとめて設定できます。 入力内容はAction権限を参照してください。

権限が設定されたセルは緑色、編集したセルはオレンジ、削除したセルは赤の背景色になります。

WebApi Permission

表側にWebApi定義がツリー構造で、表頭にロールが表示されます。 WebApi権限ではフォルダ階層に権限を設定することで、その階層から下のWebApi定義に対する権限をまとめて設定できます。 入力内容はWebApi権限を参照してください。

権限が設定されたセルは緑色、編集したセルはオレンジ、削除したセルは赤の背景色になります。

Workflow Permission

表側にWorkflow定義、表頭にロールが表示されます。 入力内容はWorkflow権限を参照してください。

権限が設定されたセルは緑色、編集したセルはオレンジ、削除したセルは赤の背景色になります。

UserTask Permission

表側にWorkflow定義とUserTaskActivity、表頭にロールが表示されます。 入力内容はUserTask権限を参照してください。

権限が設定されたセルは緑色、編集したセルはオレンジ、削除したセルは赤の背景色になります。

Cube Permission

表側にCube定義、表頭にロールが表示されます。 入力内容はCube権限を参照してください。

権限が設定されたセルは緑色、編集したセルはオレンジ、削除したセルは赤の背景色になります。

3.6. AuthUserExplorer

BuiltinAuthUserExplorerは標準の認証機能に対するユーザーをメンテナンスするための機能です。

Userエンティティに対する条件指定とロック状態やパスワード有効期限などのアカウント状態に対する条件指定が可能です。

アカウント状態による検索
  • locked user
    ロックユーザーで検索する。 ロックの条件は認証ポリシーと認証ポリシーのアカウントロック回数<エラー回数となる。

  • remaining days to expire password
    パスワードの有効残日数で検索する。 最終パスワード変更日と認証ポリシーのパスワード最大有効期限に対してチェックを行う。

  • last login date
    最終ログイン日時で検索する。

Userのプロパティによる検索

Userエンティティの属性(アカウントID、名前(カナも可)、メール、有効期間残日数(EndDate))やEQLのWhere句を直接指定できます。

ログインエラー回数のリセット

選択したユーザーのエラー回数をリセットします。 ログイン時のパスワードエラーが規定回数を超えた場合、アカウントロックとなりログインができなくなります。 エラー回数のリセットを行うことで、再度ログインができるようになります。

なお、エラー回数については、正しいパスワードによるログインを行うか、管理者ユーザー等でユーザーのパスワードリセットを行うことでもリセットできます。

3.7. QueueExplorer

QueueExplorerは非同期Commandやスケジュールタスク等の非同期タスクをメンテナンスするための機能です。 キュー毎に積まれているタスクの一覧表示や、過去の実行履歴、未完了のタスクのキャンセルといった操作ができます。

なお、非同期CommandやスケジュールタスクはRdbQueueServiceの「useQueue」をtrueにしないと実行できません。 QueueExplorerについても非同期タスクが実行できない状態では動作しません。

項目 内容

Task ID

Task実行にあたり割り振られたTaskIDです。

Grouping Key

実行対象TaskにGrouping Keyを割り当てていた場合に表示されます。

Status

対象TaskのStatusです。以下のいずれかのStatusが表示されます。

SUBMITTED

登録済。まだタスクは開始されていない。

EXECUTING

タスク実行中。

ABORTED

タスクは中断。

RETURNED

タスク実行完了し、結果が取得されるのを待っている。

COMPLETED

タスク実行完了(結果取得も完了)。

UNKNOWN

不明

Retry Count

何らかの理由でTaskが再実行された場合の実行回数が表示されます。

Exception Handling Mode

実行対象Taskに設定したException Handling Modeが表示されます。

Restart

処理をロールバックした後に再実行します。

Abort

処理を中断します。

Abort Log Fatal

処理を中断し、FATALとしてログ出力します。

キャンセル

一覧で選択したTaskをキャンセルすることができます。 完了しているタスクは選択できません。

削除

一覧で選択したTask情報を削除します。 削除したタスク情報は参照したり、元に戻すことができません。

履歴表示

実行履歴として過去に実行されたTaskを表示します。 背景色が濃い青で表示されます。

3.8. LangExplorer

各Metaデータの多言語情報の確認、更新を行うことが可能です。 テナントの多言語設定で多言語を利用する設定をしている場合は利用可能言語全てを登録する必要があります。 例えば、利用可能言語として日本語、英語を設定しており、各多言語設定で英語のみ登録していた場合、汎用画面にてユーザーが日本語を選択すると空表示となります。

多言語編集機能

一覧上のメタデータをダブルクリックすることで画面下部に多言語として編集可能な項目が表示されます。 表をダブルクリックすると行単位で編集状態になります。 編集後に Save ボタンをクリックすることで保存されます。

エクスポート、インポート

編集エリアに表示しているメタデータの多言語情報をCSVファイルとしてエクスポート、インポートすることも可能です。 メタデータ単位でエクスポート、インポートしたい場合は、画面下部の ExportImport ボタンを実行します。

複数のメタデータをまとめてエクスポート、インポートしたい場合は、画面上部のメタデータを選択後、 ExportCSVImportCSV を利用してください。

3.9. LogExplorer

LogExplorerは、テナントのログ出力設定を行ったり、ログファイルをダウンロードする機能です。 出力可能なフォルダやファイル名パターンは、service-configのAdminConsoleServiceで指定します。

ログ出力条件の設定

動的にログ出力条件を変更することが可能です。 「一時的にある特定ユーザーの操作のみ、DEBUGレベルで出力する。」といったことが可能です。 動的にログ出力条件を変更するためには、設定ファイル(service-configおよびlogback.xml)の設定が必要となります。詳細は LoggingService を参照ください。

次の項目を設定可能です。

項目 内容

Level

ログレベルを指定します。

設定例: DEBUG

Expires At

このログ設定の有効期限。

Logger Name Pattern

このログ条件を適用するロガー名の正規表現を指定します。

設定例: ^org\.iplass\..*

未指定の場合は、すべてのロガーに対して適用されます。

Condition

このログ設定を適用する条件を指定します。 条件はGroovyScriptで記述します。 次のバインド変数を参照可能です。

mdc

slf4jのMDCに格納されている値を参照可能です。

request

RequestContextを参照可能です。

auth

AuthContextを参照可能です。

設定例: mdc.user=='123'

上記の設定ではユーザーのoidが 123 の場合にこのログ設定が適用されるようになります。

未指定の場合は、すべてのログ出力にこのログ設定が適用されます。

4. バッチツール

4.1. 共通設定

事前準備

Gradleの copyRuntimeLibs タスクを実行してツールの実行に必要なライブラリを「lib」ディレクトリにコピーします。

gradlew copyRuntimeLibs
環境変数定義

ツールの実行に必要となる共通環境変数を設定します。 環境変数は tools_env.bat (Linuxの場合は「tools_env.sh」)に対して設定します。

設定する環境変数は以下のものです。

変数 設定値

SERVICE_CONFIG_NAME

各アプリのservice-configファイル名を指定します。ファイルはクラスパス上に格納されている必要があります。

mtp-service-config.xml

MTP_RESOURCE_PATH

リソースファイル(mtp-service-config.xmlなど)が格納されているパスを指定します。

.\..\conf

MTP_LIB_PATH

ライブラリ(jarなど)が格納されているパスを指定します。

.\..\lib

LANG

言語を指定します。system を指定した場合、JVMのLocaleの値を利用します。 ただし、「ja」「en」以外の場合は、「en」を言語として利用します。

system
ja
en

tools_env.bat には予め変数が定義されているので、値を設定してください。

MySQLを利用する際の注意点

MySQL環境に対してテナントを作成する場合、テナントごとにPartitionを作成するDDLが実行されます。 そのため「SERVICE_CONFIG_NAME」で指定した「xxx-service-config.xml」内のDB接続ユーザーに対して、「ALTER TABLE」権限が必要となります。 権限を持ったユーザーが、アプリケーションからの接続に利用するユーザーと異なる場合は、ツールを実行する前に mtp-service-config.xml 内の接続ユーザーを変更してください。

PostgreSQLを利用する際の注意点

パーティション対応のPostgreSQL環境に対してテナントを作成する場合、テナントごとにPartitionを作成するDDLが実行されます。 そのため「SERVICE_CONFIG_NAME」で指定した「xxx-service-config.xml」内のDB接続ユーザーに対して、「ALTER TABLE」権限が必要となります。 権限を持ったユーザーが、アプリケーションからの接続に利用するユーザーと異なる場合は、ツールを実行する前に mtp-service-config.xml 内の接続ユーザーを変更してください。

4.2. Packaging

Packageはテナントに登録されているメタデータやEntityデータをzip形式でまとめたものです。 Package機能を利用して、テナントのメタデータやEntityデータを更新したり、別のテナントに移行することができます。

AdminConsole上にも同様の機能があります。 このバッチは、AdminConsole上のPackagingと連携しています。

バッチ形式では、EntityExplorerに該当する機能は提供していません。 Entityデータをエクスポート、インポートする場合はPackage機能を利用します。

Export

Packageを作成する機能です。 実行形式としてウィザード形式とサイレント形式をサポートします。

バッチファイル
pack_export.bat(sh)

batファイル内に以下の変数が定義されています。必要に応じて修正してください。

変数 設定値

EXEC_MODE

WIZARD

ウィザード形式で実行します。

SILENT

サイレント形式で実行します。

TENANT_ID

テナントIDを指定します。-1の場合、ウィザードまたは設定ファイルで指定します。

PACK_CONFIG

サイレント形式の場合に、設定ファイルのパスを指定します。

ウィザード形式

ウィザード形式の場合、実行に必要な情報を質問形式で設定していきます。

質問 設定値

テナント名を入力してください。

エクスポートするテナントの名前を入力してください。

-show と入力すると、登録されているテナントの一覧を出力します。

出力先ディレクトリを入力してください。

Packageファイルの出力ディレクトリを指定します。 存在しない場合は作成を試みます。

Package名を入力してください。

作成するPackageの名前を入力します。

Packageを保存しますか?

エクスポートしたPackageをテナントに登録します。 AdminConsoleのPackage機能で参照することができます。(Typeが Offline として表示されます)

メタデータ設定

メタデータをExportする場合に表示されます。

質問 設定値

メタデータをExportしますか?

メタデータをエクスポートする場合は yes としてください。 後続の質問が続きます。

Localのメタデータのみを対象にしますか?

エクスポートするメタデータをLocalのみに限定するかを指定します。

全てのメタデータパスをExportしますか?

全てのメタデータを含める場合は yes としてください。 Localでかつ全てを選択した場合は、Localのメタデータを全てエクスポートします。

TenantメタデータをExportに含めますか?

全てをExportするで yes を選択した場合にのみ表示されます。 現状、インポート時に別名、別IDのテナントデータはエラーとしてはじかれます。

Export対象のメタデータパスを指定してください。

全てをExportするで no を選択した場合にのみ表示されます。 個別にパスを指定します。 *の利用、複数指定(カンマ区切り)が可能です。
action/mtp/*,/entity/Sample01,/entity/samples/*

対象メタデータはn件です。リストを表示しますか?

リストを表示するとした場合は、対象となるメタデータの一覧が表示されます。 続けて「処理を続けてよろしいですか?」と聞かれるので、問題なければ処理を続行します。

Entity設定

EntityデータをExportする場合に表示されます。

質問 設定値

EntityデータをExportしますか?

Entityデータをエクスポートする場合は yes としてください。 後続の質問が続きます。

全てのEntityデータをExportしますか?

全てのEntityデータを含める場合は yes としてください。

User EntityデータをExportに含めますか?

全てをExportするで yes を選択した場合にのみ表示されます。 なお、User Entityをインポートしても認証情報はインポートすることができません。 インポートしたUserでログインを行いたい場合は別途T_ACCOUNTテーブルをインポートしてください。

Export対象のEntity名を指定してください。

全てをExportするで no を選択した場合にのみ表示されます。 個別にEntity名を指定します。 *の利用、複数指定(カンマ区切り)が可能です。
mtp.*,samples.Sample01,sample2.sub.*

対象Entityデータはn件です。リストを表示しますか?

リストを表示するとした場合は、対象となるEntityの一覧が表示されます。 続けて「処理を続けてよろしいですか?」と聞かれるので、問題なければ処理を続行します。

被参照プロパティをExportに含めますか?

被参照プロパティをエクスポートする場合に yes を指定します。 インポート時は被参照プロパティは利用しないため(登録対象外)、除外したほうがエクスポートが高速になります。

全て設定が終わると、実行前に確認メッセージが表示されます。 yes でエクスポートを開始します。

正常に作成されると SUCCESS が出力されます。 何かキーを入力して終了します。

サイレント形式

サイレント形式の場合、実行に必要な情報は設定ファイルで指定します。

設定ファイルは、 conf/pack-exp-config.properties として配布しています。 必要に応じて編集してください。

もし設定ファイルのパスやファイル名を変更した場合は、パッチの PACK_CONFIG を変更してください。

テナントの指定については、バッチ引数でも設定ファイルでも指定することができます。 バッチ引数での指定を優先します。

Import

Packageをインポートする機能です。 実行形式としてウィザード形式とサイレント形式をサポートします。

バッチファイル
pack_import.bat(sh)

batファイル内に以下の変数が定義されています。必要に応じて修正してください。

変数 設定値

EXEC_MODE

WIZARD

ウィザード形式で実行します。

SILENT

サイレント形式で実行します。

TENANT_ID

テナントIDを指定します。-1の場合、ウィザードまたは設定ファイルで指定します。

FILE

インポートファイルを指定します。 empty の場合、ウィザードまたは設定ファイルで指定します。

PACK_CONFIG

サイレント形式の場合に、設定ファイルのパスを指定します。

ウィザード形式

ウィザード形式の場合、実行に必要な情報を質問形式で設定していきます。

質問 設定値

テナント名を入力してください。

インポートするテナントの名前を入力してください。

Importファイルパスを入力してください。

インポート対象のファイルパスを指定します。

Packageを保存しますか?

インポートするPackageファイルをテナントに登録します。 AdminConsoleのPackage機能で参照することができます。(Typeが Offline として表示されます)

メタデータ設定

インポートファイルにメタデータが存在する場合に表示されます。

質問 設定値

対象メタデータはn件です。リストを表示しますか?

リストを表示するとした場合は、含まれるメタデータの一覧が表示されます。 続けて「処理を続けてよろしいですか?」と聞かれるので、問題なければ処理を続行します。

Entity設定

インポートファイルにEntityデータが存在する場合に表示されます。

質問 設定値

対象Entityデータはn件です。リストを表示しますか?

リストを表示するとした場合は、含まれるEntityの一覧が表示されます。 続けて「処理を続けてよろしいですか?」と聞かれるので、問題なければ処理を続行します。

既存データを全て削除しますか?

すでに登録されているEntityデータを削除するかを指定します。

bulkUpdateを利用しますか?

インポート時にbulkUpdateを利用するかを指定します。bulkUpdateによるバッチ更新により高速化が見込めますが、 forceUpdate、エラースキップ、Listener、 Validationの指定が無効になります。

変更がない場合も強制的に更新しますか?

変更がない場合も強制的に更新するかを指定します。

エラーデータはスキップしてImportを続けますか?

インポートデータにエラーが含まれている場合、そのデータをスキップして次のデータの取り込み処理を継続するかを指定します。

存在しないプロパティは無視してImportを続けますか?

インポートデータにEntity上存在しないプロパティが含まれている場合、そのプロパティを無視して取込み処理を行うかを指定します。

Listener処理を実行しますか?

データ登録時にListenerを実行するかを指定します。

更新不可項目を更新しますか?

Entity更新不可プロパティについて、update時にCSVデータに設定されている値で更新するかを指定します。 これを有効にした場合、Validationは実行できません。

追加時に監査プロパティを指定した値で登録しますか?

InsertされるEntityの監査プロパティをCSVで指定された値で登録します。作成日、作成者、更新日、更新者が対象です。指定しない場合、実行日時と実行ユーザーで登録されます。
指定する場合は、管理者権限を持ったユーザーで実行する必要があるため、実行ユーザーID、パスワードを入力する必要があります。

Validation処理を実行しますか?

データ登録時にValidationを実行するかを指定します。

コミット単位を入力してください。

データをコミットする単位を指定します。 大量データを登録する際は、必ず分割してコミットしてください。

OID Prefixを入力してください。

必要に応じてOIDの先頭に付加する文字(英数字のみ)を入力します。 別サーバや別テナントのデータをインポートする場合は、必ず指定してください(自動採番時の重複エラーが発生します)

全て設定が終わると、実行前に確認メッセージが表示されます。 yes でインポートを開始します。

正常に作成されると SUCCESS が出力されます。 何かキーを入力して終了します。

サイレント形式

サイレント形式の場合、実行に必要な情報は設定ファイルで指定します。

設定ファイルは、 conf/pack-imp-config.properties として配布しています。 必要に応じて編集してください。

もし設定ファイルのパスやファイル名を変更した場合は、パッチの PACK_CONFIG を変更してください。

テナントとインポートファイルの指定については、バッチ引数でも設定ファイルでも指定することができます。 バッチ引数での指定を優先します。

4.3. Cleaner

Temporary Lob Cleaner

利用されていないLOBデータを削除します。 ユーザーがファイルアップロード後にEntity自体の登録をやめたものや、LobデータをもつEntityデータが削除されたものなどが対象になります。

バッチファイル
clean_temp_lob.bat(sh)

batファイル内に以下の変数が定義されています。 必要に応じて修正してください。

変数 設定値

TENANT_ID

テナントIDを指定します。-1の場合、全テナントが対象になります。

LOBデータの保存期間の設定についてはLobStoreServiceを参照してください。

Temporary User Cleaner

有効期限切れのテンポラリーユーザー情報を削除します。 UserEntityの有効終了日が現在日付より小さい場合且つ、テンポラリーフラグがtrueのユーザーが対象になります。

バッチファイル
clean_temp_user.bat(sh)

batファイル内に以下の変数が定義されています。 必要に応じて修正してください。

変数 設定値

TENANT_ID

テナントIDを指定します。-1の場合、全テナントが対象になります。

Invalid MetaData Cleaner

無効な(削除された)メタデータをDB上から物理削除します。 Entityの場合、Entityデータ自体も全て物理削除されます。

バッチファイル
clean_invalid_meta.bat(sh)

batファイル内に以下の変数が定義されています。 必要に応じて修正してください。

変数 設定値

TENANT_ID

テナントIDを指定します。-1の場合、全テナントが対象になります。

Async Task Cleaner

Status.RETURNEDのままのタスクを履歴へ移動し、古い履歴は削除します。

バッチファイル
clean_async_task.bat(sh)

batファイル内に以下の変数が定義されています。 必要に応じて修正してください。

変数 設定値

TENANT_ID

テナントIDを指定します。-1の場合、全テナントが対象になります。

日付の指定について

移動、削除対象の日付の指定はservice-configに設定します。 下記設定を追加し、①及び②の箇所を指定したい日付に変更して下さい。

<!-- AsyncTask queue and counter setting -->
<service>
  <interface>org.iplass.mtp.impl.async.rdb.RdbQueueService</interface>
  <!-- if use async rdb service set to true -->
  <property name="useQueue" value="true" />
  <property name="historyHoldDay" value="3" /> (1)
  <property name="queue" class="org.iplass.mtp.impl.async.rdb.QueueConfig">
    <property name="id" value="0" />
    <property name="name" value="default" />
    <property name="resultRemainingTime" value="172800000" /> (2)
    <property name="worker" class="org.iplass.mtp.impl.async.rdb.WorkerConfig">
      <property name="pollingInterval" value="60000" />
    </property>
  </property>
</service>
1 履歴削除対象となる日付を指定します。書式は日数です。 左記設定の場合、更新日付が3日より古い履歴が削除対象となります。
2 履歴移動対象となる日付を指定します。書式はlong値です。 左記設定の場合、更新日付が2日以前のタスクが移動対象となります。

Auth Provider Cleaner

認証プロバイダが一時的に生成したデータのクリーンナップ処理を行います。 具体的には、RememberMe機能を有効化している場合に、期限切れのトークンを削除する処理が実行されます。

バッチファイル
clean_auth_provider.bat(sh)

batファイル内に以下の変数が定義されています。 必要に応じて修正してください。

変数 設定値

TENANT_ID

テナントIDを指定します。-1の場合、全テナントが対象になります。

Rb Cleaner

ごみ箱内のデータを削除します。

service-configのEntityHandlerServiceで「purgeTargetDate」に日数を指定してください。 実行時から指定した日数より前にごみ箱へ削除されたデータを物理削除します。

バッチファイル
clean_rb.bat(sh)

batファイル内に以下の変数が定義されています。 必要に応じて修正してください。

変数 設定値

TENANT_ID

テナントIDを指定します。-1の場合、全テナントが対象になります。

Rdb Cache Cleaner

CacheServiceの各キャッシュに「RdbCacheStoreFactory」を指定した場合に、有効期間が過ぎたキャッシュをクリアします。

バッチファイル
clean_rdb_cache.bat(sh)

全てのテナントのキャッシュが削除対象となります。 また、指定可能なパラメータはありません。

Storage Space Cleaner

StorageSpaceから指定されたEntityのEntityデータを削除します。

バッチファイル
clean_storage_space.bat(sh)

実行すると、削除に必要な情報をウィザード形式で入力します。

以下の質問に回答してください。

質問 設定値

テナントIDを入力してください。

削除するEntityデータのテナントIDを指定します。

Entity名を入力してください。

削除するEntityデータのEntity名を指定します。

StorageSpace名を入力してください。

Entityデータを削除するStorageSpace名を指定します。

全て設定が終わると、削除処理を行います。

正常に削除されると SUCCESS が出力されます。 何かキーを入力して終了します。

4.4. Entity

Entity Crawl

全文検索用のインデックスを作成します。 新しく追加されたデータをインデックスに含める場合は、インデックスの再作成が必要になります。

バッチファイル
crawl_entity.bat(sh)

batファイル内に以下の変数が定義されています。 必要に応じて修正してください。

変数 設定値

CRAWL_MODE

CRAWL

インデックスを作成します。

RECRAWL

全てのインデックスを削除し、再作成します。

TENANT_ID

テナントIDを指定します。-1の場合、全テナントが対象になります。

ENTITY_NAME

特定のEntityのインデックスを作成したい場合Entity名を指定します。未指定の場合はテナント内のすべてのEntityが対象になります。

Custom Storage Space

iPLAssではAdminConsoleなどを利用して動的にEntityの定義を変更できます。 Entity定義を元に作成されるEntityのデータは、service-configに定義されたStorageSpaceに格納されます。

このバッチは、service-configに定義されたStorageSpaceの情報を元に、データベース上にテーブルをCreateするためのDDLを生成するものです。

Storage Spaceの詳細についてはStorageSpaceを参照してください。

Storage Spaceの設定

バッチを起動する前に、service-configに「Storage Space」の定義を追加します。 「mtp-tools-service-config.xml」の以下の箇所を参考に、作成する「Storage Space」の定義を追加してください。

<!-- Entity Store Settings -->
<service>
  <interface>org.iplass.mtp.impl.datastore.StoreService</interface>

  <!--
    カスタムのStorageSpaceを利用する場合、下記のコメントアウトをはずしてプロパティを変更してください。

    If you want to use a custom StorageSpace,
    please change the property and remove the comment out the following.
  -->

  <!--
    <property name="dataStore" class="org.iplass.mtp.impl.datastore.grdb.GRdbDataStore">
      <property name="storageSpace" additional="true">
        <property name="storageSpaceName" value="XXXXX" />
        <property name="tableNamePostfix" value="XXXXX" />
        <property name="tableCount" value="0" />
        <property name="varcharColumns" value="128" />
        <property name="decimalColumns" value="32" />
        <property name="timestampColumns" value="32" />
        <property name="doubleColumns" value="32" />
        <property name="indexedVarcharColumns" value="8" />
        <property name="indexedDecimalColumns" value="4" />
        <property name="indexedTimestampColumns" value="4" />
        <property name="indexedDoubleColumns" value="4" />
        <property name="uniqueIndexedVarcharColumns" value="2" />
        <property name="uniqueIndexedDecimalColumns" value="2" />
        <property name="uniqueIndexedTimestampColumns" value="2" />
        <property name="uniqueIndexedDoubleColumns" value="2" />
        <property name="varcharColumnLength" value="-1" />
        <property name="customPartition" value="false" />
        <property name="tableAllocator" class="org.iplass.mtp.impl.datastore.grdb.tableallocators.HashingTableAllocator" />
      </property>
    </property>
  -->
</service>
設定項目 設定値

storageSpaceName

Entity定義で選択する際に表示されるStorage Space名を指定します。 標準で「default」、「mtp」、「user」が定義されているので、それ以外の名前を指定してください。

tableNamePostfix

StorageSpace用のデータベーステーブルに付加する接尾語を指定します。 英数字のみ利用してください。 標準で「MTP」、「USER」が定義されているので、それ以外の名前を指定してください。

tableCount

StorageSpaceの疑似パーティションテーブル数を設定します。疑似パーティションを設定しない場合は 0 を設定してください。 数値のみ設定可能です。

varcharColumns

文字列型のプロパティを格納するための列数を指定します。 標準では、「Oracle, PostgreSQL, SQLServer:128、MySQL:64」が設定されています。 Entityのプロパティ型と列の型の対応についてはこちらを参照してください。

decimalColumns

Decimal型のプロパティを格納するための列数を指定します。 標準では、「Oracle, PostgreSQL, SQLServer:32、MySQL:32」が設定されています。 Entityのプロパティ型と列の型の対応についてはこちらを参照してください。

timestampColumns

Timestamp型のプロパティを格納するための列数を指定します。 標準では、「Oracle, PostgreSQL, SQLServer:32、MySQL:32」が設定されています。 Entityのプロパティ型と列の型の対応についてはこちらを参照してください。

doubleColumns

浮動小数点型のプロパティを格納するための列数を指定します。 標準では、「Oracle, PostgreSQL, SQLServer:32、MySQL:16」が設定されています。 Entityのプロパティ型と列の型の対応についてはこちらを参照してください。

indexedVarcharColumns

Index指定された文字列型のプロパティを格納するための列数を指定します。 標準では、「Oracle, PostgreSQL, SQLServer:8、MySQL:5」が設定されています。 Entityのプロパティ型と列の型の対応についてはこちらを参照してください。

indexedDecimalColumns

Index指定されたDecimal型のプロパティを格納するための列数を指定します。 標準では、「Oracle, PostgreSQL, SQLServer:4、MySQL:4」が設定されています。 Entityのプロパティ型と列の型の対応についてはこちらを参照してください。

indexedTimestampColumns

Index指定されたTimestamp型のプロパティを格納するための列数を指定します。 標準では、「Oracle, PostgreSQL, SQLServer:4、MySQL:4」が設定されています。 Entityのプロパティ型と列の型の対応についてはこちらを参照してください。

indexedDoubleColumns

Index指定された浮動小数点型のプロパティを格納するための列数を指定します。 標準では、「Oracle, PostgreSQL, SQLServer:4、MySQL:4」が設定されています。 Entityのプロパティ型と列の型の対応についてはこちらを参照してください。

uniqueIndexedVarcharColumns

Unique Index指定された文字列型のプロパティを格納するための列数を指定します。 標準では、「Oracle, PostgreSQL, SQLServer:2、MySQL:2」が設定されています。 Entityのプロパティ型と列の型の対応についてはこちらを参照してください。

uniqueIndexedDecimalColumns

Unique Index指定されたDecimal型のプロパティを格納するための列数を指定します。 標準では、「Oracle, PostgreSQL, SQLServer:2、MySQL:2」が設定されています。 Entityのプロパティ型と列の型の対応についてはこちらを参照してください。

uniqueIndexedTimestampColumns

Unique Index指定されたTimestamp型のプロパティを格納するための列数を指定します。 標準では、「Oracle, PostgreSQL, SQLServer:2、MySQL:2」が設定されています。 Entityのプロパティ型と列の型の対応についてはこちらを参照してください。

uniqueIndexedDoubleColumns

Unique Index指定された浮動小数点型のプロパティを格納するための列数を指定します。 標準では、「Oracle, PostgreSQL, SQLServer:2、MySQL:2」が設定されています。 Entityのプロパティ型と列の型の対応についてはこちらを参照してください。

varcharColumnLength

文字列格納カラムの文字列長を設定します。詳細な説明は こちら を参照してください。

customPartition

Partitionを利用する場合に標準のPartitionと異なるPartitionを利用するかを指定します。 標準のPartitionとは、以下の命名規則に則って作成されたテナント単位のPartitionです。

obj_store${tableNamePostfix}_テナントID

MySQL及びPostgreSQLの場合、自動でPartitionが生成できないので、テナント作成用ToolであるTenantManagerでテナントを作成・削除する際にPartitionの作成・削除を行います。 その際、この設定がtrueのStorageSpaceについてはPartitionに対する処理を行いません。

また本ツールで作成されるDDLでも、この設定がtrueのStorageSpaceについてはPartitionに関する指定を出力しません。

tableAllocator

TableAllocatorの設定。詳細な説明は こちら を参照してください。

storageSpaceは複数定義することが可能です。 複数定義したい場合は、以下のように定義してください。

<property name="dataStore" class="org.iplass.mtp.impl.datastore.grdb.GRdbDataStore">
  <property name="storageSpace" additional="true">
    <property name="storageSpaceName" value="sp1" />
    <property name="tableNamePostfix" value="SP1" />
    ・・・・・
  </property>
  <property name="storageSpace" additional="true">
    <property name="storageSpaceName" value="sp2" />
    <property name="tableNamePostfix" value="SP2" />
    ・・・・・
  </property>
  <property name="storageSpace" additional="true">
    <property name="storageSpaceName" value="sp3" />
    <property name="tableNamePostfix" value="SP3" />
    ・・・・・
  </property>
</property>
Entityのプロパティ型と列の型の対応について

StrageSpaceで設定する列の型は、以下のようにEntityの型に対応しています。

列の型 対象となるEntityプロパティの型

Varchar

AutoNumber、Boolean、Select、String、LongText、Binary

Timestamp

Date、Datetime、Time

Decimal

Decimal、Integer

Double

Float

バッチ実行

「mtp-tools-service-config.xml」を保存したらバッチを起動します。

storage_space_ddl.bat(sh)

ここからDDL生成に必要な情報をウィザード形式で入力します。

以下の質問に回答してください。

質問 設定値

Templateが格納されているディレクトリを入力してください。

DDL生成用のTemplateファイル(gtl)が格納されているディレクトリを指定します。 Templateはバッチファイルと同様に、「server-setup-kit」に含まれます。 初期値は、バッチファイルからの相対パスに対して、service-configで指定されたRDBの種類で出力されます。 Templateを別ディレクトリに格納している場合は、ここでディレクトリを指定してください。

出力先ディレクトリを入力してください。

DDLファイルを出力するためのディレクトリを指定します。 存在しない場合は作成を試みます。

対象のStorageSpace名を入力してください。

対象とするStorageSpace名を指定します。 未指定の場合、標準で提供される mtpuser を含む全てを対象にします。 複数指定する場合はカンマで区切ってください。

(例)sp1、sp2、sp3を対象にする場合

sp1,sp2,sp3

パーティションを作成しますか?

標準のパーティション定義を利用してパーティションを作成する場合は yes とします。 ここで no とした場合、パーティションに関するDDLを出力しません。 また yes とした場合でも、StorageSpace定義でcustomPartitionがtrueの場合はパーティションに関するDDLを出力しません。 OracleのStandard Editionを利用するなど、パーティションが利用できない場合は no としてください。

パーティション作成する場合、MySQL、Postgresqlの場合は明示的なパーティション追加操作が必要です。本ツールで出力したDDLを実行後、 TenantManager のパーティション管理機能(GUI版もしくはCUI版)を利用してパーティションの作成を行ってください。

ページ圧縮を利用する場合は圧縮形式を入力してください。[zlib/lz4/none]

MySQLのページ圧縮を利用する場合は圧縮形式[zlib/lz4/none]を指定します。 ここで未指定または定義外の圧縮形式を指定した場合はページ圧縮に関するDDLを出力しません。 MySQL以外を利用するなど、ページ圧縮が利用できない場合は未指定としてください。

全て設定が終わると、生成を開始します。

正常に作成されると SUCCESS が出力されます。 何かキーを入力して終了します。

出力先で指定したディレクトリにsqlファイルが出力されます。

生成されたStorageSpace用DDL定義に対して、カラムマッピング機能用の列を追加したり、データベースのIndexを変更するなどを行う場合は、 出力された「obj_store.sql」、「obj_store_rb.sql」に対して変更を行ってください。 他のsqlファイルは、ほとんどの場合変更する必要はありません

Storage Space Migration

EntityのStorageSpaceを変更しEntityデータを変更したStorageSpaceへ移動します。

バッチファイル
storage_space_migrate.bat(sh)

実行すると、移行に必要な情報をウィザード形式で入力します。

以下の質問に回答してください。

質問 設定値

テナントIDを入力してください。

移行するEntityのテナントIDを指定します。

Entity名を入力してください。

移行するEntity名を指定します。

移行先のStorageSpace名を入力してください。

移行先のStorageSpace名を指定します。

移行先の疑似パーティション位置を入力してください(指定可能範囲:0 ~ n)。自動で決定する場合は auto を入力してください。

移行先の StorageSpace に疑似パーティションが設定されている場合に質問が表示されます。
移行先のStorageSpaceの疑似パーティション位置を数値で指定します。質問の指定可能範囲の n には、疑似パーティション位置として指定可能な最大値が表示されます。 移行先のパーティション位置を自動で決定する場合は auto を入力してください。

移行元のStorageSpaceをクリーンアップしますか?

移行元StorageSpaceのEntityデータを削除する場合は yes とします。 ここで no とした場合、移行元のEntityデータは削除されず残ることになります。 移行元のEntityデータを残したまま、移行元のStorageSpaceへ再度移行した場合はEntityデータが重複して登録されることになります。 特別な理由がない限り yes を指定し移行元のEntityデータを削除してください。 もし移行後、移行元のEntityデータを残した状態で再度移行元のStorageSpaceへ移行する場合は、 Storage Space Cleanerにより移行元のEntityデータを削除してください。

全て設定が終わると、移行処理を行います。

正常に移行されると SUCCESS が出力されます。 何かキーを入力して終了します。

EQL Executor

指定のEQL文を実行します。

バッチファイル
eql_executor.bat(sh)
使用方法
eql_executor.bat(sh) [EQL文]

※EQL文は必ずダブルクォート(")で囲んでください。
※対話形式の場合はEQL文は不要です。

batファイル内に以下の変数が定義されています。必要に応じて修正してください。

変数 設定値

TENANT_ID

テナントIDを指定します。

SEARCH_ALL_VERSION

Version管理しているEntityに対して全てのバージョンを検索するかを指定します。デフォルトは「false(全てのバージョンを検索しない)」です。

EXEC_MODE

実行モードを指定します。

BATCH

バッチ形式。指定されたEQL文を実行し終了します。

INTERACT

対話形式。対話形式でEQL文を入力し実行します。対話形式を終了するまで連続してEQL文の入力と実行が出来ます。

デフォルトは「BATCH(バッチ形式)」です。

EQL_EXEC_MODE

EQL実行モードを指定します。

ONLY_EXEC

実行のみ。EQLの実行のみを行い件数や検索結果の表示は行いません。

ONLY_COUNT

カウントのみ。件数の表示のみを行います。

SHOW_SEARCH_RESULT

検索結果表示。件数及び検索結果の表示を行います。

CSV_EXPORT

CSV出力。検索結果をCSV形式でファイル出力します。

デフォルトは「ONLY_EXEC(実行のみ)」です。

USER_ID

ユーザーIDを指定します。指定がない場合は特権モードで動作します。

PASSWORD

パスワードを指定します。指定がない場合は「パスワードなし」で動作します。

EXPORT_FILE

EQL実行モードがCSV_EXPORTの場合、出力先のパスとファイル名を指定します。

CHARSET(Linuxのみ)

ターミナルの文字コードを指定します。デフォルトは「UTF-8」です。

対話形式

対話形式で実行するとプロンプト「EQL>」が表示されます。プロンプトに続いてEQL文を入力しエンターキーを押下することで入力されたEQL文が実行されます。 実行にはEQL文の最後にセミコロン(;)が必要です。セミコロンがない場合はマルチライン入力となりプロンプト「->」に続いて最後にセミコロンを入力しエンターキーを押下することでEQL文が実行されます。

例:シングルライン入力による実行

EQL> select oid, name from sample.MyEntity;⏎
oid,name
1,MyName1
2,MyName2
3,MyName3

3 rows selected.

例:マルチライン入力による実行

EQL> select oid, name⏎
  -> from sample.MyEntity;⏎
oid,name
1,MyName1
2,MyName2
3,MyName3

3 rows selected.

EQL実行モードを動的に変更することが可能です。「EQL_EXEC_MODE=」に続いてEQL実行モードを入力しエンターキーを押下します。 「EQL_EXEC_MODE=」のみを入力してエンターキーを押下した場合は現在のモードが表示されます。動的に変更したモードは実行中でのみ有効です。

例:EQL実行モードの確認と変更

EQL> EQL_EXEC_MODE=⏎
ONLY_EXEC
EQL> EQL_EXEC_MODE=SHOW_SEARCH_RESULT⏎
EQL> EQL_EXEC_MODE=⏎
SHOW_SEARCH_RESULT

※イコールの前後は空けずに入力してください。

「exit」または「quit」を入力しエンターキーを押下することで対話形式の実行を終了します。

Entity View

データベース上にEntityに対するビューをCreateするためのDDLを作成するものです。

バッチファイル
entity_view_ddl.bat(sh)

実行すると、作成に必要な情報をウィザード形式で入力します。

以下の質問に回答してください。

質問 設定値

テナントIDを入力してください。

DDLを作成するEntityのテナントIDを指定します。

Entityの名前または階層パスを入力してください。

DDLを作成するEntity名または階層パス名を指定します。/(半角スラッシュ)が指定された場合はトップ階層の指定となります。

出力ファイル名を入力してください。

作成されるDDLファイルのファイル名とパスを指定します。

出力ファイルが既に存在する場合は強制的に上書きしますか?

作成されるDDLファイルが既に存在する場合、強制的に上書きするかを指定します。

指定の階層パス下にある全てのエンティティを対象にしますか?(階層パス指定時)

階層パス名が指定された場合、指定された階層パスの全てのEntity及び階層パス下のEntityを対象とするかを指定します。 no を選択の場合、指定された階層パス化のEntityのみが対象となります。

全て設定が終わると、EntityビューDDL作成処理を行います。

正常に作成されると SUCCESS が出力されます。 何かキーを入力して終了します。

  • Entityのプロパティ型に対するビューにおける出力ついて

    Boolean

    ビューでは真は「1」、偽は「0」で出力されます。値の型は文字列となります。

    Select

    ビューでは値(value)が出力されます。表示値(displayName)は出力されません。

    Expression

    ビューでは NULL が固定値として出力されます。

    Binary

    ビューではロブIDが出力されます。ロブIDのカラム名はプロパティ名の末尾に _LOBID を付与した名前となります。

    LongText

    ビューではテキストとロブIDがそれぞれ別々のカラムとして出力されます。 ロブIDのカラム名はプロパティ名の末尾に _LOBID を付与した名前となります。 テキストはデータが内部に保持されている場合のみ出力され、Lobなど外部に保持されている場合は NULL が出力されます。 また、データが内部に保持されている場合のロブIDの値は「-1」となります。
    データの保持先の設定については、PropertyServiceを参照してください。

    Reference

    ビューではReference型のプロパティはカラムとして出力されません。代わりに、参照元と参照先のビューを関係づけるための中間ビューが作成されます。 中間ビューは、参照元の oidversion 、参照先の oidversion のカラムで構成されます。 参照元ビューと参照先ビューを中間ビューで結合することでReference型プロパティの参照が可能になります。
    中間ビューのビュー名は <参照元ビュー名>$<プロパティ名> となります。

  • 多重度について
    プロパティに設定された多重度数分のカラムが出力されます。(Reference型を除く)
    例えば、多重度が「3」のString型のプロパティ「tel」の場合、「tel_1」「tel_2」「tel_3」の多重度数分のカラムが出力されます。

  • ビュー名の自動縮小について
    ビュー名の長さについては使用するRDBごとに制限があり、この制限の長さを超える場合は自動的に制限の長さに収まるように縮小されます。 縮小の結果、ビュー名に重複が生じた場合はビュー名の末尾に連番が付与されます。

    RDB ビュー名最大長

    Oracle 12cR2以降

    128

    MySQL

    64

    PostgreSQL

    63

    SQLServer

    128

    Oracleを利用する際の注意点

    デフォルトではビュー名の最大長は 128 で処理されますが、12cR1以前を利用の場合はビュー名の最大長を 30 に設定してください。
    設定については、OracleRdbAdapterを参照してください。

Export

EntityのCSVファイル及びバイナリデータをエクスポートする機能です。 実行形式としてウィザード形式とサイレント形式をサポートします。

バッチファイル
entity_export.bat(sh)
使用方法
entity_export.bat(sh) [Entity名] [出力先ディレクトリパス] [バイナリデータをExportするか]

※対話形式の場合はEntity名、出力先ディレクトリパス、バイナリデータをExportするかは指定不要です。
※Entity名、出力先ディレクトリパス、バイナリデータをExportするかは設定ファイルでも指定することができます。

batファイル内に以下の変数が定義されています。必要に応じて修正してください。

変数 設定値

EXEC_MODE

WIZARD

ウィザード形式で実行します。

SILENT

サイレント形式で実行します。

TENANT_ID

テナントIDを指定します。-1の場合、ウィザードまたは設定ファイルで指定します。

ENTITY_CONFIG

設定ファイル(entity-exp-config.properties)を利用する場合にパスを指定します。

ウィザード形式

ウィザード形式の場合、実行に必要な情報を質問形式で設定していきます。

質問 設定値

テナント名を入力してください。

エクスポートするテナントの名前を入力してください。

Entity名を入力してください。

対象のEntity名を入力してください。

出力先ディレクトリ名を入力してください。

出力先ディレクトリ名を指定します。

バイナリデータをExportしますか?

バイナリデータをExportする場合は yes とします。 {出力先ディレクトリ}/lobs 配下にバイナリデータをExportします。

Entity設定
質問 設定値

Where条件を入力してください。

Where条件を指定します。

OrderBy条件を入力してください。

OrderBy条件を指定します。

全てのバージョンを検索しますか?

全てのバージョンを検索するかを指定します。

全て設定が終わると、実行前に確認メッセージが表示されます。 yes でエクスポートを開始します。

正常に作成されると SUCCESS が出力されます。 何かキーを入力して終了します。

サイレント形式

サイレント形式の場合、実行に必要な情報は設定ファイルで指定します。

設定ファイルは、 conf/entity-exp-config.properties として配布しています。 必要に応じて編集してください。

もし設定ファイルのパスやファイル名を変更した場合は、パッチの ENTITY_CONFIG を変更してください。

テナントやEntity名、出力先ディレクトリ名、バイナリデータをExportするかの指定については、バッチ引数でも設定ファイルでも指定することができます。 バッチ引数での指定を優先します。

Import

EntityのCSVファイル及びバイナリデータをインポートする機能です。 実行形式としてウィザード形式とサイレント形式をサポートします。

バッチファイル
entity_import.bat(sh)
使用方法
entity_import.bat(sh) [Entity名] [CSVファイルパス] [バイナリデータをImportするか]

※対話形式の場合はEntity名、CSVファイルパス、 バイナリデータをImportするかは指定不要です。
※Entity名、CSVファイルパス、バイナリデータをImportするかは設定ファイルでも指定することができます。

batファイル内に以下の変数が定義されています。必要に応じて修正してください。

変数 設定値

EXEC_MODE

WIZARD

ウィザード形式で実行します。

SILENT

サイレント形式で実行します。

TENANT_ID

テナントIDを指定します。-1の場合、ウィザードまたは設定ファイルで指定します。

ENTITY_CONFIG

設定ファイル(entity-imp-config.properties)を利用する場合にパスを指定します。

ウィザード形式

ウィザード形式の場合、実行に必要な情報を質問形式で設定していきます。

質問 設定値

テナント名を入力してください。

インポートするテナントの名前を入力してください。

Entity名を入力してください。

対象のEntity名を入力してください。

Importファイルパスを入力してください。

インポート対象のファイルパスを指定します。

バイナリデータをImportしますか?

バイナリデータをImportする場合は yes とします。 {Importファイルがあるディレクトリ}/lobs 配下のバイナリデータをImportします。

Entity設定
質問 設定値

既存データを全て削除しますか?

すでに登録されているEntityデータを削除するかを指定します。

bulkUpdateを利用しますか?

インポート時にbulkUpdateを利用するかを指定します。bulkUpdateによるバッチ更新により高速化が見込めますが、 forceUpdate、エラースキップ、Listener、 Validationの指定が無効になります。

変更がない場合も強制的に更新しますか?

変更がない場合も強制的に更新するかを指定します。

エラーデータはスキップしてImportを続けますか?

インポートデータにエラーが含まれている場合、そのデータをスキップして次のデータの取り込み処理を継続するかを指定します。

存在しないプロパティは無視してImportを続けますか?

インポートデータにEntity上存在しないプロパティが含まれている場合、そのプロパティを無視して取込み処理を行うかを指定します。

Listener処理を実行しますか?

データ登録時にListenerを実行するかを指定します。

更新不可項目を更新しますか?

Entity更新不可プロパティについて、update時にCSVデータに設定されている値で更新するかを指定します。 これを有効にした場合、Validationは実行できません。

追加時に監査プロパティを指定した値で登録しますか?

InsertされるEntityの監査プロパティをCSVで指定された値で登録します。作成日、作成者、更新日、更新者が対象です。指定しない場合、実行日時と実行ユーザーで登録されます。
指定する場合は、管理者権限を持ったユーザーで実行する必要があるため、実行ユーザーID、パスワードを入力する必要があります。

Validation処理を実行しますか?

データ登録時にValidationを実行するかを指定します。

コミット単位を入力してください。

データをコミットする単位を指定します。 大量データを登録する際は、必ず分割してコミットしてください。

OID Prefixを入力してください。

必要に応じてOIDの先頭に付加する文字(英数字のみ)を入力します。 別サーバや別テナントのデータをインポートする場合は、必ず指定してください(自動採番時の重複エラーが発生します)

全て設定が終わると、実行前に確認メッセージが表示されます。 yes でインポートを開始します。

正常に作成されると SUCCESS が出力されます。 何かキーを入力して終了します。

サイレント形式

サイレント形式の場合、実行に必要な情報は設定ファイルで指定します。

設定ファイルは、 conf/entity-imp-config.properties として配布しています。 必要に応じて編集してください。

もし設定ファイルのパスやファイル名を変更した場合は、パッチの ENTITY_CONFIG を変更してください。

テナントやEntity名、インポートファイルの指定については、バッチ引数でも設定ファイルでも指定することができます。 バッチ引数での指定を優先します。

Update All

Entityに対して一括更新(UpdateAll)する機能です。 実行形式としてウィザード形式とサイレント形式をサポートします。

バッチファイル
entity_update_all.bat(sh)
使用方法
entity_update_all.bat(sh) [Entity名] [更新する項目名と値] [Where条件]

※対話形式の場合、Entity名、更新する項目名と値、Where条件は不要です。

batファイル内に以下の変数が定義されています。必要に応じて修正してください。

変数 設定値

EXEC_MODE

WIZARD

ウィザード形式で実行します。

SILENT

サイレント形式で実行します。

TENANT_ID

テナントIDを指定します。-1の場合、ウィザードまたは設定ファイルで指定します。

ウィザード形式

ウィザード形式の場合、実行に必要な情報を質問形式で設定していきます。

質問 設定値

テナント名を入力してください。

対象のテナントの名前を入力してください。

Entity名を入力してください。

対象のEntity名を入力してください。

更新する項目名と値を入力してください。

更新する項目名と値を指定します。 複数指定する場合はカンマ区切りで指定してください。
設定例: propA='hoge', propB='fuga,fuga', propC=(select count() from EntityA where xxx in (1,2,3))

Where条件を入力してください。

Where条件を指定します。

全て設定が終わると、実行前に確認メッセージが表示されます。 yes で一括更新を開始します。

正常に作成されると SUCCESS が出力されます。 何かキーを入力して終了します。

サイレント形式

サイレント形式の場合、実行に必要な情報はバッチの引数で指定します。
実行前の確認メッセージを表示せずに即座にパッチが実行されます。

Delete All

Entityに対して一括削除(DeleteAll)する機能です。 実行形式としてウィザード形式とサイレント形式をサポートします。

バッチファイル
entity_delete_all.bat(sh)
使用方法
entity_delete_all.bat(sh) [Entity名] [Where条件] [Listner処理を実行するか] [コミット単位]

※対話形式の場合、Entity名、Where条件、Listner処理を実行するか、コミット単位は不要です。

batファイル内に以下の変数が定義されています。必要に応じて修正してください。

変数 設定値

EXEC_MODE

WIZARD

ウィザード形式で実行します。

SILENT

サイレント形式で実行します。

TENANT_ID

テナントIDを指定します。-1の場合、ウィザードまたは設定ファイルで指定します。

ウィザード形式

ウィザード形式の場合、実行に必要な情報を質問形式で設定していきます。

質問 設定値

テナント名を入力してください。

対象のテナントの名前を入力してください。

Entity名を入力してください。

対象のEntity名を入力してください。

Where条件を入力してください。

Where条件を指定します。

Listener処理を実行しますか?

データ削除時にListenerを実行するかを指定します。

コミット単位を入力してください。

データをコミットする単位を指定します。 大量データを削除する際は、必ず分割してコミットしてください。

全て設定が終わると、実行前に確認メッセージが表示されます。 yes で一括削除を開始します。

正常に作成されると SUCCESS が出力されます。 何かキーを入力して終了します。

サイレント形式

サイレント形式の場合、実行に必要な情報はバッチの引数で指定します。
実行前の確認メッセージを表示せずに即座にパッチが実行されます。

4.5. MetaData

Export

メタデータ定義をXMLファイルとしてエクスポートする機能です。 実行形式としてウィザード形式とサイレント形式をサポートします。

バッチファイル
meta_export.bat(sh)

batファイル内に以下の変数が定義されています。必要に応じて修正してください。

変数 設定値

EXEC_MODE

WIZARD

ウィザード形式で実行します。

SILENT

サイレント形式で実行します。

TENANT_ID

テナントIDを指定します。-1の場合、ウィザードまたは設定ファイルで指定します。

META_CONFIG

サイレント形式の場合に、設定ファイルのパスを指定します。

ウィザード形式

ウィザード形式の場合、実行に必要な情報を質問形式で設定していきます。

質問 設定値

テナント名を入力してください。

エクスポートするテナントの名前を入力してください。

-show と入力すると、登録されているテナントの一覧を出力します。

出力先ディレクトリを入力してください。

ファイルの出力ディレクトリを指定します。 存在しない場合は作成を試みます。

ファイル名を入力してください。

作成するファイル名を入力します。

Localのメタデータのみを対象にしますか?

エクスポートするメタデータをLocalのみに限定するかを指定します。

全てのメタデータパスをExportしますか?

全てのメタデータを含める場合は yes としてください。 Localでかつ全てを選択した場合は、Localのメタデータを全てエクスポートします。

TenantメタデータをExportに含めますか?

全てをExportするで yes を選択した場合にのみ表示されます。 現状、インポート時に別名、別IDのテナントデータはエラーとしてはじかれます。

Export対象のメタデータパスを指定してください。

全てをExportするで no を選択した場合にのみ表示されます。 個別にパスを指定します。 *の利用、複数指定(カンマ区切り)が可能です。
action/mtp/*,/entity/Sample01,/entity/samples/*

対象メタデータはn件です。リストを表示しますか?

リストを表示するとした場合は、対象となるメタデータの一覧が表示されます。 続けて「処理を続けてよろしいですか?」と聞かれるので、問題なければ処理を続行します。

全て設定が終わると、実行前に確認メッセージが表示されます。 yes でエクスポートを開始します。

正常に作成されると SUCCESS が出力されます。 何かキーを入力して終了します。

サイレント形式

サイレント形式の場合、実行に必要な情報は設定ファイルで指定します。

設定ファイルは、 conf/meta-exp-config.properties として配布しています。 必要に応じて編集してください。

もし設定ファイルのパスやファイル名を変更した場合は、パッチの META_CONFIG を変更してください。

テナントの指定については、バッチ引数でも設定ファイルでも指定することができます。 バッチ引数での指定を優先します。

Import

メタデータのXMLファイルをインポートする機能です。 実行形式としてウィザード形式とサイレント形式をサポートします。

バッチファイル
meta_import.bat(sh)

batファイル内に以下の変数が定義されています。必要に応じて修正してください。

変数 設定値

EXEC_MODE

WIZARD

ウィザード形式で実行します。

SILENT

サイレント形式で実行します。

TENANT_ID

テナントIDを指定します。-1の場合、ウィザードまたは設定ファイルで指定します。

FILE

インポートファイルを指定します。empty の場合、ウィザードまたは設定ファイルで指定します。

META_CONFIG

サイレント形式の場合に、設定ファイルのパスを指定します。

ウィザード形式

ウィザード形式の場合、実行に必要な情報を質問形式で設定していきます。

質問 設定値

テナント名を入力してください。

インポートするテナントの名前を入力してください。

Importファイルパスを入力してください。

インポート対象のファイルパスを指定します。

対象メタデータはn件です。リストを表示しますか?

リストを表示するとした場合は、含まれるメタデータの一覧が表示されます。 続けて「処理を続けてよろしいですか?」と聞かれるので、問題なければ処理を続行します。

全て設定が終わると、実行前に確認メッセージが表示されます。 yes でインポートを開始します。

正常に作成されると SUCCESS が出力されます。 何かキーを入力して終了します。

サイレント形式

サイレント形式の場合、実行に必要な情報は設定ファイルで指定します。

設定ファイルは、 conf/meta-imp-config.properties として配布しています。 必要に応じて編集してください。

もし設定ファイルのパスやファイル名を変更した場合は、パッチの META_CONFIG を変更してください。

テナントとインポートファイルの指定については、バッチ引数でも設定ファイルでも指定することができます。 バッチ引数での指定を優先します。

メタデータパッチ

ファイルベースのEntity定義を更新した際にEntityデータのパッチを行う機能です。 実行形式としてウィザード形式とサイレント形式をサポートします。

バッチファイル
meta_data_patch.bat(sh)

batファイル内に以下の変数が定義されています。必要に応じて修正してください。

変数 設定値

EXEC_MODE

WIZARD

ウィザード形式で実行します。

SILENT

サイレント形式で実行します。

TENANT_ID

テナントIDを指定します。-1の場合、ウィザードで指定します。

OLD_META_DATA_FILE

以前のメタデータファイルを指定します。_empty_ の場合、ウィザードで指定します。

NEW_META_DATA_FILE

新しいメタデータファイルを指定します。_empty_ の場合、ウィザードで指定します。

USER_ID

パッチを実行するユーザーIDを指定します。_empty_ の場合、特権モードで実行します。

PASSWORD

パッチを実行するユーザーのパスワードを指定します。

ウィザード形式

ウィザード形式の場合、実行に必要な情報を質問形式で設定していきます。

質問 設定値

テナントIDを入力してください。

データのパッチを行うテナントのIDを入力してください。

以前のメタデータのファイルパスを入力してください。

以前のメタデータのファイルパスを入力してください。

新しいメタデータのファイルパスを入力してください。

新しいメタデータのファイルパスを入力してください。

ユーザーIDを入力してください。(任意)

パッチを実行するユーザーのIDを入力してください。未入力の場合は特権モードで実行します。

パスワードを入力してください。

パッチを実行するユーザーのパスワードを入力してください。

全て設定が終わると、実行前に確認メッセージが表示されます。 yes でパッチの実行を開始します。

正常にパッチが実行されると SUCCESS が出力されます。 何かキーを入力して終了します。

サイレント形式

サイレント形式の場合、実行に必要な情報はバッチファイルの変数で指定します。

実行前の確認メッセージを表示せずに即座にパッチが実行されます。

名前一覧Export

AdminConsoleやPackageバッチなどでエクスポートしたメタデータ定義XMLファイルに含まれるメタデータ名をCSV形式で出力します。

バッチファイル
meta_namelist.bat(sh)

実行すると、Exportに必要な情報をウィザード形式で入力します。

以下の質問に回答してください。

質問 設定値

メタデータのファイルパスを入力してください。

対象のメタデータXMLファイルのパスを指定します。 メタデータXMLファイルまたはPackageで出力したzipファイルを指定してください。

出力先ディレクトリを入力してください。

出力先のディレクトリを指定します。 存在しない場合は作成を試みます。

出力ファイル名を入力してください。

出力する一覧のファイル名を指定します。

全て設定が終わると、出力処理を行います。

正常に作成されると SUCCESS が出力されます。 何かキーを入力して終了します。

4.6. 設定ファイル暗号化

Encoder

service-configに設定する文字列の暗号化を行います。

バッチファイル
crypt_encode.bat(sh)

batファイル内に以下の変数が定義されています。 必要に応じて修正してください。

変数 設定値

CRYPT_CONFIG_FILE

/crypt.properties(デフォルト)

暗号化プロパティファイル(crypt.properties)をクラスパスのルートに配置してください。 ファイル名や配置場所が異なる場合は、この設定を修正してください。

暗号化は暗号化プロパティファイルの設定に基づいて行われます。 プロパティファイルについては難読化を参照してください。 なお、パスフレーズのみファイルからではなく、コンソールで入力した文字列を利用します。

FILE_MODE

-file

暗号化を行う文字列をテキストファイルにて指定する場合はこの変数の設定のコメントアウトを外し有効にしてください。 デフォルトでは無効となってます。

FILE_MODE OFF

変数「FILE_MODE」の設定が無効の状態で実行すると、コンソールから入力された文字列を暗号化します。 暗号化はウィザード形式にて行われます。

以下の質問に回答してください。

質問 設定値

enter passphrase

暗号化の鍵生成用のパスフレーズを入力します。

enter same passphrase again

先に入力したパスフレーズと同じものを入力します。 異なる場合は暗号化を終了します。

enter plain text

暗号化を行う文字列を入力します。

暗号化する文字列を入力後、「encrypted text」の表示とともに暗号化された文字列が表示されます。 暗号化された文字列の表示後、再度「enter plain text」と表示され暗号化する文字列の入力待ちとなり続けて暗号化を行うことができます。 暗号化を終了する場合は暗号化する文字列に何も入力せずにエンターキーを押下してください。

FILE_MODE ON

変数「FILE_MODE」の設定を有効にして実行すると、テキストファイルにて暗号化する文字列を指定して暗号化を行います。 暗号化はウィザード形式にて行われます。

以下の質問に回答してください。

質問 設定値

enter passphrase

暗号化の鍵生成用のパスフレーズを入力します。

enter same passphrase again

先に入力したパスフレーズと同じものを入力します。 異なる場合は暗号化を終了します。

enter file path of plain text

暗号化を行うテキストファイルのパスを指定します。 無効なパスが指定された場合は暗号化を終了します。

暗号化する文字列を入力後、「encrypted text」の表示とともに暗号化された文字列が表示されます。 暗号化された文字列の表示後、再度「enter file path of plain text」と表示され暗号化するテキストファイルの入力待ちとなり続けて暗号化を行うことができます。 暗号化を終了する場合はCTRL+Cを押下してバッチを終了してください。

4.7. LobStore Migration

File to RDB

LobStoreのデータをファイルシステムからRDBへ移行します。

バッチファイル
lobstore_file2rdb.bat(sh)

batファイル内に以下の変数が定義されています。 必要に応じて修正してください。

変数 設定値

TENANT_ID

テナントIDを指定します。-1の場合、全テナントが対象になります。

ROOT_DIR

LobStoreのファイルパスを指定します。デフォルトは「D:\tmp\fileLobStore」です。

MIGRATE_TARGET

移行対象のデータを指定します。

ALL

Binary型及びLongText型のLobデータ

BINARY

Binary型のLobデータ

LONGTEXT

LongText型のLobデータ

RDB to File

LobStoreのデータをRDBからファイルシステムへ移行します。

バッチファイル
lobstore_rdb2file.bat(sh)

batファイル内に以下の変数が定義されています。 必要に応じて修正してください。

変数 設定値

TENANT_ID

テナントIDを指定します。-1の場合、全テナントが対象になります。

ROOT_DIR

LobStoreのファイルパスを指定します。デフォルトは「D:\tmp\fileLobStore」です。

MIGRATE_TARGET

移行対象のデータを指定します。

ALL

Binary型及びLongText型のLobデータ

BINARY

Binary型のLobデータ

LONGTEXT

LongText型のLobデータ

4.8. Viewer

service-config viewer

マージされたservice-configを出力します。

バッチファイル
service_config_view.bat(sh)

batファイル内に以下の変数が定義されています。 必要に応じて修正してください。

変数 設定値

MODE

マージのモードを指定します。デフォルトは「PARSE_ONLY」です。

PARSE_ONLY

パースのみ。service-configのパース処理(マージ処理)のみを行います。

PARSE_LOAD

パース及びサービスのロード。service-configのパース処理(マージ処理)とサービスのロード処理を行います。
存在しないサービスが設定されているなどサービスの設定に誤りがある場合はエラーとなります。

OUT_FILE

出力ファイル名を指定します。指定がない場合はコンソール出力となります。

5. メトリクス収集

アプリケーションメトリクスを収集し、モニタリングシステムに連携する機能を提供します。
メトリクス収集および、モニタリングシステムへの連携の実装として、Micrometerを利用したモジュールを標準で提供します。

5.1. サポートするメトリクス

以下に示すメトリクスの収集を標準でサポートしています。
どのメトリクスを収集対象とするかは、設定ファイルで指定可能です。また、カスタムのメトリクスを登録することも可能です。詳細は、 MicrometerService を参照してください。
iPLAssでは、全てのメトリクスに対して、基盤側で host タグを自動付与しており、その値には、デフォルトでサーバのホスト名が入ります。

サーバ側でIPv6が有効になっている場合、ホスト名が正しく解決されない場合があります。
その場合、 mtp.server.myserverid システムプロパティで明示的に指定することが可能です。

標準メトリクス

標準メトリクスの収集には、Micrometerのcoreモジュールを使用しています。iPLAssで利用しているMicrometer(coreモジュール)のバージョンは、 1.6.2 です。
一部表記していないメーターも存在しています。取得可能な全てのメーターの詳細は、Micrometer(coreモジュール)のMeterBinderのJavaDocを参照してください(デフォルトで使用しているMeterBinderの一覧は、MicrometerService を参照してください)。
  • JVMメモリ

    • 領域別のJVMメモリ使用量、割り当て量、上限値

      • メーター名: jvm.memory.{used, committed, max}

      • タグ情報

        • area:ヒープ or 非ヒープ

        • id :領域名

    • バッファプールのメモリ使用量、バッファ数、総容量

      • メーター名: jvm.buffer.{memory.used, count, total.capacity}

      • タグ情報

        • id :バッファプール名

  • ガベージコレクション(GC)

    • GC発生回数、GCによる停止時間の合計、最大値

      • メーター名: jvm.gc.pause

      • タグ情報

        • action:ガベージコレクタが実行したアクション(マイナーGC or メジャーGC)

        • cause :ガベージコレクションの発生原因

  • JVMスレッド

    • ライブスレッド数、デーモンスレッド数、ライブスレッド数のピーク値

      • メーター名: jvm.threads.{live, daemon, peak}

  • クラスローダー

    • ロード/アンロードされたクラス数

      • メーター名: jvm.classes.{loaded, unloaded}

  • CPUメトリクス

    • システム全体のCPU使用率、JVMプロセスのCPU使用率

      • メーター名: {system, process}.cpu.usage

  • ファイル記述子メトリクス

    • 開いているファイル記述子の数、許可されるオープンファイルの最大数

      • メーター名: process.files.{open, max}

  • Logbackメトリクス

    • ログレベル別のイベント回数

      • メーター名: logback.events

      • タグ情報

        • level:ログレベル

  • 稼働時間メトリクス

    • アプリケーションの開始時間、稼働時間

      • メーター名: process.{start.time, uptime}

  • Tomcatメトリクス

    • アクティブなセッションの現在数、最大数

      • メーター名: tomcat.sessions.active.{current, max}

    • セッションの生成数、期限切れによる失効数、上限拒否数

      • メーター名: tomcat.sessions.{created, expired, rejected}

    • 処理中のスレッド数、待機中のスレッド数

      • メーター名: tomcat.threads.{busy, current}

    • アクティブなコネクション数、KeepAlive接続数

      • メーター名: tomcat.connections.{current, keepalive.current}

    • 各サーブレットが受信したリクエスト総数、エラーレスポンス総数

      • メーター名: tomcat.servlet.{request, error}

    • Tomcatコンテナが処理したリクエスト総数、エラーレスポンス総数

      • メーター名: tomcat.global.{request, error}

    • トラフィック合計

      • メーター名: tomcat.global.{sent, received}

  • コネクションプール統計

    • アクティブなコネクションの現在数、最大数

      • メーター名: {commons.dbcp2, tomcat.dbcp2, hikaricp}.connections.{active, max}

    • アイドル状態のコネクションの現在数、最小数

      • メーター名: {commons.dbcp2, tomcat.dbcp2, hikaricp}.connections.{idle, min}

  • HttpClientメトリクス

    • 各Httpリクエストのリクエスト時間と回数

      • メーター名: httpcomponents.httpclient.request

      • タグ情報

        • httpclient:HttpClientを利用するService名

        • method:Httpメソッド

        • status:レスポンスの HTTP ステータスコード

    • Httpコネクションのプールの最大数

      • メーター名: httpcomponents.httpclient.pool.total.max

      • タグ情報

        • httpclient:HttpClientを利用するService名

    • 待機中のコネクション数

      • メーター名: httpcomponents.httpclient.pool.total.pending

      • タグ情報

        • httpclient:HttpClientを利用するService名

    • アイドル状態のコネクション数、実行中のコネクション数

      • メーター名: httpcomponents.httpclient.pool.total.pending

      • タグ情報

        • httpclient:HttpClientを利用するService名

        • state:アイドル状態 or 実行状態

iPLAss独自メトリクス

  • CacheStore統計

    • キャッシュサイズ

      • メーター名: mtp.cache.size

      • タグ情報

        • namespace:対象のCacheStoreのnamespace

    • ヒット回数/ミス回数(デフォルトでは、Queryキャッシュ、ActionContentキャッシュのみ)

      • メーター名: mtp.cache.gets

      • タグ情報

        • namespace:対象のCacheStoreのnamespace

        • result:ヒット or ミス

  • Entity操作メトリクス

    • EntityのCRUD操作のレイテンシ、処理回数(記録する粒度は、Entity × 操作タイプ)

      • メーター名: mtp.entity

      • タグ情報

        • entity:対象のEntity定義名

        • type:Entityの操作タイプ(SEARCH、LOAD、COUNT、INSERT、UPDATEなど)

        • entity_type:対象のEntity定義名 + Entityの操作タイプ

  • Action/WebAPIメトリクス

    • Action/WebAPIのレイテンシ、呼び出し回数

      • メーター名: mtp.{action, webapi}.requests

      • タグ情報

        • method:HTTPメソッド

        • exception:リクエストの処理中にスローされた例外

        • uri:Action/WebAPIのパス。PathResolverを適用し、タグに紐づける値を解決します。

        • [custom_uri](タグ名は設定により可変):カスタムでPathResolverを適用し、タグに紐づける値を解決します。階層の深さが指定できる実装をデフォルトで提供します。

        • uri_method:Action/WebAPIのパス(PathResolverを適用し、タグに紐づける値を解決します) + Httpメソッド

    • Action/WebAPIのSQL発行回数

      • メーター名: mtp.sql.execute

      • タグ情報

        • method:HTTPメソッド

        • exception:リクエストの処理中にスローされた例外

        • uri:Action/WebAPIのパス。PathResolverを適用し、タグに紐づける値を解決します。

        • [custom_uri](タグ名は設定により可変):カスタムでPathResolverを適用し、タグに紐づける値を解決します。階層の深さが指定できる実装をデフォルトで提供します。

        • uri_method:Action/WebAPIのパス(PathResolverを適用し、タグに紐づける値を解決します) + Httpメソッド

        • type:ACTION or WEBAPI

  • 認証系のログ

    • 認証試行に対する成功回数/失敗回数(Credential別)

      • メーター名: mtp.auth.{success, failure}

      • タグ情報

        • credential:認証に利用したCredental

  • 非同期処理系のログ

    • 非同期処理に対する成功回数/失敗回数(Queue別)

      • メーター名: executor.{success, failure}

      • タグ情報

        • queue_name:Queueの名前

    • 非同期処理に対するタイムアウト数(Queue別)

      • メーター名: executor.timeout

      • タグ情報

        • queue_name:Queueの名前

    • 非同期処理に対する実行時間(Queue別)

      • メーター名: executor

      • タグ情報

        • queue_name:Queueの名前

  • AWS S3系のログ

    • AWS S3のリクエスト時間と回数

      • メーター名: s3.request

      • タグ情報

        • bucket_name:S3のバケット名

        • method:HTTPメソッド

        • status:レスポンスのHTTPステータスコード

  • メール系のログ

    • メール送信処理に対する成功回数/失敗回数

      • メーター名: mail.{success, failure}

    • メール送信処理に対する実行時間

      • メーター名: mail.executionTime

  • プッシュ系のログ

    • プッシュ送信処理に対する成功回数/失敗回数

      • メーター名: push.{success, failure}

    • プッシュ送信処理に対する実行時間

      • メーター名: push.executionTime

  • SMS系のログ

    • SMS送信処理に対する成功回数/失敗回数

      • メーター名: sms.{success, failure}

    • SMS送信処理に対する実行時間

      • メーター名: sms.executionTime

5.2. サポートするモニタリングシステム

以下のモニタリングシステムへのメトリクス連携を標準でサポートします。
どのモニタリングシステムを利用するかは、設定ファイルで指定可能です。 詳細は、 MicrometerService を参照してください。

Elasticsearch

Elasticsearchは、オープンソースの検索・分析プラットフォームです。
使用するElasticsearchのホストやメトリクスの送信間隔、メトリクスを格納するインデックスなどをservice-configファイルで指定可能です。

JMX

JMX(Java Management Extensions)は、Java アプリケーションを管理するための仕様です。
メトリクスを格納するJMXドメインや全てのメトリクスに共通して付与する接頭辞などをservice-configファイルで指定可能です。

Prometheus

Prometheusは、定期的にアプリケーションからメトリクスをスクレイピングする、プル型で動作するように設計されたオープンソースのモニタリングシステムです。
iPLAssでは、Prometheusのスクレイプエンドポイントを以下の通り公開します。

http://[server]/[servletContextPath]/prometheus

CloudWatch

Amazon CloudWatchは、Amazon Web Servicesが提供するSaaSのモニタリング/オブザーバビリティサービスです。
メトリクスをCloudWatchに送信する際に使用される名前空間やメトリクスの送信間隔などをservice-configファイルで指定可能です。

New Relic

New Relicは、SaaSのオブザーバビリティサービスです。
New Relicで利用されるサービス名やメトリクスの送信間隔などをservice-configファイルで指定可能です。

Logging

メトリクスをログ出力します。
メトリクスの送信間隔などをservice-configファイルで指定可能です。

5.3. 動作手順

Micrometerモジュールを動作させるには、以下のステップが必要になります。

  1. Micrometerモジュール(org.iplass.ee:iplass-ee-micrometer)を実行時の依存関係に追加する(build.gradle)。

  2. web.xmlにて、WebFragment mtp_micrometer をスキャンする(skeletonプロジェクト利用の場合、コメントアウトを外す)。

  3. mtp-service-config.xmlにて、Micrometerモジュールのデフォルト設定である micrometer-service-config.xml を読み込むように設定する(コメントアウトを外す)。

  4. mtp-service-config.xmlにて、収集したいメトリクスや利用したいモニタリングシステムに併せて、必要な設定を記述する。また、必要な依存関係をbuild.gradleに追加する。
    詳細は、MicrometerService を参照してください。

6. Amazon AppFlowを利用したデータ連携

Amazon AppFlowを利用したiPLAssと外部システム(SaaSやAWSサービス)とのデータ連携機能を提供します。
iPLAssをデータフローの送信元または送信先としてAppFlowに統合するためのカスタムコネクタ実装(AWS Lambdaにデプロイ可能なZipファイル)を標準で提供します。

6.1. カスタムコネクタの設定項目

接続作成時の設定

接続(コネクタ・プロファイル)の作成時に入力する設定項目です。

項目 説明

接続名

任意の接続名を入力してください

個人アクセストークン(トークン認証の場合)

(トークンで認証する場合に入力) Admin権限を有するユーザーの有効な個人アクセストークンを入力してください

ユーザーID(ID・パスワード認証の場合)

(ID・パスワードで認証する場合に入力) Admin権限を有するユーザーのユーザーIDを入力してください

パスワード(ID・パスワード認証の場合))

(ID・パスワードで認証する場合に入力) Admin権限を有するユーザーのパスワードを入力してください

iPLAss URL(テナントコンテキストパスまで含むURL)

データ連携対象のiPLAssが稼働するURLを入力してください

(送信元のみ)Select型の連携フォーマット(デフォルト : DISPLAY_NAME)

(送信元の場合に入力) Select型データの連携フォーマット(VALUE or DISPLAY_NAME or STRUCT)を選択してください。未指定の場合のデフォルトは DISPLAY_NAME です。

VALUE

Select型データの「値」を文字列として連携します

DISPLAY_NAME

Select型データの「表示名」を文字列として連携します

STRUCT

Select型データの「値」と「表示名」を構造体として連携します

(送信元のみ)Reference型の連携フォーマット(デフォルト : OID)

(送信元の場合に入力) Reference型データの連携フォーマット(OID or OID_VERSION)を選択してください。未指定の場合のデフォルトは OID です。

OID

Reference型データの「oid」を文字列として連携します

OID_VERSION

Reference型データの「oid」と「version」を構造体として連携します

(送信元のみ)Binary型の連携フォーマット(デフォルト : LOBID)

(送信元の場合に入力) Binary型データの連携フォーマット(LOBID or HTTP_URI or S3_URI)を選択してください。未指定の場合のデフォルトは LOBID です。

LOBID

Binary型データの「LobID」をLong値として連携します。

HTTP_URI

Binary型データのバイナリ格納先のHTTP URIを文字列として連携します。バイナリ格納先のHTTP URIとは、バイナリ操作 API で当該バイナリを取得可能なURIです。

S3_URI

Binary型データのバイナリ格納先のS3 URIを文字列として連携します。S3_URI を選択した場合には、iPLAss上で管理されるバイナリを取得し、Amazon S3に格納する処理が実行されます(その格納先のS3 URIが連携されます)。バイナリの格納先となるS3バケットおよびパスはフロー作成時の設定により決定されます。

フロー作成時の設定

共通

フロー作成時に入力する共通の設定項目です。

項目 説明

DateTime型の変換に使用するタイムゾーン(デフォルト : JST)

DateTime型データのUNIX時間を変換する際のタイムゾーンを指定してください。未指定の場合のデフォルトは「JST」です。

ドメイン単位のHTTPコネクションの最大数(デフォルト : 5)

ドメイン単位のHTTPコネクションの最大数を指定してください。未指定の場合のデフォルトは「5」です。

HTTPコネクションのプールの最大数(デフォルト : 10)

HTTPコネクションのプールの最大数を指定してください。未指定の場合のデフォルトは「10」です。

S3バイナリ転送時の最小パートサイズ(デフォルト : 8)

S3へのバイナリ転送時の最小パートサイズ(MB)を指定してください。未指定の場合のデフォルトは「8」です。

S3接続の最大数

転送中に確立されるS3接続の最大数を指定してください。未指定の場合、転送リクエストの目標スループットによって最大数が決定されます。

S3転送リクエストの目標スループット(デフォルト : 10)

S3転送リクエストの目標スループット(Gbps)を指定してください。未指定の場合のデフォルトは「10」です。

送信元のみ

iPLAssが送信元の場合にのみ、フロー作成時に入力する設定項目です。

項目 説明

ソート条件(デフォルト : createDate DESC)

データを取得する際にOrderBy句に指定するソート条件を指定してください。未指定の場合のデフォルトは「createDate DESC」です。

Binary型データを保存するS3バケット

Binary型データを保存するS3バケット名を指定してください。Binary型のデータ連携フォーマットとして S3_URI を選択した場合は入力必須です。

Binary型データS3保存時のバケットプレフィックス

Binary型データをS3に保存する際のバケットプレフィックスを指定してください

Binary型データS3保存時にLobIDをプレフィックスとして使用するか(デフォルト : 使用する)

Binary型データをS3に保存する際にLobIDをバケットプレフィックスとして使用するかを指定してください。デフォルトは「True」です。

送信先のみ

iPLAssが送信先の場合にのみ、フロー作成時に入力する設定項目です。

項目 説明

Entity CRUD APIの更新処理時の制御オプション

Entity CRUD APIの更新処理時の制御オプションをクエリパラメータ形式で指定してください(例 : regenerateOid=false)。

書き込み操作パターン(デフォルト : PER_RECORD)

書き込み操作パターン(PER_RECORD or CSV_UPLOAD)を指定してください。未指定の場合のデフォルトは「PER_RECORD」です。

PER_RECORD

Entity CRUD APIを利用して、1レコード単位で書き込み処理を行います

CSV_UPLOAD

一定レコード数毎にCSV形式のバイナリに変換し、Entity CRUD APIを利用して、CSVによる一括更新を行います。AppFlowのフロー設定の「送信先レコードの設定」においてデータの挿入方法に「新しいレコードの挿入」を選択した場合には、送信元から送信先フィールドへのマッピングでoidのマッピングが必須になります。

(PER_RECORDのみ)書き込み処理を非同期で実行するか(デフォルト : false)

書き込み処理を非同期で実行するかを指定してください。未指定の場合のデフォルトは「False」です。

(PER_RECORDのみ)書き込み処理を非同期で実行する場合の処理スレッド数(デフォルト : 10)

書き込み処理を非同期で実行する場合の処理スレッド数を指定してください。未指定の場合のデフォルトは「10」です。

(CSV_UPLOADのみ)書き込み処理のバッチサイズ(デフォルト : 100、最大 : 100)

一括で書き込み処理を行う際のバッチサイズ(コミット単位)を指定してください。最大は「100」です。未指定の場合のデフォルトは「100」です。

6.2. 特殊型プロパティのデータ連携における留意点

送信元

iPLAssをAppFlowデータフローの送信元として利用する場合、特殊型プロパティのデータ連携において以下の留意点があります。

  • Select型、Binary型、Reference型プロパティのデータ連携フォーマットは、接続作成時の設定によって決定されます。

  • iPLAssから連携されたDateTime型データのUNIX時間を変換する際のタイムゾーンは、フロー作成時の設定によって決定されます。

送信先

iPLAssをAppFlowデータフローの送信先として利用する場合、特殊型プロパティのデータ連携において以下の留意点があります。

  • 連携された日付データをUNIX時間に変換する際のタイムゾーンは、フロー作成時の設定によって決定されます。

  • Select型プロパティのデータ連携フォーマットは、選択値の値のみの文字列、もしくは選択値の値(value)とラベル(displayName)をキーにもった構造体に対応しています。

  • Reference型プロパティのデータ連携フォーマットは、参照データのoidのみの文字列、もしくは参照データのoidとversionをキーにもった構造体に対応しています。

  • Binary型プロパティのデータ連携フォーマットは、LobID、HTTP URI形式(https://)、S3 URI形式(s3://)に対応しています。HTTP URI形式とS3 URI形式の場合は、URIで指定されたリソースを取得し、バイナリ操作 API で当該バイナリをiPLAss上にアップロードし、返却されたLobIDを書き込みレコードに紐づけます。

6.3. 動作手順

iPLAssをデータフローの送信元または送信先としてAppFlowに統合し、データフローを実行するための手順を以下に示します。

  1. メタデータ CRUD APIの有効化
    iPLAssからEntity定義の設定情報を取得するためにメタデータ CRUD APIを利用します。
    メタデータ CRUD APIを利用するには、WebApiServiceの enableDefinitionApi 設定を有効化する必要があります。詳細は、 WebApiServiceを参照してください。

  2. (必要に応じて) バイナリ操作 APIの有効化
    iPLAssをデータフローの送信先に設定している場合、Binary型プロパティのデータ連携フォーマットは、LobID、HTTP URI形式(https://)、S3 URI形式(s3://)に対応しています。HTTP URI形式とS3 URI形式の場合は、URIで指定されたリソースを取得し、バイナリ操作 API で当該バイナリをiPLAss上にアップロードし、返却されたLobIDを書き込みレコードに紐づけます。
    HTTP URI形式とS3 URI形式でのデータ連携が想定され、バイナリ操作 APIを利用する場合には、WebApiServiceの enableBinaryApi 設定を有効化する必要があります。詳細は、 WebApiServiceを参照してください。

  3. Entity CRUD APIの権限設定
    iPLAssとのデータ連携には、Entity CRUD APIを利用します。連携対象のEntityに対して権限を付与する必要があります。
    詳しくは、権限設定を参照してください。

  4. AWS Lambdaの関数作成
    Lambda関数の設定における特筆事項を以下に示します。

    • コードソース

      • 有償版のSDKに同梱されているAppFlowカスタムコネクタの実装(ファイル名: iplass-ee-aws-appflow-x.x.x.zip)をアップロードしてください

    • ランタイム設定

      • ランタイム: Java21、アーキテクチャ: x86_64 、ハンドラ: org.iplass.mtp.appflow.handler.MtpLambdaHandler::handleRequest を指定してください

    • アクセス権限 > 実行ロール

      • Lambdaの実行ロールに対して、ID・パスワードなどの認証情報を保持するAWS Secrets Managerへのアクセス権限(secretsmanager:GetSecretValuesecretsmanager:CreateSecret)、必要に応じてバイナリファイルの格納先であるAmazon S3(s3:GetObjects3:PutObject)へのアクセス権限を追加で付与してください

    • アクセス権限 > リソースベースのポリシーステートメント

      • AppFlowからLambda関数を実行するための権限を付与します

      • サービス: Other、ステートメントID: 任意の一意なID、プリンシパル: appflow.amazonaws.com、ソースARN: arn:aws:appflow:ap-northeast-1:<AWSアカウントID>:*、アクション: lambda:InvokeFunction を指定してください

  5. カスタムコネクタの登録 & 接続の作成
    以下の手順でAppFlowに新しいコネクタを登録し、接続(コネクタ・プロファイル)を作成します(AWS マネジメントコンソールを利用する想定)。

    1. AppFlowの「コネクタ」の画面から、「新しいコネクタを登録」ボタンを押下します

    2. 先の手順で作成した Lambda関数を選択し、任意のコネクタラベルを指定して「登録」ボタンを押下します

    3. 「接続を作成」ボタンを押下します

    4. 接続作成時の設定を参考に必要事項を入力し、「接続する」ボタンを押下します

    5. 接続が正常に作成されたことを確認してください

  6. フロー作成
    以下の手順でAppFlowのデータフローを作成します(AWS マネジメントコンソールを利用する想定)。

    1. AppFlowの「フロー」の画面から、「フローを作成」ボタンを押下します

    2. 「手順1 フローの詳細を指定」では、特筆事項はありません。必要事項を入力してください。

    3. 「手順2 フローを設定」では、データフローの送信元と送信先を指定します。以下の設定を行ってください。

      1. 先の手順で作成したカスタムコネクタ(iPLAss)を送信元または送信先に指定してください。その後、以下の設定を行います。

        1. 先の手順で作成した接続(コネクタ・プロファイル)を指定してください

        2. 連携対象のEntity定義を指定してください

        3. フローの設定を参考に必要事項を入力してください

      2. iPLAssと連携する外部システム(SaaSやAWSサービス)を送信元または送信先に指定し、必要事項を入力してください

      3. フロートリガー(オンデマンド実行 or スケジュール実行)を設定してください

    4. 「手順3 データフィールドをマッピング」では、特筆事項はありません。送信先レコードの設定、送信元から送信先フィールドへのマッピングなど必要な設定を行ってください。

    5. 「手順4 フィルターを追加する」では、特筆事項はありません。必要に応じてフィルターを設定してください。

    6. 「手順5 確認して作成」では、特筆事項はありません。設定内容を確認してフローの作成を完了してください。

  7. フロー実行

    • フロートリガーで「オンデマンドで実行」を選択した場合、フローは、「フローの詳細」画面の「フローを実行」ボタンを押下すると実行されます。

    • フロートリガーで「スケジュール通りにフローを実行」を選択した場合、設定した時間にフローが自動で起動します。