WorkflowNumberingManagerオブジェクト
コンポーネント情報 | |
---|---|
version | 8.0.8 |
since | 7.2 |
採番処理マネージャ。
採番処理を行い、採番された値を取得するためのAPI提供します。
採番処理を利用することで、連続した番号を取得することができます。
採番処理は、プラグインで指定されているクラスを実行して、採番処理を行います。
採番処理マネージャで提供している採番処理は以下の通りです。
ファイル採番処理の詳細
パブリックストレージからカウンターファイルやタイムアウト設定ファイルを読み込み、読み込んだカウンター値に+1 した値をカウンターファイルに上書きし、返却します。
カウンターファイル、タイムアウト設定ファイルは、テナント毎に保存されます。
新規作成される場合、カウンターファイルは 0、タイムアウト設定ファイルは 3 秒に設定されます。
タイムアウト時間が短い状態で多数ユーザが同時にアクセスした場合、採番処理が失敗する可能性があります。
その場合は、タイムアウト設定ファイルの秒数を増やして下さい。
DB シーケンスオブジェクト採番処理の詳細
DB シーケンスオブジェクト採番処理は、各 DB で提供しているシーケンスオブジェクトを利用します。
シーケンスオブジェクトの仕様は以下の通りです。
また、各 DB 共通として、増分の最大値に到達した場合は、データベースでエラーが発生し、採番処理に失敗します。
各 DB に設定される増分の最大値
※1 採番処理で利用できる最大値は「9223372036854775807(Long.MAX_VALUE)」です。
採番処理マネージャでの採番処理は、デフォルトとしてファイル採番が利用されます。
利用される採番処理を切り替える場合は、プラグインの設定を以下のように変更する必要があります。
カウンターファイルの値を DB に移行する手順は、以下の通りです。
Oracle
DB の値をカウンターファイルに移行する場合は、以下の SQL で採番されている値を取得し、カウンターファイルの現在値を更新します。
採番処理を行い、採番された値を取得するためのAPI提供します。
採番処理を利用することで、連続した番号を取得することができます。
採番処理は、プラグインで指定されているクラスを実行して、採番処理を行います。
拡張ポイント ID | jp.co.intra_mart.workflow.plugin.numbering |
実装インタフェース | IWorkflowNumberingListener |
採番処理マネージャで提供している採番処理は以下の通りです。
- ファイル採番
- DB シーケンスオブジェクト採番
ファイル採番処理の詳細
パブリックストレージからカウンターファイルやタイムアウト設定ファイルを読み込み、読み込んだカウンター値に+1 した値をカウンターファイルに上書きし、返却します。
カウンターファイル、タイムアウト設定ファイルは、テナント毎に保存されます。
- カウンターファイル : [%PUBLIC_STORAGE_PATH%]/im_workflow/data/[%テナントID%]/[%テナント単位の設定値(master-file-dir)%]/numbering/simpleNumberCounter
- タイムアウト設定ファイル : [%PUBLIC_STORAGE_PATH%]/im_workflow/data/[%テナントID%]/[%テナント単位の設定値(master-file-dir)%]/numbering/lockTimeOut
新規作成される場合、カウンターファイルは 0、タイムアウト設定ファイルは 3 秒に設定されます。
タイムアウト時間が短い状態で多数ユーザが同時にアクセスした場合、採番処理が失敗する可能性があります。
その場合は、タイムアウト設定ファイルの秒数を増やして下さい。
DB シーケンスオブジェクト採番処理の詳細
DB シーケンスオブジェクト採番処理は、各 DB で提供しているシーケンスオブジェクトを利用します。
シーケンスオブジェクトの仕様は以下の通りです。
- カウンターは昇順のみ
- 採番される番号の初期値:1
- 増分間隔:1
- 増分の最大値:各データベースで設定可能な最大数
また、各 DB 共通として、増分の最大値に到達した場合は、データベースでエラーが発生し、採番処理に失敗します。
各 DB に設定される増分の最大値
DB | DBシーケンス最大値 |
---|---|
Oracle | 9999999999999999999999999999 (※1) |
PostgreSQL | 9223372036854775807 |
SQL Server | 9223372036854775807 |
DB2 | 2147483647 |
採番処理マネージャでの採番処理は、デフォルトとしてファイル採番が利用されます。
利用される採番処理を切り替える場合は、プラグインの設定を以下のように変更する必要があります。
- ファイル採番プラグイン設定 jp.co.intra_mart.workflow.plugin.numbering.simpleNumberCounter(プラグイン ID) の enable(有効無効フラグ) を false にします。
- DB シーケンスオブジェクト採番プラグイン設定 jp.co.intra_mart.workflow.plugin.numbering.databaseSequence(プラグイン ID) の enable(有効無効フラグ) を true にします。
カウンターファイルの値を DB に移行する手順は、以下の通りです。
Oracle
- ファイル採番のカウンターファイルから採番されている現在値を確認します。
- シーケンスオブジェクトの増分間隔を更新します。
alter sequence imw_seq_matter_number increment by n(カウンターファイルの現在値); - シーケンスオブジェクトの現在値を更新します。
select imw_seq_matter_number.nextval from dual; - シーケンスオブジェクトの増分間隔を元に戻します。
alter sequence imw_seq_matter_number increment by 1;
- ファイル採番のカウンターファイルから採番されている現在値を確認します。
- シーケンスオブジェクトの現在値を更新します。
select setval('imw_seq_matter_number', n(カウンターファイルの現在値));
- ファイル採番のカウンターファイルから採番されている現在値を確認します。
- シーケンスオブジェクトの現在値を更新します。
alter sequence imw_seq_matter_number restart with n(カウンターファイルの現在値);
select next value for imw_seq_matter_number from sys.sequences where type = 'SO' and name = 'imw_seq_matter_number';
- ファイル採番のカウンターファイルから採番されている現在値を確認します。
- シーケンスオブジェクトの現在値を更新します。
alter sequence imw_seq_matter_number restart with n(カウンターファイルの現在値);
values nextval for imw_seq_matter_number;
DB の値をカウンターファイルに移行する場合は、以下の SQL で採番されている値を取得し、カウンターファイルの現在値を更新します。
-- Oracle select last_number from user_sequences where lower(sequence_name) = 'imw_seq_matter_number'; -- PostgreSQL select last_value from imw_seq_matter_number; -- SQL Server 2012 select cast(current_value as integer) from sys.sequences where type = 'SO' and name = 'imw_seq_matter_number'; -- DB2 select nextcachefirstvalue from syscat.sequences where lower(seqname) = 'imw_seq_matter_number';
メソッドの概要
返却値の型 | メソッド名 |
---|---|
WorkflowResultInfo | getNumber () static 採番処理を行います。 |
WorkflowResultInfo | getNumber (String [localeId] ) static非推奨採番処理を行います。
getNumber() を使用してください。
|
WorkflowResultInfo | getNumber (String loginGroupId , String localeId ) static非推奨採番処理を行います。
getNumber() を使用してください。
|
メソッドの詳細
WorkflowResultInfo getNumber ()
static
採番処理を行います。
返却値
|
WorkflowResultInfo getNumber (String [localeId] )
static
非推奨
getNumber() を使用してください。
採番処理を行います。
パラメータ
返却値
|
WorkflowResultInfo getNumber (String loginGroupId , String localeId )
static
非推奨
getNumber() を使用してください。
採番処理を行います。
パラメータ
返却値
|