uCosminexus 電子フォームワークフロー 解説
サーバ側のユーザ追加処理で,帳票ボタン処理などをカスタマイズするには,帳票クラスを継承して,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クラスのメソッドを呼び出します。
- ufsv_addEURFormStartUp
- ufsv_addEURFormPreparation
- 注意事項
- 運用不可が設定されている場合,申請帳票の表示処理を開始すると,「1.ufsv_addEURFormStartUp」の処理と「2.ufsv_addEURFormPreparation」の間で帳票の表示処理を停止し,エラーを表示します。
- 運用不可を設定した場合でも,申請帳票の表示時に「1.ufsv_addEURFormStartUp」が呼び出されるため,DB更新処理などは「1.ufsv_addEURFormStartUp」ではなく,「2.ufsv_addEURFormPreparation」に追加することを推奨します。
- BLC帳票の場合と運用不可を判定するタイミングが異なります。
(b) 申請,承認または保留時
申請,承認または保留時には,次の順序でBLCEURFormBaseクラスのメソッドを呼び出します。
- ufsv_addEURButtonPreparation
- ufsv_addEURButtonExecution
- ufsv_addEURButtonPostHandling
- 注意事項
- 運用不可が設定されている場合,申請処理を開始すると,「1.ufsv_addEURButtonPreparation」の処理の前で申請処理を停止し,エラーを表示します。
(c) 案件履歴の表示時
案件履歴の表示時には,次の順序でBLCEURFormBaseクラスのメソッドを呼び出します。
- ufsv_addEURFormStartUp
(d) 内容確認の表示時
内容確認の表示時には,「(a) 帳票の開始時」と同じ順序でBLCEURFormBaseクラスのメソッドを呼び出します。
帳票前処理のカスタマイズの例として,ユーザの業務データベースからデータを取得して,帳票の入力欄に反映する処理を次に示します。
この処理は,申請帳票の場合だけ実行します。
- ユーザの業務データベースのUSERTABLEテーブルから,ログインユーザのID,およびCDUSERカラムの値が一致するレコードを検索します。
- 該当するレコードの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)ファイルの先頭部分の実装例
説明
- javaファイルの先頭部分では,DBアクセスに必要なパッケージのインポート宣言を記述します。
帳票前処理(ufsv_addEURFormPreparationメソッド)
帳票前処理(ufsv_addEURFormPreparationメソッド)の実装例を次に示します。
図8-2 帳票前処理(ufsv_addEURFormPreparationメソッド)の実装例
説明
- DBへのコネクションの取得
DBのコネクションを取得します。帳票前処理では,BLCのコネクションを利用することはできないため,コネクションプールから取得します。BLCの論理DB名称は,BLCProperty.getProperty("BLCMASTER.name")で取得できます。
- SQL文の作成
実行するSQL文を作成します。この例では,USERTABLEテーブルに対して,ログインユーザのIDを検索条件としてUSERDATAカラムの値を取得するselect文を作成しています。
- SQLの実行
SQLを実行し,レコードセットにデータを取得します。
- 帳票のデータの設定
DBから取得したデータをEFormDocumentクラスのmodifyInstanceDataItemメソッドを利用して設定します。
- クローズ処理
Statementコネクションをクローズします。
- 例外処理
DBアクセス処理で例外が発生した場合の処理を記述します。この例では,SQL例外とそれ以外の例外を捕捉し,BLC例外をスローしています。
- 解放漏れチェック
例外が発生した場合にリソースの解放漏れを起こさないようにするため,finally節で解放漏れをチェックし,リソース解放処理をします。
- 開発時の注意事項
- リソースの解放漏れが発生した場合,コネクションのプール不足や,DBのコネクション不足などの原因となります。また,業務アプリケーションだけでなくほかのアプリケーションにも影響する場合があります。このため,DBアクセス処理を実装する場合は,リソース解放漏れを作り込まないように注意してください。
ボタンDB更新処理のカスタマイズの例として,ユーザの業務データベースにデータを書き込む処理を次に示します。
この処理は,申請ボタンをクリックしたときだけ実行します。
また,コネクションにBLCのコネクションを利用することで,BLCのDB処理と同一のトランザクションで処理できます。
- ユーザの業務データベースの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メソッド)の実装例
説明
- DBへのコネクションの取得
DBのコネクションを取得します。ボタンDB更新処理では,BLCのコネクションを利用できます。BLCのコネクションを利用することで,BLCのDB処理(受信ボックスや送信ログへのDBアクセス処理)と同一のトランザクションで処理できます。
- SQL文の作成
実行するSQL文を作成します。この例では,APPLYRECORDテーブルに対して,レコードをインサートするselect文を作成しています。
- SQLの実行
SQLを実行し,レコードセットにデータを取得します。
トランザクションの決着(コミットやロールバック)はBLCが実行するため,ユーザプログラムでは実行しません。ユーザプログラムでコミットやロールバック,コネクションのクローズなどを実行した場合,BLCのデータベースに不整合が起こる原因となりますので注意してください。
- 例外処理
DBアクセス処理で例外が発生した場合の処理を記述します。この例では,DBアクセス処理で発生したSQL例外とそれ以外の例外を捕捉し,BLC例外をスローしています。ボタンDB更新処理メソッドでBLC例外をスローすることで,BLCが例外処理を実行します。
- 解放漏れチェック
例外が発生した場合にリソースの解放漏れを起こさないようにするため,finally節で解放漏れをチェックし,リソース解放処理をします。
All Rights Reserved. Copyright (C) 2010, 2014, Hitachi, Ltd.