2.6.5 システムで共用する業務ルールを登録する
実際に業務ルール辞書を整備するには,まず,ドメイン,つまり,継承関係の上位のデータ項目の業務ルールから登録を始めます。ドメインと業務ルールの関連は,データ項目の体系と同じようにドメインを継承するすべてのデータ項目に引き継がれ,業務ルールを共用できます。したがって,ドメインの業務ルールとは,システムで共用することを目的とした汎用性の高い業務ルールといえます。
ドメインの業務ルールは,次の手順で登録します。
- データの値の妥当性をチェックする業務ルール
- データの値を導き出す業務ルール
ここでは,例題に沿ってドメインの業務ルールの登録を説明します。
- <この項の構成>
- (1) データの妥当性をチェックする業務ルールを登録する
- (2) データの値を導き出す業務ルールを登録する
(1) データの妥当性をチェックする業務ルールを登録する
(a) 例題の概要
データ分析の結果,ドメインのデータ項目「コード」には,'0000','9999'以外の数字で入力されなければならない,という制約条件が抽出されました。この制約条件は,ドメインを継承するデータ項目に共通です。例題では,入力された値の妥当性をチェックする業務ルール「コードチェック」を登録します。
![[図データ]](figure/zu024500.gif)
(b) 業務ルールの定義
リポジトリブラウザを使った定義について説明します。業務ルールを新しく登録するには,業務ルールのアイコンを選び,[リポジトリ]メニューから[新規作成]-[業務ルール]を選んでください。業務ルールの情報を定義するダイアログが表示されます。
- 業務ルール名,コメントを定義する
[属性]タブの情報を定義します。業務ルール名とコメントは,SEWB+/CONSTRUCTIONでプログラマが目的の業務ルールを選択するときの大切な情報となります。理解しやすい業務ルール名,処理内容や展開条件を適切に把握できるようなコメントを定義しましょう。
- 業務ルール名に,「コードチェック」
コメントに,「入力されたコードの値が,'0000'以上'9999'未満及び数字かどうかをチェックする。」
- 適用するデータ項目と業務ルールの関連を定義する
[データ項目]タブの情報を定義します。「コード」特有の制約条件を反映するため,データ項目の適用形態は「専用にする」を選びます。
- 組み合わせるデータ項目に,「コード」
キーワードに,「@コード」
適用条件に,「入力」
- ルールスクリプトを記述する
[ルールスクリプト]タブの情報を定義します。
![[図データ]](figure/zu024600.gif)
記述のポイントを次に示します。
- データ項目の名称をキーワード「@コード」で記述します。
- エラーの記述に使うデータ項目や値は,あらかじめテンプレート作成者と決めておいたエラー処理の仕様に従います。ここでは,エラー状態'1001'を「R-CHECK-STAT」にセットしています。このデータ項目の定義は,テンプレート上に記述されることを前提としています。
(c) 業務ルールの適用例
業務ルール「コードチェック」が,SEWB+/CONSTRUCTIONからアプリケーションに適用される例を示します。
![[図データ]](figure/zu024700.gif)
- テンプレート記述
エラー状態を格納するデータ項目「R-CHECK-STAT」は,ここに記述されます。@@rule文では,次の指定をしています。
- データ定義IN_FILEに含まれるデータ項目を使用している業務ルールを抽出する。このとき,データ項目の適用条件に「入力」が指定された業務ルールだけを対象にする。
- データ項目の言語別の名前に接頭語「IN-」を付加する。
- プログラム定義
プログラム定義で1.のテンプレートを選択し,IN_FILEに指定されたデータ定義のレコード定義に,データ項目「コード」「取引先コード」「仕入先コード」「業種コード」又は「営業所コード」のどれかが含まれている場合,業務ルールの候補として「コードチェック」が表示されます。
- 生成ソースプログラム
@@rule文の位置にルールスクリプトが展開されます。この例は,アプリケーションで使用するデータ項目が「業種コード」の場合です。
(2) データの値を導き出す業務ルールを登録する
(a) 例題の概要
例題業務では,年月日データをクライアント画面に表示したりレポートに印刷したりする際には,西暦年を和暦年に変換し,さらに出力用の形式に編集します(例:19970301→平成 9年 3月 1日)。西暦年月日の形式をもつデータ項目は,ドメインのデータ項目「西暦年月日」にまとめられています。また,和暦年月日の形式をもつデータ項目は,ドメインのデータ項目「和暦年月日」にまとめられています。例題では,この二つのドメインを組み合わせて,データの値を導き出す業務ルール「西暦/和暦編集」を登録します。
![[図データ]](figure/zu024800.gif)
(b) 業務ルールの定義
リポジトリブラウザを使った定義について説明します。業務ルールを新しく登録するには,業務ルールのアイコンを選び,[リポジトリ]メニューから[新規作成]-[業務ルール]を選んでください。業務ルールの情報を定義するダイアログが表示されます。
- 業務ルール名,コメントを定義する
[属性]タブの情報を定義します。理解しやすい業務ルール名を付け,ドメインの導出関係,処理内容や展開条件が適切に把握できるようなコメントを定義しましょう。
- 業務ルール名に,「西暦/和暦編集」
コメントに,「西暦年を和暦年に変換し,「年号YY年MM月DD日」の形式に編集する。和暦年,月,日が1けたの場合,左側は空白にする。編集処理は外部サブルーチン「UXDATE」を使う」
- 適用するデータ項目と業務ルールの関連を定義する
[データ項目]タブの情報を定義します。「西暦年月日」及び「和暦年月日」の組み合わせに特有の処理のため,データ項目の適用形態は「専用にする」を選びます。
- 組み合わせるデータ項目に,「西暦年月日」
キーワードに,「@西暦年月日」
適用条件に,「入力」
- 組み合わせるデータ項目に,「和暦年月日」
キーワードに,「@和暦年月日」
適用条件に,「出力」
- ルールスクリプトを記述する
[ルールスクリプト]タブの情報を定義します。
![[図データ]](figure/zu024900.gif)
記述のポイントを次に示します。
- 入力するデータ項目をキーワード「@西暦年月日」で,編集結果を出力するデータ項目をキーワード「@和暦年月日」で記述します。
- 外部サブルーチンとのインタフェース領域は,@@section文でWORKING-STORAGE SECTIONへの分割展開を指定します。@@section文に指定するコード名は,あらかじめテンプレート作成者と決めておいたコード名を使います。ここでは,「WORK」を指定しました。このコード名に対応する@@merge文が,テンプレート上に記述されることを前提としています。
(c) 業務ルールの適用例
業務ルール「西暦/和暦編集」が,SEWB+/CONSTRUCTIONからアプリケーションに適用される例を示します。
![[図データ]](figure/zu025000.gif)
- テンプレート記述
ルールスクリプトの作業領域(インタフェース領域)の展開位置は,「@@merge @WORK」で指定されています。@@rule文では,次の二つの条件を満たす業務ルールを抽出することが指定されています。
- データ定義IN_FILEに含まれるデータ項目を使用している業務ルール。このとき,データ項目の適用条件に「入力」が指定された業務ルールだけを対象にする。
- データ定義OUT_FILEに含まれるデータ項目を使用している業務ルール。このとき,データ項目の適用条件に「出力」が指定された業務ルールだけを対象にする。
- プログラム定義
プログラム定義で1.のテンプレートを選択し,@@rule文の指定に一致するデータ項目をアプリケーションに使用している場合,業務ルールの候補として「西暦/和暦編集」が表示されます。ドメインの下位のデータ項目を使用している場合も抽出されます。
- 生成ソースプログラム
テンプレートで指定された位置にルールスクリプトが展開されます。この例は,アプリケーションで使用するデータ項目が「入社西暦年月日」と「入社和暦年月日」の場合です。