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

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

5.1.2 サーバ側のユーザ追加処理で行うカスタマイズ(BLC帳票の場合)

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

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

サーバ側のユーザ追加処理で設定するエラー処理については,「2.4.6 サーバ側のユーザ追加処理で設定するエラー処理の概要」を参照してください。

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

カスタマイズの種類 BLCFormBaseクラスのメソッド 備考
帳票開始処理の追加 ufsv_addFormStartUp 帳票開始処理は,DBから帳票データを読み出す前に呼び出され,帳票の新規表示時だけ呼ばれます。
帳票前処理の追加 ufsv_addFormPreparation 帳票前処理は,DBからの案件情報や帳票データの呼び出し後,帳票のHTML生成処理の直前で呼ばれます。新規表示と再表示の両方で呼ばれます。
帳票タイトル表示処理の変更 ufsv_overrideFormTitle 帳票のタイトルHTMLを置き換えます。
コメント表示処理の変更 ufsv_overrideCommentArea 帳票のコメント記述テキスト領域のHTMLを置き換えます。
宛先選択表示処理の変更 ufsv_overrideGetAvailableParticipant 帳票の宛先選択領域のHTMLを置き換えます。
ボタン表示処理の変更 ufsv_overrideSubmitButtons 帳票の処理ボタンのHTMLを置き換えます。
ボタンDB更新前処理の追加 ufsv_addButtonPreparation 申請ボタンや承認ボタンなどのボタンをクリックしたあと,BLCの申請/承認処理の延長(BLCのDB処理の前)で呼ばれます。
追加処理の例
申請する案件の申請IDの設定
案件宛先ユーザの設定
ボタンDB更新処理の追加 ufsv_addButtonExecution ボタンDB更新前処理のあと,BLCのDBトランザクション中に呼ばれます。
追加処理の例
業務DBへのアクセス処理
ボタンDB更新後処理の追加 ufsv_addButtonPostHandling ボタンDB更新処理のあと,BLCとCSCIWの同一トランザクション処理の終了後に呼ばれます。
ただし,ボタンDB更新前処理,ボタンDB更新処理,またはBLCとCSCIWの同一トランザクション処理のどれかでエラーが発生した場合は呼ばれません。
追加処理の例
メール送信処理
案件履歴表示処理の変更 ufsv_overrideProcessHistory 帳票の承認履歴領域のHTMLを置き換えます。
宛先選択リスト情報取得処理の変更 ufsv_overrideGetDirsData 帳票の宛先選択リストの取得処理を変更します。
<この項の構成>
(1) 宛先選択のカスタマイズ
(2) 処理ボタンのカスタマイズ
(3) タイトル文字のカスタマイズ
(4) サーバ側のユーザ追加処理の呼び出し順序
(5) ユーザ追加処理クラスでアクセスできるBLCValDicクラスキー
(6) データの扱い
(7) 項目の表示属性の変更

(1) 宛先選択のカスタマイズ

(a) 宛先選択表示処理の変更

表5-2の「宛先選択表示処理の変更」メソッドは,帳票の宛先選択部分に表示されるHTML全体を置き換えるカスタマイズです。

BLCFormTargetクラスによる表示動作を変更するために,帳票前処理で,次に示すBLCValDicクラスのキーによって,表示条件を変更できます。

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

(b) 宛先選択リスト情報取得処理の変更

宛先選択の表示方法はそのままで,表示するデータだけをカスタマイズしたい場合は,「宛先選択リスト情報取得処理の変更」メソッドをオーバーライドして実装します。また,宛先選択リストのデータが不要な場合(宛先選択リストを表示しないようBLSGで設定している場合)は,このメソッドを空のメソッドでオーバーライドすることによって,データの取得処理(SQL文発行)を抑止できます。

(2) 処理ボタンのカスタマイズ

BLCFormButtonクラスによる処理ボタンの表示動作を変更するために,帳票前処理で,BLCFormButtonクラスのメソッドによって,ボタンの配置順序,ボタン名,および動作JavaScript関数を変更できます。

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

表5-2の「ボタン表示処理の変更」のメソッドは,帳票の処理ボタン部分に表示されるHTML全体を置き換えるカスタマイズです。

(3) タイトル文字のカスタマイズ

帳票前処理で帳票のタイトル文字を変更する例を次に示します。

図5-1 帳票のタイトル文字のカスタマイズ例

[図データ]

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

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

(a) 帳票開始時

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

  1. ufsv_addFormStartUp
    入力のDBアクセス定義を実行されます。
  2. ufsv_addFormPreparation
  3. ufsv_overrideFormTitle
  4. ufsv_overrideProcessHistory
  5. ufsv_overrideCommentArea
  6. ufsv_overrideGetAvailableParticipant
  7. ufsv_overrideSubmitButtons
    帳票が表示され,ブラウザ側に制御が移ります。
    注意事項
    運用不可が設定されている場合,申請帳票の表示処理を開始すると,「1.ufsv_addFormStartUp」の処理の前で帳票の表示処理を停止し,エラーを表示します。
    EUR Form連携帳票の場合と運用不可を判定するタイミングが異なります。
(b) 申請または承認時

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

  1. ufsv_addButtonPreparation
    出力のDBアクセス定義を実行されます。
  2. ufsv_addButtonExecution
  3. ufsv_addButtonPostHandling
    結果表示JSPに制御が移ります。
    注意事項
    運用不可が設定されている場合,申請処理を開始すると,「1.ufsv_addButtonPreparation」の処理の前で申請処理を停止し,エラーを表示します。
(c) DBアクセス専用帳票の読み込み時

DBアクセス専用帳票の読み込み時には,「(a) 帳票開始時」と同じ順序でBLCFormBaseクラスのメソッドを呼び出します。

(d) DBアクセス専用帳票の更新時

DBアクセス専用帳票の更新時には,「(b) 申請または承認時」と同じ順序でBLCFormBaseクラスのメソッドを呼び出します。

(e) カスタム申請帳票のソース帳票で申請書の表示時

カスタム申請帳票のソース帳票で申請書の表示時には,ターゲット帳票では,「(a) 帳票開始時」と同じ順序でBLCFormBaseクラスのメソッドを呼び出します。

(f) 案件履歴表示時

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

  1. ufsv_addButtonPreparation
  2. ufsv_overrideSubmitButtons
(g) 内容確認表示時

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

(h) 保留時

保留時には,次の順序でBLCFormBaseクラスのメソッドを呼び出します。

  1. ufsv_addButtonPreparation
    出力のDBアクセス定義は実行されません。
  2. ufsv_addButtonExecution
  3. ufsv_addButtonPostHandling
    結果表示JSPに制御が移ります。

(5) ユーザ追加処理クラスでアクセスできるBLCValDicクラスキー

ユーザ追加処理クラスでアクセスできる項目を次に示します。

表5-3 ユーザ追加処理クラスでアクセスできる項目

項目名 変数名 内容 設定の可否
ビジネスプロセス名 BLC_BpName ビジネスプロセス名
作業名 BLC_NodeName
  • "業務ステップ定義名"+"-"(半角ハイフン)+"作業定義名"
  • 申請時は"@Source"
完全作業名 BLC_NodeInstName
  • "業務ステップ名"+"-"(半角ハイフン)+"作業名"
  • 申請時は"@Source"
処理モード BLC_ProcMode
  • 0:帳票一覧から起票します。
    申請帳票画面へのリンク機能によって起票します。
  • 1:受信ボックスから起票します。
  • 3:送信ログから起票します([案件履歴]画面および内容確認画面の場合)。
  • そのほかの値:今後の拡張用に予約済みです。
案件ID BLC_PIID
  • CSCIWの案件ID
  • 申請時は空文字列
申請ID BLC_PIName
  • CSCIWの案件名
  • 申請時だけCSCIWのシステムで重複しないようなユーザ指定値に設定できます。
  • 値を設定する場合は,ボタンDB更新前処理で設定する必要があります。
作業ID BLC_WIID
  • CSCIWの作業ID
  • 申請時は空文字列
帳票ID BLC_FormID 帳票ID
申請作業者ID BLC_ApplyUID 申請をしたユーザID
処理期限 BLC_PILimit
  • 案件の処理期限
  • 案件の処理期限の日時をYYYYMMDDHHMMSSの形式で格納します。
  • 申請時のデフォルトは,サーバ時刻の30日後の23時59分59秒です。
注 CSCIWで設定する処理期限とは異なります。
帳票モジュール表示種別 BLC_show_<帳票モジュールID>
  • True:帳票モジュールを表示します。
  • False:帳票モジュールを表示しません。
案件状態 BLC_PIStatus 申請時は"処理中",帳票ジェネレータ(BLSG)機能の業務完了指示作業で"完了"を設定します。値を設定する場合は,ボタンDB更新前処理で設定する必要があります。
宛先ユーザ BLC_SendToData
  • 値を設定する場合は,ボタンDB更新前処理で設定する必要があります。
  • 値を設定する場合は,BLC_USER_Vビューに存在するユーザのユーザIDを設定する必要があります。
フッターHTML BLC_PageFooterHtml 帳票前処理で指定すると,帳票の最下部にエンコードしないで,値文字列をそのまま出力します。
DBアクセス定義ファイルパス BLC_DBDefFile BLCDBDefクラスを使用する場合のloadメソッドに指定するフルパス情報です。実行中の帳票のDBアクセス定義ファイル名を保持します。
BODY bgcolor指定 BLC_htmlbody_bgcolor 帳票のBODYタグに出力するbgcolorタグオプションの値を指定できます。
BODYオプションタグ指定 BLC_htmlbody_option 帳票のBODYタグに出力するbgcolor,onLoad,およびonUnload以外のタグオプションを指定できます。タグオプションと値全体を文字列で指定します。
ボタン名 BLC_AcceptMode ボタンDB更新前処理で参照できます。
ボタンID BLC_AcceptID ボタンDB更新前処理で参照できます。
帳票モジュールプレフィックスリスト BLC_MdlList
  • 帳票モジュールプレフィックスを保持します。
  • 帳票モジュールプレフィックスがコンマ区切りで格納されています。
    例:m1,m2,m3
履歴項目数 phist_total
  • 承認履歴の数が格納されています。
  • 申請帳票表示時は承認履歴が存在しません。
業務ステップ名 phist_actdef_$n
  • 承認履歴の業務ステップ名が格納されています。
  • 申請の履歴には空文字列が格納されています。
作業名 phist_winm_$n
  • 承認履歴の作業名が格納されています。
  • 申請の履歴には空文字列が格納されています。
作業日付 phist_date_$n 承認履歴の作業日付がYYYYMMDDHHMMSSの形式で格納されています。
実行処理名 phist_exenm_$n 承認履歴の処理名(ボタン名)が格納されています。
実行処理ID phist_exeid_$n 承認履歴の処理ID(ボタンID)が格納されています。
作業者組織略称 phist_parblg_$n 承認履歴の作業者組織略称が格納されています。
作業者名 phist_parnm_$n 承認履歴の作業者氏名が格納されています。
作業者ID phist_parid_$n 承認履歴の作業者IDが格納されています。
案件属性の項目数 BLC_AttrNum 案件属性の項目を利用する数を指定します。
デフォルトは10です。
0〜10の値を指定してください。
0は項目値を利用しない場合に指定します。
1〜10の値を指定した場合は,指定した値の個数の項目値を利用できます。
0〜10以外の値を指定した場合は,正常に動作しません。
値を変更しない場合は,申請/承認などを行った次ノードでも値が引き継がれます。
値を設定する場合は,ボタンDB更新前処理で指定してください。
案件属性の項目値 BLC_AttrData$n 案件属性の項目値を指定します。
デフォルトは""(空文字列)です。$nには,「1〜BLC_AttrNumで指定した値」を指定してください。
$nにBLC_AttrNumで指定した値の範囲以外を指定した場合は,案件属性の項目値として有効になりません。
値を変更しない場合は,申請/承認などを行った次ノードでも値が引き継がれます。
値を設定する場合は,ボタンDB更新前処理で指定してください。
ユーザ追加項目 (例)u_userdata ユーザ追加処理で利用する任意の値を格納/参照できます。
"u"で始まるキー名を使用できます。
(凡例)
−:ユーザ追加クラスで参照だけできます。
○:ユーザ追加クラスで参照および設定ができます。
$n:取得情報番号(1〜履歴項目数)。

帳票の最下部にデバッグ情報を表示する帳票前処理メソッドの例を次に示します。

図5-2 帳票の最下部にデバッグ情報を表示する帳票前処理メソッド

[図データ]

(6) データの扱い

帳票が送信するデータや帳票表示時のデータは,帳票ページの処理開始時にBLCValDicクラスのキーにマップします。帳票前処理やボタンDB更新前処理とBLCの間は,BLCValDicクラスが保持するキーと値の組(データ)をインタフェースに各機能を実現します。

BLCValDicクラスの"u"で始まるキー名は,ユーザ追加処理に使用できます。そのほかのキー名は,BLCで使用するので,注意が必要です。

(a) 概要

BLCで帳票を実行すると,帳票の各項目のデータは,BLCValDicオブジェクトに格納されます。各項目のデータは,帳票内でユニークに付けられた項目のキー名("帳票モジュールプレフィックス"+"項目名")と,項目の値を組として,BLCValDicオブジェクトにマッピングされます。

各項目のデータがBLCValDicオブジェクトに格納されるイメージを,次に示します。

図5-3 BLCValDicオブジェクトへのデータの格納

[図データ]

図の説明
帳票"form1"は,同じ名前の項目"item"を持つ帳票モジュール"module1"および"module2"のそれぞれの項目に,DBアクセスを定義しています。
帳票"form1"から生成した帳票ファイルでは,帳票モジュール"module1"の項目"item"には"m1_item",帳票モジュール"module2"の項目"item"には"m2_item"と,ユニークに名前が付けられます。
BLCで帳票を起動すると,各項目のデータは,項目に付けられた名前("m1_item"または"m2_item")をキー名として,BLCValDicオブジェクト(BLCFormControlクラスのフィールドm_DataValue)に格納されます。以降,帳票実行中は,BLCValDicオブジェクトに格納されたデータにアクセスします。
帳票にDBアクセスが定義されている場合は,BLCValDicオブジェクトに格納されたデータがデータベースに出力され,データベースに格納されていたデータがBLCValDicオブジェクトに格納されます。
ユーザ追加処理などで,項目のデータを使用する場合は,キー名を使用してアクセスします。
BLCValDicオブジェクトの詳細は,マニュアル「uCosminexus 電子フォームワークフロー APIリファレンス」の「BLCFormBaseクラス」,「BLCFormControlクラス」,および「BLCFormValDicクラス」の説明を参照してください。
(b) 項目変数名からキー名への変換規則

BLCでは,BLSGで定義された項目変数名を,次の規則でBLCValDicオブジェクトのキー名に変換します。項目のデータを使用する場合は,キー名を使用してBLCValDicオブジェクトにアクセスします。

図5-3の場合,DBアクセス定義で定義された項目変数"item.module1"からデータベースへの出力は,BLCValDicクラスの"m1_item"キー対応する値をデータベースに出力する処理となります。また,データベースから項目変数"item.module2"への入力は,データベース上のデータを,"m2_item"キーに対応する値としてBLCValDicオブジェクトに格納する処理となります。

(7) 項目の表示属性の変更

BLC帳票では,「申請帳票」と「承認帳票」の2種類の帳票ごとに,各項目の表示属性を帳票ジェネレータ(BLSG)で定義できます。

項目の表示属性の変更機能を使用してユーザ追加処理をJavaで記述することによって,ビジネスプロセスに複数の承認ノードが存在する場合でも,ノードごとに項目変数の表示属性を変更できるようになります。

(a) 提供するメソッド

項目の表示属性変更機能では,次のメソッドをBLCFormControlクラスで提供しています。

setInputItem:項目の表示属性を「入力」に設定します。

setReferItem:項目の表示属性を「参照」に設定します。

setHiddenItem:項目の表示属性を「非表示」に設定します。

これらのメソッドは,次のどちらかのユーザ追加処理メソッドで使用します。

(b) 実装例

項目の表示属性変更機能の実装例を次に示します。

この例では,承認ノード「承認-承認」で項目「m1_item1」を入力属性に変更しています。

 
// パッケージ宣言
package jp.co.Hitachi.soft.blc.[パッケージ名];
 
//インポート文
import java.io.*;
import java.util.*;
import jp.co.Hitachi.soft.blc.*;
 
// ユーザ定義クラス
public class [ユーザ定義クラス名] extends [BLSG自動生成帳票クラス名] {
 
          :
         省略
          :
 
  // 帳票前処理の追加
  public void usfv_addFormPreparation( ) throws BLCException {
    String strProcMode = null;
    String strNodeName = null;
 
    try{
      // 処理モード取得
      strProcMode = blse.m_DataValue.item("BLC_ProcMode");
 
      // 完全作業名取得
      strNodeName = blse.getNodeName();
 
      if(strProcMode.equals("1") && strNodeName.equals("承認-承認")){
        // 処理モードが「1」,かつ作業名が「承認-承認」の場合
        // 項目「m1_item1」を入力に設定
        blse.setInputItem("m1_item1");
      }
    }
    catch( Exception ex){
      BLCException blcEx =
        BLCException.getUserException( ex, 50001, new String [] { "arg1"} );
      throw blcEx;
    }
  }
}
(c) 注意事項
項目の表示属性の設定の優先度
項目の表示属性は,次の方法で設定できます。
  1. 帳票モジュールの[各作業のモード]での設定
    BLSGの帳票定義で,作業ごとにモジュール単位で設定します。
  2. 申請帳票・承認帳票の項目表示制御での設定
    BLSGの帳票モジュール定義で,帳票ごとに項目単位で設定します。
  3. 項目の表示属性変更機能のメソッドでの設定
    (a)に示したメソッドを使用して,項目単位で設定します。
表示属性をこれらの方法でそれぞれ設定した場合,どの設定が優先されるかを次に示します。
  • 1.の方法で「入力」または「参照」を設定している場合は,3.での設定が優先されます。
  • 1.の方法で「非表示」を設定している場合は,1.での設定が優先されます。
DBアクセス処理
帳票の申請時および承認時に多くのメモリが必要になるDBアクセス処理は実行できません。申請/承認処理で一つのトランザクションとなることを考慮して,ユーザ追加処理を実装してください。