2.4.3 一括承認用受信ボックス(業務別件数)画面のカスタマイズ
一括承認受信ボックス(業務別件数)画面で,承認作業にある案件だけが件数としてカウントされるようにカスタマイズします。
カスタマイズ後の一括承認受信ボックス(業務別件数)画面は,次のようになります。
図2-12 カスタマイズ後の一括承認受信ボックス(業務別件数)画面
![[図データ]](figure/zu021100.gif)
BLCLinboxBC.jspでは,「BLC_INBOX_WI_PIGROUP_V」ビューに対し,SQL文を発行しています。「BLC_INBOX_WI_PIGROUP_V」ビューは,拡張受信ボックス機能の仕組みを利用しています。
画面に承認作業の案件だけを表示させるには,SQLに「作業定義名が"承認"である案件を取得する」という条件を追加します。しかし,「BLC_INBOX_WI_PIGROUP_V」ビューには,作業定義名カラム(NMWIDEF)が存在しないため,次のカスタマイズが必要になります。
- 「BLC_INBOX_WI_PIGROUP2_V」ビューの作成(新規に作成)
- BLCLinboxBC.jspのSQLの変更
一括承認用受信ボックス(業務別件数)画面をカスタマイズする手順を次に示します。
- <この項の構成>
- (1) 「BLC_INBOX_WI_PIGROUP2_V」ビューの作成
- (2) BLCLinboxBC.jspのSQLの変更
(1) 「BLC_INBOX_WI_PIGROUP2_V」ビューの作成
「BLC_INBOX_WI_PIGROUP_V」ビューには,作業定義名カラム(NMWIDEF)が存在しないため,作業定義名カラムを追加した「BLC_INBOX_WI_PIGROUP2_V」ビューを作成するよう定義します。
「BLC_INBOX_WI_PIGROUP2_V」ビューの定義例を次に示します。
(データベースがHiRDBの場合)
CREATE READ ONLY VIEW BLC_INBOX_WI_PIGROUP2_V (
CDPARTICIPANT,
NMBP,
CDWI,
NMWIDEF ) AS
SELECT
CSCIW.Participant,
BLC.NMBP,
CSCIW.ID,
CSCIW.WorkDefinitionName
FROM BLC.BLC_WORK_ITEM CSCIW
,BLC_INBOX_T BLC
WHERE CSCIW.StateCode='j' AND BLC.CDPINAME=CSCIW.ProcessInstanceName
; |
太字部分が,作業定義名カラムを追加している部分になります。
(データベースがOracleの場合)
CREATE OR REPLACE VIEW BLC_INBOX_WI_PIGROUP2_V (
CDPARTICIPANT,
NMBP,
CDWI,
NMWIDEF ) AS
SELECT
CSCIW.Participant,
BLC.NMBP,
CSCIW.ID,
CSCIW.WorkDefinitionName
FROM BLC.BLC_WORK_ITEM CSCIW
,BLC_INBOX_T BLC
WHERE CSCIW.StateCode='j' AND BLC.CDPINAME=CSCIW.ProcessInstanceName
WITH READ ONLY
; |
太字部分が,作業定義名カラムを追加している部分になります。
(データベースがSQL Serverの場合)
CREATE VIEW BLC_INBOX_WI_PIGROUP2_V (
CDPARTICIPANT,
NMBP,
CDWI,
NMWIDEF ) AS
SELECT
CSCIW.Participant,
BLC.NMBP,
CSCIW.ID,
CSCIW.WorkDefinitionName
FROM BLC.BLC_WORK_ITEM CSCIW
,BLC_INBOX_T BLC
WHERE CSCIW.StateCode='j' AND BLC.CDPINAME=CSCIW.ProcessInstanceName
; |
太字部分が,作業定義名カラムを追加している部分になります。
(2) BLCLinboxBC.jspのSQLの変更
作業定義名が"承認"である案件を取得するようSQLを変更します。"承認"というテキストは,ストリングリソースプロパティファイルから取得するようにします。
BLCLinboxBC.jspのSQLの変更例を次に示します。BLCLinboxBC.jspは,「<BLC2のインストールディレクトリ>¥tools¥sample¥BatchComplete¥<データベース種別>¥webhome¥app¥main」の下にあります。
final int COMPLETE = 50000;
String sql =
new StringBuffer("SELECT NMBP,COUNT(*) AS WICOUNT FROM BLC_INBOX_WI_PIGROUP2_V WHERE CDPARTICIPANT='")
.append(BLCStringOperation.escapeDBString(blc.getAuthenticateObject().getUserId()))
.append("'")
.append(" AND NMWIDEF = '")
.append(BLCSTRPortal.get(COMPLETE))
.append("'")
.append(" GROUP BY NMBP ORDER BY NMBP WITHOUT LOCK NOWAIT") |
太字部分が,変更部分です。