SEWB+/CONSTRUCTION アプリケーション開発ガイド

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

7.7.2 業務ルールの展開と抽出条件

プログラム作成者が適切な業務ルールを効率良く確実に探せるように,テンプレート作成者は@@rule文にコメントを書いたり,業務ルールを検索する条件を定義したりします。

また,プログラム上の連続しない個所への定義が必要な場合は,業務ルールを分割して展開させることができます。

<この項の構成>
(1) @@rule文の記述規則

(1) @@rule文の記述規則

ここでは,抽出条件を指定して,抽出される業務ルールを限定する@@rule文の書き方,抽出条件を指定しないで広い範囲から業務ルールを抽出する@@rule文の書き方,およびそれらの両方を合わせた@@rule文の書き方を示します。

形 式1 -抽出条件を指定する書き方
抽出条件を指定する書き方です。業務ルール辞書で定義されている適用条件と合わせて業務ルールの絞り込みをするので,抽出される業務ルールは限定されます。
[図データ]

太字の文字は表記どおりに記述することを表します。{ }の中に,縦に複数の項目がある場合は,その中のどれか一つを選んで記述します。[ ]に囲まれた項目は省略できることを表します。形式中の数字は,「規則」の説明文と対応しています。

形 式2 -抽出条件を省略する書き方
抽出条件を省略する書き方です。抽出される業務ルールの範囲は,形式1の書き方より広くなります。
[図データ]

太字の文字は表記どおりに記述することを表します。{ }の中に,縦に複数の項目がある場合は,その中のどれか一つを選んで記述します。[ ]に囲まれた項目は省略できることを表します。形式中の数字は,「規則」の説明文と対応しています。

形 式3 -限定された抽出と幅広い抽出を同時に行う書き方
形式1のように,抽出条件を利用して業務ルールを抽出する書き方と,形式2のように抽出条件を利用しないで業務ルールを抽出する書き方を混在させて書くことができます。
[図データ]
[図データ]

太字の文字は表記どおりに記述することを表します。{ }の中に,縦に複数の項目がある場合は,その中のどれか一つを選んで記述します。[ ]に囲まれた項目は省略できることを表します。形式中の数字は,「規則」の説明文と対応しています。

規 則
(a)業務ルール展開名
1.@@rule "業務ルール展開名"
業務ルール展開名は,文字定数または可変記号で指定します。ここで指定した名前は,プログラム定義画面の[ユーザ処理]タブに表示されます。
(b)抽出条件
2.WITH USAGE{抽出条件}
  • 抽出条件を指定する場合
    業務ルールを抽出する条件を{ }で囲んで記述します。この括弧は,形式の一部なので必ず書いてください。
  • 抽出条件を省略する場合
    抽出条件を省略する場合,WITH USAGE句は書きません。抽出条件を省略した場合,業務ルールで使用されているデータ項目が, REF句に書いたデータ定義に含まれていることが,抽出の条件になります。
 
[図データ]
業務ルール辞書で定義されている適用条件の中で,どの適用条件の業務ルールを抽出するのかを指定します。
「IN」を指定した場合,適用条件が「入力」である業務ルールが抽出されます。
「OUT」を指定した場合,適用条件が「出力」である業務ルールが抽出されます。
REF句の指定までを{ }で囲んで記述します。この{ }は,形式の一部なので必ず書いてください。
[図データ]
データ定義種別,オブジェクト定義(ATTR=INTERFACE),またはオペレーション定義(ATTR=OPERATION)の可変記号を書きます。
  • PREFIX
    ルールスクリプト中のキーワードがデータ項目に置き換えられる際に付けられる接頭語を,文字定数または可変記号で指定します。
    接頭語はルールスクリプト中のキーワード(@MODIFY)で展開される修飾付きデータ項目にも付けられます。
    REFに繰り返しのある(ARRAY_MAX指定のある)可変記号を指定する場合,PREFIXに指定する可変記号を配列にすると,繰り返しごとの接頭語を指定できます。
  • SUFFIX
    ルールスクリプト中のキーワードがデータ項目に置き換えられる際に付けられる接尾語を,文字定数または可変記号で指定します。
    接尾語はルールスクリプト中のキーワード(@MODIFY)で展開される修飾付きデータ項目にも付けられます。
    REFに繰り返しのある(ARRAY_MAX指定のある)可変記号を指定する場合,SUFFIXに指定する可変記号を配列にすると,繰り返しごとの接尾語を指定できます。
  • TOP
    ルールスクリプト中のキーワード(@MODIFY)で展開される修飾付きデータ項目のうち最も上位となるデータ項目名を別の文字列に変換する場合,その文字列を文字定数または可変記号で最上位項目名に指定します。
    REFに繰り返しのある(ARRAY_MAX指定のある)可変記号を指定する場合,TOPに指定する可変記号を配列にすると,繰り返しごとの最上位項目名を指定できます。
注※
業務ルールのキーワードの詳細は,マニュアル「SEWB+/REPOSITORY 辞書設計ガイド」を参照してください。
可変記号および修飾名に反復がある場合(@@interface文のARRAY_MAXに値が指定されている場合),PREFIX,SUFFIXまたはTOPには,@@set文で作成した反復の可変記号を指定します。
(例)
  • @@interface文の内容
@@interface @FILE01 = {
           ATTR=FILE,
           ARRAY_MAX=3,
           COMMENT="ファイルを指定してください"
      };
  • 反復の可変記号の作成
@@set @AFIX[1] = "I1-";
@@set @AFIX[2] = "I2-";
@@set @AFIX[3] = "I3-";
  • @@rule文での指定
@@rule "業務ルール展開名"{ REF=@FILE01 PREFIX=@AFIX };
  • TYPE句
    REF句にオブジェクト定義またはオペレーション定義を指定した場合に,指定できます。オブジェクト定義またはオペレーション定義から特定の項目を引き当てる場合に指定します。REF句にオブジェクト定義を指定した場合は,属性(ATTRIBUTES)が指定できます。REF句にオペレーション定義を指定した場合は,引数(ARGUMENTS),例外(EXCEPTIONS)または戻り値の型(RETURNTYPE)が指定できます。
    指定しない場合は,REF句に指定したオブジェクト定義またはオペレーション定義のすべての項目が対象となります。
  • IO句
    REF句にオペレーション定義を指定し,TYPE句に引数(ARGUMENTS)を指定した場合に指定できます。オペレーション定義の引数の入出力区分を指定してデータ項目を引き当てる場合に指定します。
    「IN」を指定した場合,入出力区分が「in」である引数が引き当てられます。
    「OUT」を指定した場合,入出力区分が「out」である引数が引き当てられます。
    「IN_OUT」を指定した場合,入出力区分が「inout」である引数が引き当てられます。
    指定しない場合は,すべての引数が対象となります。
(c)抽出補助項目
5.USAGE句の{ }外のREF
(b)の抽出条件での指定内容を補助するために指定します。 USAGE句の{ }内に書かれた抽出条件に合っている業務ルールが抽出される場合,その業務ルールで使用されているデータ項目すべてが,USAGE句の { }内のREF句に書かれたデータ定義のデータ項目であれば,その業務ルールは抽出されます。
しかし,業務ルールで使用されているデータ項目の中に, USAGE句の{ }内のREF句に書かれたデータ定義には含まれていないデータ項目や,入出力の指定が違うものがある場合は,その業務ルールは抽出されません。
このようなとき,抽出補助項目を書いておけば,そのREF句に書かれた可変記号が示すデータ定義中のデータ項目を無条件に使用できるので,業務ルールを抽出できます。なお,{ }外のREF句に書く可変記号は,データ定義種別の可変記号として@@interface文で宣言されていなければなりません。
(例)
テンプレート中に,入れ替え処理の業務ルールを展開させたい場合,テンプレート作成者は次のような文を書きます。
[図データ]
ファイルの内容と業務ルールおよびSEWB+/REPOSITORYの適用条件は次のようになっています。業務ルールのルールスクリプト中では,汎用性を持たせるため先頭に「@」が付けられた文字列(キーワード)が使用されます。
[図データ]
このようなとき,テンプレートの@@rule文のREF句に指定されているデータ定義中のデータ項目を使用している業務ルールとして,業務ルール01および02が引き当てられます。ここまでは,これらの業務ルールは@@rule文の抽出条件に合っています。しかし,それぞれの業務ルールの中には,「X」と「WA」という,ファイル1には指定されていないデータ項目が含まれています。そこで,上の@@rule文の最後に抽出補助項目「REF=@ファイル2」を追加してみます。
[図データ]
このようにすると,業務ルール01中の「X」が抽出補助項目のREF句に指定されたファイル2のデータ項目として指定されるので,業務ルール01で使用されているデータ項目が,すべて@@rule文で指定されたことになります。したがって,この@@rule文では業務ルール01が抽出されます。ファイル2のデータ項目に対して,どのように使用されているかという抽出条件は指定されていないので,データ項目の入出力は意識されません。
(d)抽出条件以外の指定
6.PARENT "親ブロック名"
PARENT句には,親ブロック名を指定します。親ブロック名について次に示します。
  • 親ブロック名は,プログラム定義の[ユーザ処理]タブで業務ルールの一覧をツリー形式で表示させるときに,指定した業務ルール展開名の親になるブロック名を指定する。
  • 親ブロック名は,可変記号で指定することができる。
  • ループ内で@@rule文を繰り返し実行する場合には,業務ルール名の値を変化させて,それぞれの業務ルール展開名を区別する。
  • 親ブロック名を指定すると,ここで指定した業務ルール展開名は,この親ブロックの下に位置づけられる。
  • 親ブロック名を省略すると,ツリーの最上位の階層に位置づけられる。ただし,@@rule文が@@parts文から展開されている場合,@@parts文のブロックの下に位置づけられる。
  • 親ブロック名が存在しなかった場合,ツリーの最上位の階層に位置づけられる。
  • プログラム定義で,業務ルールが選択されていない場合,ソースプログラムへは展開されない。
7.COMMENT "コメント文字列"
プログラム作成者が,適切な業務ルールを選択できるような注釈を書きます。ここに書いた注釈は,プログラム定義画面の[ユーザ処理]タブに表示されます。

使用例
SEWB+/REPOSITORYのデータ項目辞書の内容,プログラムで使用するファイル中のデータ項目の内容およびテンプレートの@@rule文の内容を照らし合わせながら,業務ルールを抽出する仕組みを説明します。
プログラムで使用するファイルの内容
[図データ]
データ項目と業務ルールの関連
[図データ]
業務ルールのルールスクリプト
[図データ]
テンプレート中の@@rule文の内容と抽出される業務ルールの関係
(例1)
  • テンプレートの@@rule文

    [図データ]

  • @@rule文の見方
@@rule "GYOMU1"………このルールの名前。
 WITH USAGE……………{ }の記述を抽出条件であると
                     宣言する。
{{USAGE=IN ……………適用条件が「入力」でデータ項
                     目と関連づけられている業務ル
                     ールを抽出する。
REF=@入力ファイル}};…業務ルール中で使用されてい
                      るデータ項目は,@入力ファイ
                      ルのデータ定義に含まれてい
                      るものである。
  • 例1の@@rule文の抽出状況
    業務ルール 抽出状況 理  由
    S01 @入力ファイルのデータ項目「A」と適用条件「入力」で関連づけられている。また,適用条件が定義されていない「C」は@入力ファイルに格納されている。
    S02 × @入力ファイルのデータ項目「A」と適用条件「入力」で関連づけられているが,「B」と適用条件「出力」で関連づけられている。
    S03 × @入力ファイルのデータ項目「B」と適用条件「出力」で関連づけられている。また,S03では@入力ファイルにないデータ項目「D」が使用されている。
    S04 × @入力ファイルのデータ項目「A」と適用条件「出力」で関連づけられている。また,@入力ファイルにはないデータ項目「E」が使用されている。

    (凡例)
    ○:抽出される。
    ×:抽出されない。

(例2)
  • テンプレートの@@rule文

    [図データ]

  • @@rule文の見方
@@rule "GYOMU2"………このルールの名前。
 WITH USAGE……………{ }の記述を抽出条件であると
                     宣言する。
{{USAGE=IN REF=@入力ファイル}
           ……………適用条件が「入力」でデータ項
                     目と関連づけられている業務ル
                     ールを抽出する。データ項目は,
                     @入力ファイルのデータ定義に
                     含まれているものである。
{USAGE=OUT REF=@入力ファイル}};
           ……………適用条件が「出力」でデータ項
                     目と関連づけられている業務ル
                     ールを抽出する。データ項目は,
                     @入力ファイルのデータ定義に
                     含まれているものである。
  • 例2の@@rule文の抽出状況
    業務ルール 抽出状況 理  由
    S01 × @入力ファイルのデータ項目「A」と適用条件「入力」で関連づけられているが,適用条件「出力」で関連づけられているデータ項目がない。
    S02 @入力ファイルのデータ項目「A」「B」と適用条件「入力」および「出力」で関連づけられている。
    S03 × @入力ファイルのデータ項目「A」「B」と適用条件「入力」および「出力」で関連づけられているが,S03では@入力ファイルにないデータ項目「D」が使用されている。
    S04 × @入力ファイルのデータ項目「A」「B」と適用条件「入力」および「出力」で関連づけられているが,S04では@入力ファイルにないデータ項目「E」が使用されている。

    (凡例)
    ○:抽出される。
    ×:抽出されない。

(例3)
  • テンプレートの@@rule文

    [図データ]

  • @@rule文の見方
@@rule "GYOMU3"……このルールの名前。
 WITH USAGE…………{ }の記述を抽出条件であると宣
                   言する。
{{USAGE=IN REF=@入力ファイル}
           …………適用条件が「入力」でデータ項目
                   と関連づけられている業務ルール
                   を抽出する。データ項目は,@入力
                   ファイルのデータ定義に含まれて
                   いるものである。
{USAGE=OUT REF=@入力ファイル}
           …………適用条件が「出力」でデータ項目
                   と関連づけられている業務ルール
                   を抽出する。データ項目は,@入力
                   ファイルのデータ定義に含まれてい
                   るものである。
REF=@Xファイル};…{ }内のWITH USAGE句の定義を
                   補助する。
  • 例3の@@rule文の抽出状況
    業務ルール 抽出状況 理  由
    S01 × @入力ファイルのデータ項目「A」と適用条件「入力」で関連づけられているが,適用条件「出力」で関連づけられているデータ項目がない。
    S02 @入力ファイルのデータ項目「A」「B」と適用条件「入力」および「出力」で関連づけられている。
    S03 @入力ファイルのデータ項目「A」「B」と適用条件「入力」および「出力」で関連づけられている。S03では@入力ファイルにないデータ項目「D」も使用されているが,抽出補助項目として書かれている@Xファイル中に「D」が格納されている。
    S04 @入力ファイルのデータ項目「A」「B」と適用条件「入力」および「出力」で関連づけられている。S04では@入力ファイルにないデータ項目「E」も使用されているが,抽出補助項目として書かれている@Xファイル中に「E」が格納されている。

    (凡例)
    ○:抽出される。
    ×:抽出されない。

(例4)
  • テンプレートの@@rule文

    [図データ]

  • @@rule文の見方
@@rule "GYOMU4"…………このルールの名前。
{ REF=@入力ファイル};…抽出条件は,業務ルールの中
                       で,@入力ファイルのデータ
                       項目が使用されているかどう
                       かという点だけ。
  • 例4の@@rule文の抽出状況
    業務ルール 抽出状況 理  由
    S01 適用条件を意識しないデータ項目「A」「C」が使用されている。
    S02 適用条件を意識しないデータ項目「A」「B」が使用されている。
    S03 × 適用条件を意識しないデータ項目「A」「B」が使用されているが,S03では@入力ファイルにないデータ項目「D」が使用されている。
    S04 × 適用条件を意識しないデータ項目「A」「B」が使用されているが,S04では@入力ファイルにないデータ項目「E」が使用されている。

    (凡例)
    ○:抽出される。
    ×:抽出されない。

    注※
    「D」および「E」を持つファイルを抽出補助項目として指定すると,すべての業務ルールが抽出されます。