IM-Workflow

jp.co.intra_mart.foundation.workflow.util
クラス WorkflowNumberingManager

java.lang.Object
  上位を拡張 jp.co.intra_mart.foundation.workflow.util.WorkflowNumberingManager

public class WorkflowNumberingManager
extends Object

採番処理マネージャ。

採番処理を行い、採番された値を取得するためのAPIを提供します。
採番処理を利用することで、連続した番号を取得することができます。
採番処理は、プラグインで指定されているクラスを実行して、採番処理を行います。

拡張ポイント ID jp.co.intra_mart.workflow.plugin.numbering
実装インタフェース IWorkflowNumberingListener

採番処理マネージャで提供している採番処理は以下の通りです。

ファイル採番処理の詳細
Storage Service からカウンタファイルやタイムアウト設定ファイルを読み込み、読み込んだカウンタ値に+1 した値をカウンタファイルに上書きし、返却します。
カウンタファイル、タイムアウト設定ファイルは、ログイングループ毎に保存されます。
また、実行時に上記の各ファイル、または格納ディレクトリが存在しない場合は新規作成します。
新規作成される場合、カウンタファイルは 0、タイムアウト設定ファイルは 3 秒に設定されます。
タイムアウト時間が短い状態で多数ユーザが同時にアクセスした場合、採番処理が失敗する可能性があります。
その場合は、タイムアウト設定ファイルの秒数を増やして下さい。

DB シーケンスオブジェクト採番処理の詳細
DB シーケンスオブジェクト採番処理は、各 DB で提供しているシーケンスオブジェクトを利用します。
シーケンスオブジェクトの仕様は以下の通りです。
ただし、SQL Server に関しては、シーケンスオブジェクトがないため、本機能を使用することができません。
また、各 DB 共通として、増分の最大値に到達した場合は、データベースでエラーが発生し、採番処理に失敗します。

DB に設定される増分の最大値
DB DBシーケンス最大値
Oracle 9999999999999999999999999999 (※1)
PostgreSQL 9223372036854775807
DB2 2147483647
※1 採番処理で利用できる最大値は「9223372036854775807(Long.MAX_VALUE)」です。

採番処理マネージャでの採番処理は、デフォルトとしてファイル採番が利用されます。
利用される採番処理を切り替える場合は、プラグインの設定を以下のように変更する必要があります。
  1. ファイル採番プラグイン設定 jp.co.intra_mart.workflow.plugin.numbering.simpleNumberCounter(プラグイン ID) の enable(有効無効フラグ) を false にします。
  2. DB シーケンスオブジェクト採番プラグイン設定 jp.co.intra_mart.workflow.plugin.numbering.databaseSequence(プラグイン ID) の enable(有効無効フラグ) を true にします。
また、採番処理を切り替えた後、採番されている値を移行する場合は、カウンタファイルまたは、各 DB シーケンスオブジェクトに対して現在値の更新を行います。
カウンタファイルの値を DB に移行する手順は、以下の通りです。
Oracle
  1. ファイル採番のカウンタファイルから採番されている現在値を確認します。
  2. シーケンスオブジェクトの増分間隔を更新します。
    alter sequence imw_seq_matter_number increment by n(カウンタファイルの現在値);
  3. シーケンスオブジェクトの現在値を更新します。
    select imw_seq_matter_number.nextval from dual;
  4. シーケンスオブジェクトの増分間隔を元に戻します。
    alter sequence imw_seq_matter_number increment by 1;
PostgreSQL
  1. ファイル採番のカウンタファイルから採番されている現在値を確認します。
  2. シーケンスオブジェクトの現在値を更新します。
    select setval('imw_seq_matter_number', n(カウンタファイルの現在値));
DB2
  1. ファイル採番のカウンタファイルから採番されている現在値を確認します。
  2. シーケンスオブジェクトの現在値を更新します。
    alter sequence imw_seq_matter_number restart with n(カウンタファイルの現在値);
    values nextval for imw_seq_matter_number;

DB の値をカウンタファイルに移行する場合は、以下の SQL で採番されている値を取得し、カウンタファイルの現在値を更新します。
OracleDB2 の場合、以下のSQLで取得した値から-1 した値が現在値となります。
 -- Oracle
 select last_number from user_sequences where lower(sequence_name) = 'imw_seq_matter_number';
 -- PostgreSQL
 select last_value from imw_seq_matter_number;
 -- DB2
 select nextcachefirstvalue from syscat.sequences where lower(seqname) = 'imw_seq_matter_number';
 

導入されたバージョン:
7.2
関連項目:
IWorkflowNumberingListener

メソッドの概要
static String getNumber(String loginGroupId, String localeId)
          採番処理を行います。
 
クラス java.lang.Object から継承されたメソッド
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

メソッドの詳細

getNumber

public static String getNumber(String loginGroupId,
                               String localeId)
                        throws WorkflowException
採番処理を行います。

パラメータ:
loginGroupId - ログイングループID
localeId - ロケールID
戻り値:
String 採番された値
例外:
WorkflowException - ワークフロー例外の親クラス

IM-Workflow

Copyright © 2000-2015 NTT DATA INTRAMART CO.,LTD.. All Rights Reserved.