uCosminexus 電子フォームワークフロー 解説

[目次][用語][索引][前へ][次へ]

8.1.2 サーバ側のユーザ追加処理で行うカスタマイズ(EUR Form連携帳票の場合)

サーバ側のユーザ追加処理で,帳票ボタン処理などをカスタマイズするには,帳票クラスを継承して,BLCEURFormBaseクラスのメソッドをオーバーライドします。オーバーライドするBLCEURFormBaseクラスのメソッドを次に示します。

BLCEURFormBaseクラスについては,マニュアル「uCosminexus 電子フォームワークフロー APIリファレンス」の「BLCEURFormBaseクラス」を参照してください。

表8-2 オーバーライドするBLCEURFormBaseクラスのメソッド

カスタマイズの種類 BLCEURFormBaseクラスのメソッド名 備考
帳票開始処理の追加 ufsv_addEURFormStartUp 帳票開始処理は,DBから帳票データを読み出す前に呼び出され,帳票の新規表示時(申請帳票)だけ呼ばれます。
帳票前処理の追加 ufsv_addEURFormPreparation 帳票前処理は,DBからの案件情報や帳票データの読み出し後,EUR Form帳票を表示する直前で呼ばれます。新規表示(申請帳票)と再表示(承認帳票)の両方で呼ばれます。
追加処理の例
EUR Form帳票のある特定の帳票コントロールの値の変更
ボタンDB更新前処理の追加 ufsv_addEURButtonPreparation 申請ボタンや承認ボタンなどのボタンをクリックしたあと,BLCの申請/承認処理の延長(BLCのDB処理の前)で呼ばれます。
追加処理の例
申請する案件の申請IDの設定
案件宛先ユーザの設定
ボタンDB更新処理の追加 ufsv_addEURButtonExecution ボタンDB更新前処理のあと,BLCのDBトランザクション中に呼ばれます。
追加処理の例
業務DBへのアクセス処理
ボタンDB更新後処理の追加 ufsv_addEURButtonPostHandling ボタンDB更新処理のあと,BLCのDBトランザクション,CSCIWのトランザクションの終了後に呼ばれます。
追加処理の例
メール送信処理
<この項の構成>
(1) サーバ側のユーザ追加処理の呼び出し順序
(2) ユーザ追加処理のカスタマイズの例(帳票前処理でのDBアクセス)
(3) ユーザ追加処理のカスタマイズの例(ボタンDB更新処理でのDBアクセス)

(1) サーバ側のユーザ追加処理の呼び出し順序

サーバ側のユーザ追加処理を行う際,BLCEURFormBaseクラスのメソッドを呼び出す順序を説明します。

(a) 帳票の開始時

帳票の開始時には,次の順序でBLCEURFormBaseクラスのメソッドを呼び出します。

  1. ufsv_addEURFormStartUp
  2. ufsv_addEURFormPreparation
注意事項
運用不可が設定されている場合,申請帳票の表示処理を開始すると,「1.ufsv_addEURFormStartUp」の処理と「2.ufsv_addEURFormPreparation」の間で帳票の表示処理を停止し,エラーを表示します。
運用不可を設定した場合でも,申請帳票の表示時に「1.ufsv_addEURFormStartUp」が呼び出されるため,DB更新処理などは「1.ufsv_addEURFormStartUp」ではなく,「2.ufsv_addEURFormPreparation」に追加することを推奨します。
BLC帳票の場合と運用不可を判定するタイミングが異なります。
(b) 申請,承認または保留時

申請,承認または保留時には,次の順序でBLCEURFormBaseクラスのメソッドを呼び出します。

  1. ufsv_addEURButtonPreparation
  2. ufsv_addEURButtonExecution
  3. ufsv_addEURButtonPostHandling
注意事項
運用不可が設定されている場合,申請処理を開始すると,「1.ufsv_addEURButtonPreparation」の処理の前で申請処理を停止し,エラーを表示します。
(c) 案件履歴の表示時

案件履歴の表示時には,次の順序でBLCEURFormBaseクラスのメソッドを呼び出します。

  1. ufsv_addEURFormStartUp
(d) 内容確認の表示時

内容確認の表示時には,「(a) 帳票の開始時」と同じ順序でBLCEURFormBaseクラスのメソッドを呼び出します。

(2) ユーザ追加処理のカスタマイズの例(帳票前処理でのDBアクセス)

帳票前処理のカスタマイズの例として,ユーザの業務データベースからデータを取得して,帳票の入力欄に反映する処理を次に示します。

(a) 処理内容

この処理は,申請帳票の場合だけ実行します。

  1. ユーザの業務データベースのUSERTABLEテーブルから,ログインユーザのID,およびCDUSERカラムの値が一致するレコードを検索します。
  2. 該当するレコードのUSERDATAカラムの値を取得し,EUR Form帳票の項目(帳票コントロールID:Content)に設定します。
(b) 想定しているテーブル
 
CREATE TABLE USERTABLE (
  CDUSER varchar(128) NOT NULL PRIMARY KEY,
  USERDATA varchar(128));
 
(c) 帳票前処理のカスタマイズの実装例

ユーザ定義クラス(.java)ファイル

ユーザ定義クラス(.java)ファイルの先頭部分の実装例を次に示します。

図8-1 ユーザ定義クラス(.java)ファイルの先頭部分の実装例

[図データ]

説明

  1. javaファイルの先頭部分では,DBアクセスに必要なパッケージのインポート宣言を記述します。

帳票前処理(ufsv_addEURFormPreparationメソッド)

帳票前処理(ufsv_addEURFormPreparationメソッド)の実装例を次に示します。

図8-2 帳票前処理(ufsv_addEURFormPreparationメソッド)の実装例

[図データ]

[図データ]

説明

  1. DBへのコネクションの取得
    DBのコネクションを取得します。帳票前処理では,BLCのコネクションを利用することはできないため,コネクションプールから取得します。BLCの論理DB名称は,BLCProperty.getProperty("BLCMASTER.name")で取得できます。
  2. SQL文の作成
    実行するSQL文を作成します。この例では,USERTABLEテーブルに対して,ログインユーザのIDを検索条件としてUSERDATAカラムの値を取得するselect文を作成しています。
  3. SQLの実行
    SQLを実行し,レコードセットにデータを取得します。
  4. 帳票のデータの設定
    DBから取得したデータをEFormDocumentクラスのmodifyInstanceDataItemメソッドを利用して設定します。
  5. クローズ処理
    Statementコネクションをクローズします。
  6. 例外処理
    DBアクセス処理で例外が発生した場合の処理を記述します。この例では,SQL例外とそれ以外の例外を捕捉し,BLC例外をスローしています。
  7. 解放漏れチェック
    例外が発生した場合にリソースの解放漏れを起こさないようにするため,finally節で解放漏れをチェックし,リソース解放処理をします。
開発時の注意事項
リソースの解放漏れが発生した場合,コネクションのプール不足や,DBのコネクション不足などの原因となります。また,業務アプリケーションだけでなくほかのアプリケーションにも影響する場合があります。このため,DBアクセス処理を実装する場合は,リソース解放漏れを作り込まないように注意してください。

(3) ユーザ追加処理のカスタマイズの例(ボタンDB更新処理でのDBアクセス)

ボタンDB更新処理のカスタマイズの例として,ユーザの業務データベースにデータを書き込む処理を次に示します。

(a) 処理内容

この処理は,申請ボタンをクリックしたときだけ実行します。

また,コネクションにBLCのコネクションを利用することで,BLCのDB処理と同一のトランザクションで処理できます。

  1. ユーザの業務データベースのAPPLYRECORDテーブルに,ログインユーザのID,送信先ユーザID,および処理時刻のレコードを挿入します。
(b) 想定しているテーブル
 
CREATE TABLE APPLYRECORD (
  CDUSER varchar(128) NOT NULL,
  SENDTODATA varchar(128),
  APPLYDATE varchar(14) NOT NULL,
  PRIMARY KEY (CDUSER, APPLYDATE)
);
(c) ボタンDB更新処理のカスタマイズの実装例

ユーザ定義クラス(.java)ファイル

(2)(c) 帳票前処理のカスタマイズの実装例」と同様に,インポート文を記述してください。

ボタンDB更新処理(ufsv_addEURButtonExecutionメソッド)

ボタンDB更新処理(ufsv_addEURButtonExecutionメソッド)の実装例を次に示します。

図8-3 ボタンDB更新処理(ufsv_addEURButtonExecutionメソッド)の実装例

[図データ]

[図データ]

説明

  1. DBへのコネクションの取得
    DBのコネクションを取得します。ボタンDB更新処理では,BLCのコネクションを利用できます。BLCのコネクションを利用することで,BLCのDB処理(受信ボックスや送信ログへのDBアクセス処理)と同一のトランザクションで処理できます。
  2. SQL文の作成
    実行するSQL文を作成します。この例では,APPLYRECORDテーブルに対して,レコードをインサートするselect文を作成しています。
  3. SQLの実行
    SQLを実行し,レコードセットにデータを取得します。
    トランザクションの決着(コミットやロールバック)はBLCが実行するため,ユーザプログラムでは実行しません。ユーザプログラムでコミットやロールバック,コネクションのクローズなどを実行した場合,BLCのデータベースに不整合が起こる原因となりますので注意してください。
  4. 例外処理
    DBアクセス処理で例外が発生した場合の処理を記述します。この例では,DBアクセス処理で発生したSQL例外とそれ以外の例外を捕捉し,BLC例外をスローしています。ボタンDB更新処理メソッドでBLC例外をスローすることで,BLCが例外処理を実行します。
  5. 解放漏れチェック
    例外が発生した場合にリソースの解放漏れを起こさないようにするため,finally節で解放漏れをチェックし,リソース解放処理をします。