2.6.6 特定業務で扱う業務ルールを登録する
ドメインの業務ルールを業務ルール辞書に整備した後,継承関係の下位にあるデータ項目の業務ルールを登録します。特定のデータ項目に関する業務の規則,制度などを業務ルールとして登録します。
特定業務で扱う業務ルールも,ドメインの業務ルールと同様に,次の手順で登録します。
- データの値の妥当性をチェックする業務ルール
- データの値を導き出す業務ルール
- <この項の構成>
- (1) データの値の妥当性をチェックする業務ルールを登録する
- (2) データの値を導き出す業務ルールを登録する
(1) データの値の妥当性をチェックする業務ルールを登録する
(a) 例題の概要
データ項目「氏名NO」は,データ分析の結果,次の制約条件が抽出されました。
- 氏名NOは,事業所コード,入社コード,及び通番の値で構成される
- 通番は必ず数字で入力する
例題では,「氏名NO」に対して,入力された値の妥当性をチェックする業務ルール「氏名NOチェック」を登録します。
![[図データ]](figure/zu025100.gif)
(b) 業務ルールの定義
ここでは,例題業務ルールの定義情報を説明します。なお,リポジトリブラウザの定義手順は,ドメインの業務ルールを登録するときと同様です。「2.6.5 システムで共用する業務ルールを登録する」を参照してください。
- 業務ルール名,コメント
- 業務ルール名に,「氏名NOチェック」
コメントに,「入力された氏名NOのデータを,事業所コード,入社年,通番に分割し,通番が数字で入力されているかをチェックする。」
- 適用するデータ項目と業務ルールの関連
「氏名NO」特有の制約条件を反映するため,データ項目の適用形態は「専用にする」を選びます。
- 組み合わせるデータ項目に,「氏名NO」
キーワードに,「@氏名NO」
適用条件に,「入力」
- ルールスクリプトの記述
![[図データ]](figure/zu025200.gif)
記述のポイントを次に示します。
- データ項目の名称をキーワード「@氏名NO」で記述します。
- 通番だけをチェックするため,業務ルール内部の作業領域を使って氏名NOのデータを分割します。作業領域の記述部分は,@@section文を使用してWORKING-STORAGE SECTIONへの分割展開を指定します。ここでは,あらかじめテンプレート作成者と決めておいたコード名「WORK」を指定しています。
- エラーの記述に使うデータ項目や値は,あらかじめテンプレート作成者と決めておいたエラー処理の仕様に従います。ここでは,エラー状態'5001'を「R-CHECK-STAT」にセットしています。このデータ項目の定義は,テンプレート上に記述されることを前提としています。
(c) 業務ルールの適用例
業務ルール「氏名NOチェック」が,SEWB+/CONSTRUCTIONからアプリケーションに適用される例を示します。
![[図データ]](figure/zu025300.gif)
- テンプレート記述
エラー状態を格納するデータ項目「R-CHECK-STAT」は,ここに記述されます。また,データ分割に使用した作業領域の展開位置は,「@@merge @WORK」で指定されています。@@rule文では,次の指定をしています。
- データ定義IN_FILEに含まれるデータ項目を使用している業務ルールを抽出する。このとき,データ項目の適用条件に「入力」が指定された業務ルールだけを対象にする。
- データ項目の言語別の名前に接頭語「IN-」を付加する。
- プログラム定義
プログラム定義で1.のテンプレートを選択し,IN_FILEに指定されたデータ定義のレコード定義にデータ項目「氏名NO」が含まれている場合,業務ルールの候補として「氏名NOチェック」が表示されます。
- 生成ソースプログラム
@@rule文の位置にルールスクリプトが展開されます。
(2) データの値を導き出す業務ルールを登録する
(a) 例題の概要
例題業務では,従業員個人の識別に「氏名NO」を使用します。このデータを格納するデータ項目「氏名NO」は,データ項目「事業所コード」「入社コード」「通番」で構成されます。「氏名NO」の三つの構成項目それぞれについて,次のような作成規則があります。
- 事業所コード…入力されたデータ項目「事業所名」の値からコード変換する
- 入社コード…入力されたデータ項目「入社年」の値からコード変換する
- 通番…入力されたデータ項目「氏名」の値から入社年別の通番を割り当てる
例題では,それぞれ導出関係にあるデータ項目を組み合わせ,データの値を導き出す業務ルールを登録します。 SEWB+/CONSTRUCTIONから,この三つの業務ルールを適用することで,結合項目「氏名NO」の値を割り当てる処理を実現できます。
![[図データ]](figure/zu025400.gif)
(b) 業務ルールの定義
ここでは,例題業務ルールの定義情報について説明します。リポジトリブラウザの定義手順は,ドメインの業務ルールを登録するときと同様です。「2.6.5 システムで共用する業務ルールを登録する」を参照してください。
- 事業所コード入力編集
- 業務ルール名,コメント
- 業務ルール名に,「事業所コード入力編集」
コメントに,「事業所名を事業所コードに変換する。変換処理は外部サブルーチン「CDHENKN1」を使う。」
- 適用するデータ項目と業務ルールの関連
- 適用形態に,「専用にする」
組み合わせるデータ項目に,「入社年」
キーワードに,「@入社年」
適用条件に,「入力」
- 適用形態に,「専用にする」
組み合わせるデータ項目に,「入社コード」
キーワードに,「@入社コード」
適用条件に,「出力」
- ルールスクリプトの記述
![[図データ]](figure/zu025500.gif)
- 入社コード入力編集
- 業務ルール名,コメント
- 業務ルール名に,「入社コード入力編集」
コメントに,「入社年を入社コードに変換する。変換処理は外部サブルーチン「CDHENKN2」を使う。」
- 適用するデータ項目と業務ルールの関連
- 適用形態に,「専用にする」
組み合わせるデータ項目に,「事業所名」
キーワードに,「@事業所名」
適用条件に,「入力」
- 適用形態に,「専用にする」
組み合わせるデータ項目に,「事業所コード」
キーワードに,「@事業所コード」
適用条件に,「出力」
- ルールスクリプトの記述
![[図データ]](figure/zu025600.gif)
- 通番入力編集
- 業務ルール名,コメント
- 業務ルール名に,「通番入力編集」
コメントに,「氏名を通番に変換する。変換処理は外部サブルーチン「CDHENKN3」を使う。」
- 適用するデータ項目と業務ルールの関連
- 適用形態に,「専用にする」
組み合わせるデータ項目に,「氏名」
キーワードに,「@氏名」
適用条件に,「入力」
- 適用形態に,「専用にする」
組み合わせるデータ項目に,「通番」
キーワードに,「@通番」
適用条件に,「出力」
- ルールスクリプトの記述
![[図データ]](figure/zu025700.gif)
(c) 業務ルールの適用例
業務ルール「事業所コード入力編集」「氏名コード入力編集」及び「通番入力編集」が,SEWB+/CONSTRUCTIONからアプリケーションに適用される例を示します。
![[図データ]](figure/zu025800.gif)
- テンプレート記述
@@rule文では,次の二つの条件を満たす業務ルールを抽出することが指定されています。
- データ定義IN_FILEに含まれるデータ項目を使用している業務ルール。このとき,データ項目の適用条件に「入力」が指定された業務ルールだけを対象にする。
- データ定義OUT_FILEに含まれるデータ項目を使用している業務ルール。このとき,データ項目の適用条件に「出力」が指定された業務ルールだけを対象にする。
- プログラム定義
1.のテンプレートを利用したプログラム定義で,アプリケーションの入力となるデータ定義のレコード定義にデータ項目「事業所名」「入社年」「氏名」が含まれており,また,出力となるデータ定義のレコード定義にデータ項目「事業所コード」「入社コード」「氏名コード」が含まれているとき,業務ルールの候補として三つの業務ルールが表示されます。
- 生成ソースプログラム
@@rule文の位置にルールスクリプトが展開されます。プログラマがこの三つの業務ルールを選んだ場合,例に示したようなソースプログラムが生成されます。