リポジトリから外部設計書を出力するツールの使い方を説明します。

アプリケーションのリポジトリ(設計情報)を Excel 形式のファイルで出力する機能です。印刷してお使いいただくことができます。

本ツールが出力するExcelファイルの例を図1〜図4に示します。

図1 モデル名一覧
図2 モデル項目一覧(モデル毎に用意される)
図3 メニュー一覧
図4 画面定義一覧(モデル毎に用意される)

準備

設計書を出力する前に、ビルド処理を行ってください。直前にビルドされた状態の設計書を出力します。

設計書の作成

「運用 > その他 > 設計書」タブを開きます。「設計書出力」ボタンを押下すると、設計書の作成が開始されます。

図5 設計書出力ボタン
図6 設計書作成中

図7に示すように、作成された設計書がダウンロードされます。ファイルは zip 形式で圧縮されています。

図7 設計書が作成された

ダウンロードしたファイルを展開してください。複数の Excel ファイルが含まれています。

図8 複数の Excel ファイル

次のドキュメントが自動生成されます。

  • 表紙
  • 変更履歴
  • システム情報
  • モデル名一覧
  • 各モデル項目毎の定義
  • メニュー一覧
  • 帳票一覧
  • 各モデル毎の画面定義
  • カスタマイズファイル一覧
  • ER図 (後述)
画面キャプチャの自動実行は行いません。生成された「画面定義書」に、スクリーンショットを貼り付けて完成させてください。

ER図

ファイル名 "ER_Diagram.xlsx" には、ER図が含まれます。ファイルの拡張子は ".xlsx" です。例を示します。

図9 ER図 (1)

エンティティ同士の関連は「コネクタ」となっています。そのため、あるエンティティを選択して移動したとき、コネクタも一緒に移動します。

図10 ER図 (2)
図11 ER図 (3)

設計書出力機能では、エンティティは単純な並びですがコネクタは相互に関連づけているため、開発者はエンティティを適切に再配置して、よりみやすいER図を作成することができます。

コネクタの色

コネクタの配色ルールは次の通りです。

  • 外部キー関係は緑色。
  • 他モデル参照は紫色。

エンティティの配置

エンティティの配置ルールは次の通りです。

  • 参照数の多いもの(結合度の高いもの)を左に配置する。
  • 上記ノード(モデル)から参照されているノードを右に配置する。
  • juserなどシステム系は、このプロジェクトで作成したモデルで参照されているもののみを対象にする。
  • 選択肢モデルは配置しない。

画面遷移図

モデル毎に、利用している画面を表示します。また画面間で遷移可能な矢印を表示します。

ボタン名を設定していた場合、画面機能(黒字)の下に、ボタン名を青字で表記しています。

オリジナルボタンはボタン名とパラメータを記載します。番号(連番)を付与し、番号によって遷移状態を表現します。

図12 画面遷移図

スクリプト一覧表

スクリプト一覧表は、スクリプトの「ドキュメンテーションコメント」を抽出して作成します。

ドキュメンテーションコメントの詳細はこちらをお読みください。

図13 スクリプト一覧表

すべてのドキュメントは Excel 形式で出力されます。テンプレートとなるファイルを修正することで、レイアウトをカスタマイズすることができます。

テンプレートファイルはwagbydesigner\bin\spec\templateフォルダ以下に用意されています。

例 モデル項目の出力欄を追加する

Wagby出荷時は、モデル項目の出力は100項目までとなっています。次の手順でこれを増やすことができます。

  1. wagbydesigner\bin\spec\templateにあるmodelitem_list.xlsをExcelで開きます。
  2. 標準では、100項目までのテンプレートを用意しています。必要な数だけ、この欄を増やしてください。

例 自動計算式を出力する

modelitem_list.xls で利用できます。次のプレースホルダを含めてください。(標準では含まれていません)

${modelitem[番号]/autocalc}

例 ユーザ定義入力チェック式を出力する

modelitem_list.xls で利用できます。次のプレースホルダを含めてください。(標準では含まれていません)

${modelitem[番号]/generic_check[1-5]}
${modelitem[番号]/generic_check/errormsg[1-5]}
${modelitem[番号]/generic_check/@warning[1-5]}

generic_check1からgeneric_check5までを指定できます。
generic_check/errormsgは、エラーメッセージ文字列です。
generic_check/@warningは、警告として利用するかどうかを表します。

autocalc と generic_check は、ここで紹介した簡易表記が使えます。これ以外のリポジトリ情報を使う場合は、次の節をお読みください。

先の例を題材に説明します。次の2点を改良することを検討します。

  • 先の方法では、値があるときは "int 10 (char)" と出力されるが、ない場合は "int ()"となってしまう。
  • テンプレートを修正して、各行にプレースホルダを追加するのが面倒である。

この問題を解決するために、JavaScript言語を使って、出力文字列を加工するプログラムを自作することができます。この方法を説明します。

スクリプトの設定

今回のケースは「モデル項目」の出力に関わるため、スクリプト設定の「モデル項目」をマウスで選択します。するとエディタが起動します。

図14 スクリプトの入力 (1)

エディタにスクリプトを入力します。「OK」ボタンを押すと設定されます。

図15 スクリプトの入力 (2)

例 どのようなプレースホルダが利用できるかを調べる

関数 process を用意します。引数はありません。この関数の内部では map 変数が利用できます。map には、出力しようとしている値がマップ形式で格納されており、この内容を確認します。

function process() {
  var keys = map.keySet();
  var it = keys.iterator();
  while (it.hasNext()) {
    var key = it.next();
    var value = map.get(key);
    print(key+"="+value);
  }
}

例 型情報の後ろに最大入力文字数と単位(全角/半角) を加える

関数 process を用意します。引数はありません。この関数の内部では map 変数が利用できます。map には、出力しようとしている値がマップ形式で格納されており、これを開発者が加工します。

function process() {
  var size = map.get("__maxmodelitem");
  for (i=0; i<size; i++) {
    var s = map.get("${modelitem["+i+"]/model/modelitem/limit}");
    if (s !== "" && s !== null) {
      s = " (" + s + ")";
      var s2 = map.get("${modelitem["+i+"]/model/modelitem/limit_2}");
      if (s2 !== "" && s2 !== null) {
        if (s2 === "char") {
          s = s + " 全角";
        } else {
          s = s + " 半角";
        }
      }
      var type = map.get("${modelitem["+i+"]/@type}");
      map.put("${modelitem["+i+"]/@type}", type+s);/* override */

      /*var ret = map.get("${modelitem["+i+"]/@type}");
      print(i+":type="+ret);*/
    }
  }
}

設計書出力時に、このスクリプトが実行されます。これによって modelitem[N]/@type という値が書き換えられます。具体的には、標準では "string" だった出力値が "string(10) 全角" などとなります。

既存のプレースホルダをそのままに値を再セットするため、テンプレートファイルを修正する手間を減らすこともできます。その他の説明は次のとおりです。

  • function() に渡されるのは map という名前の変数のみです。それ以外の変数は開発者が宣言してご利用ください。
  • mapには "__" で始まる特別な値が含まれます。これは格納されているキーの個数を示します。[後述]

格納されている数

格納数は "__" ではじまる変数で取得できます。

ファイル名説明キー名
list_screen.js画面定義一覧 - 一覧画面系 __maxcondition : 検索条件の数。condition[N]/@name など。
__maxlist : 一覧表示の数。list[N]/@name など。
menu_list.jsメニュー一覧 __maxmenu : メニューの数。menu[N]/@desc など。
modelitem_list.jsモデル項目一覧 __maxmodelitem : モデル項目の数。modelitem[N]/@name など。
model_list.jsモデル名一覧 __maxmodel : モデルの数。model[N]/@modelId など。
report_list.js帳票一覧 __maxprintlayout : 帳票の数。printlayout[N]/@filename など。
show_screen.js画面定義一覧 - 詳細画面系 __maxmodelitem : モデル項目の数。modelitem[N]/@name など。

「リポジトリダウンロードサービス > 販売管理」で公開しているリポジトリに、本ツールを適用して得られた設計情報をダウンロードできます。出力結果のサンプルとしてご確認ください。

ファイルを解凍したとき、複数のExcelファイルのファイル名が文字化けする。

お使いの解凍ツールの問題の可能性があります。Windows OS に付属の標準の解凍ツールを使ってお試しください。

実行すると処理が中断され、エラー画面が表示される。

リポジトリのサイズが大きい場合、メモリ不足となっている可能性があります。Designerの稼働環境のメモリサイズを増やしてお試しください。

  • 設計書出力時は、すべてのモデルを「ビルド対象」に含めてください。ビルド対象外のモデルを指定した場合、設計書出力が正常に動作しないことがあります。 R8.3.0 で解消されました。

R8.0.2

  • 一覧表示項目として指定しないが、一覧帳票に出力する設定を行うと「画面定義一覧」に含まれてしまっていたため、これを除く。

R8.2.0

  • Designerで設定した「モデルの概要」「モデルの説明」「モデル項目の説明」を設計書に出力できるようにする。設計書出力のテンプレートファイルmodel_list.xlsに"model[N]/@outline","model[N]/@note"を指定できる。またmodelitem_list.xlsに"model/@outline","model/@note","modelitem[N]/@note"を指定できる。
  • 一覧表示画面をつくらないモデルを含んだプロジェクトで設計書出力を行うと実行時エラーが発生する不具合を修正。
  • 設計書出力処理を連続で行うと、出力ファイル名に "(2)","(3)",... といったサフィックスが含まれてしまう不具合を修正。

R8.3.0

  • すべてのモデルを「ビルド対象」に含めないと実行時エラーになる場合がある不具合を修正。
  • ER図出力の画面配置アルゴリズムを修正。選択肢モデルはER図に含めないようにする。
  • 画面遷移図、スクリプト一覧表を生成する。
  • モデル名一覧のモデル種別を "store","master" という表記から、"システム","ユーザ" へ変更する。"システム" は内部で利用しているモデルで、"ユーザ" は開発者が作成したモデルを意味する。

R8.3.2

  • テンプレートファイル wagbydesinger/bin/spec/template/front.xls を編集し、更新日のプレースホルダを ${createdateYMD} とすると日付を西暦にすることができる。