適用条件とは,アプリケーションに業務ルールを適用する条件を指定するものです。辞書の作成者は,「データ項目がどのような条件(処理の入力なのか,出力なのか)にあるときに,この業務ルールをアプリケーションに適用させるのか」という観点で指定します。適用条件を指定するには,「2.6.2(1) 業務ルールの基準を決める」で説明したように,テンプレートに記述される@@rule文の抽出条件の指定と考え方が統一されていることが大切です。
(1) 業務ルールの分類と適用条件の指定
業務ルールの処理は一般に,「データの値の妥当性をチェックする処理」と「データの値を導き出す処理」に大別されると考えられます。ここでは,この分類を例に,適用条件の指定について考えてみましょう。
(a) データの値の妥当性をチェックする処理
単一のデータ項目,又は複数のデータ項目間のデータの値の妥当性をチェックする処理には,次のように適用条件を指定します。
(b) データの値を導き出す処理
編集処理や計算処理といった,あるデータ項目の値から別のデータ項目の値を導き出す処理には,次のように適用条件を指定します。
なお,業務ルールEのデータ項目「@税率」のように,処理をする際に補助的に利用するデータ項目については,適用条件を指定しないで「-」のままにしておきます。
(2) @@rule文で抽出される業務ルール
業務ルールの適用条件の指定を検討するときには,テンプレートの@@rule文の指定によって,目的の業務ルールが適切に抽出されるかどうかについても考慮する必要があります。@@rule文による業務ルールの抽出には,WITH USAGE句を使って抽出条件を基に業務ルールを絞り込む方法と,絞り込みを行わない方法の2通りがあります。@@rule文の抽出条件の指定や,抽出の考え方については,マニュアル「SEWB+/CONSTRUCTION アプリケーション開発ガイド」を参照してください。
(1)の業務ルールA~Eを抽出するときの@@rule文の記述について,例を見ながら考えてみましょう。次に,@@rule文の記述例と,データ定義(ファイル及びレコード定義)にファイルa~ファイルiを仮定したとき抽出される業務ルールを示します。
表2-25 @@rule文の記述例と抽出される業務ルール
@@rule文の記述例 | 抽出される業務ルール | |||||
---|---|---|---|---|---|---|
A | B | C | D | E | ||
1 | @@rule "展開1" WITH USAGE{{USAGE=IN REF=ファイルa}}; | ○ | ○ | × | × | × |
2 | @@rule "展開2" WITH USAGE{{USAGE=IN REF=ファイルb}{USAGE=IN REF=ファイルc}}; | × | ○ | × | × | × |
3 | @@rule "展開3" WITH USAGE{{USAGE=IN REF=ファイルb REF=ファイルc}}; | ○ | ○ | × | × | × |
4 | @@rule "展開4" WITH USAGE{{USAGE=IN REF=ファイルa}{USAGE=OUT REF=ファイルd}}; | × | × | ○ | ○ | × |
5 | @@rule "展開5" WITH USAGE{{USAGE=IN REF=ファイルb}{USAGE=IN REF=ファイルc}{USAGE=OUT REF=ファイルd}}; | × | × | × | ○ | × |
6 | @@rule "展開6" WITH USAGE{{USAGE=IN REF=ファイルb REF=ファイルc}{USAGE=OUT REF=ファイルd}}; | × | × | ○ | ○ | × |
7 | @@rule "展開7" WITH USAGE{{USAGE=IN REF=ファイルe}{USAGE=OUT REF=ファイルg}}; | × | × | × | × | ○ |
8 | @@rule "展開8" WITH USAGE{{USAGE=IN REF=ファイルe}{USAGE=OUT REF=ファイルh}}; | × | × | × | × | ○ |
9 | @@rule "展開9" WITH USAGE{{USAGE=IN REF=ファイルe}{USAGE=OUT REF=ファイルg}REF=ファイルi}}; | × | × | × | × | ○ |
10 | @@rule "展開10" {REF=ファイルb REF=ファイルc REF=ファイルd REF=ファイルe REF=ファイルh}; | ○ | ○ | ○※ | ○ | ○ |
(凡例)○:抽出される ×:抽出されない
注※ 取引先コードがファイルb側に含まれるものとファイルc側に含まれるものの2通り抽出されます。
(a) データの値の妥当性をチェックする業務ルールの抽出
@@rule文に抽出条件を指定して,この業務ルールを抽出するには,記述例1,2,及び3のような記述が考えられます。
記述例2では,ファイルbとファイルcの両方に入力側のデータ項目がある業務ルールが対象になるため,業務ルールBが抽出されます。また,記述例3では,ファイルbとファイルcのどちらかに入力側のデータ項目がある業務ルールが対象になるため,業務ルールAとBの両方が抽出されます。
(b) データの値を導き出す業務ルールの抽出
@@rule文に抽出条件を指定して,この業務ルールを抽出するには,記述例4~9のような記述が考えられます。
@@rule文の記述によって,記述例5のように,使用するデータ項目が三つのレコードに含まれる業務ルールだけを絞り込むこともできます。また,記述例6のように,どちらかの入力レコード含まれる入力側のデータ項目があれば抽出されるように指定することもできます。
業務ルールEでは,データ項目「@税率」に適用条件を指定していませんでした。こうした場合,そのデータ項目が,@@rule文のUSAGE=INで指定したデータ定義,USAGE=OUTで指定したデータ定義,あるいはUSAGE指定をしていないデータ定義のうち,どれかのデータ定義中に含まれれば,その業務ルールが抽出されます。したがって,業務ルールEは,記述例7,8,9のどれからでも抽出されることになります。
(c) 絞り込みをしない抽出
記述例10のように,@@rule文に抽出条件の指定をしない場合には,データ項目が関連するすべての業務ルールが抽出されます。この抽出方法では,業務ルールに指定した適用条件は,関係ありません。記述例10では,データの値の妥当性をチェックする業務ルール(業務ルールA,B)及びデータの値を導き出す業務ルール(業務ルールC~E)のどれもが抽出されます。