<装置構成>
本発明の実施例1に係る計算機システムは、設計書メタ情報変換装置101と、設計情報入出力装置102と、クライアント装置103からなるスプレッドシート形式の設計書の入出力システム100である。図1は、計算機システムのハードウェア構成の一例を示すブロック図を示す。
設計書メタ情報変換装置101と、設計情報入出力装置102と、クライアント装置103は、図1に示すように、制御及び演算部101aと102aと103aと、入力部101bと102bと103b、記憶部101cと102cと103cと、出力部101dと102dと103dと、通信インタフェース部104aと104b及び104cを有する計算機システムである。なお、通信インタフェース部104a、104b及び104cはネットワークを介して接続される。
設計書メタ情報変換装置101と設計情報入出力装置102は、通信インタフェース部104aと104bを介して互いの装置間のデータ通信連携を実現する。設計情報入出力装置102とクライアント装置103は、通信インタフェース部104bと104cを介して互いの装置間のデータ通信を実現する。これらの、設計書メタ情報変換装置101と、設計情報入出力装置102と、クライアント装置103は、一体で合っても構わない。
記憶部101cと102cと103cは、ハードディスクドライブ等の不揮発性の記憶媒体を含む記憶装置で構成される。設計書メタ情報変換装置101の記憶部101cには設計書メタ情報変換部201と表計算部210として機能するコンピュータソフトウェアプログラムが格納される。
設計情報入出力装置102の記憶部102cには設計書読込及び変換部202と設計情報検索条件入力画面出力部203と設計情報検索及び結果表示画面出力部204と設計情報参照及び編集画面出力部205と設計情報編集処理部206として機能するコンピュータソフトウェアプログラムが格納されている。
クライアント装置103の記憶部103cには設計書などを編集する表計算部211として機能するコンピュータプログラムと、ブラウザ212として機能するコンピュータプログラムと、スプレッドシートの設計書及び設計書の雛形が格納されている。また、記憶部103cには設計情報入出力装置102から送信された画面を出力部103dに表示するブラウザとして機能するコンピュータソフトウェアプログラムも格納されている。
制御及び演算部101a、102a、103aは、後述するようにプロセッサとメモリを含み、記憶部101c、102c、103cからプログラムをメモリにロードしてプロセッサによって実行する。
設計書メタ情報変換部201及び表計算部210は、制御及び演算部101aによって記憶部101cから読み出されて実行されることにより各機能を実現している。設計書読込及び変換部202と設計情報検索条件入力画面出力部203と設計情報検索及び結果表示画面出力部204と設計情報参照及び編集画面出力部205は制御及び演算部102aによって記憶部102cから読み出されて実行されることにより各機能を実現している。表計算部211及びブラウザ212は、制御及び演算部103aによって記憶部103cから読み出されて実行されることにより各機能を実現している。
入力部101bと102bと103bは、マウス等の入力デバイスである。出力部101dと102dと103dは、各種ディスプレイ等の表示デバイスであり、この他各種プリンタ等の他の出力装置を接続することもできる。
図20は、スプレッドシート形式の設計書入出力システム100を構成する計算機の一例を示すブロック図である。図示の例は、設計書メタ情報変換装置101として稼動する計算機10の例を示すが、設計情報入出力装置102及びクライアント装置103も同様の構成である。
計算機10は、制御及び演算処理を行うプロセッサ60と、プログラムやデータを保持するメモリ70と、ネットワーク40に接続されて他の計算機等と通信を行う通信インタフェース部104aと、記憶部101cに接続されてデータやプログラム等の読み書きを行うストレージインタフェース86と、入力部101bに接続されたI/Oプロセッサ83と、プロセッサ60に接続された出力部101dを含む。なお、図1に示した制御及び演算部101a、102a、103aは、プロセッサ60及びメモリ70に相当する。
プロセッサ60は、ヘテロジニアスのマルチコアプロセッサで構成され、複数のCPUコア61と、複数のGPUコア62を含む。また、プロセッサ60は、メモリ70に接続されるメモリコントローラ63と、出力部101dに接続されるディスプレイコントローラ65と、I/Oプロセッサ83、通信インタフェース部104a及びストレージインタフェース86に接続されるI/Oコントローラ64とを含む。入力部101bとしては、キーボードやマウスやタッチパネルを含む。出力部101dとしては、ディスプレイを含む。
メモリ70には、OS71がロードされてプロセッサ60によって実行される。OS71は設計書メタ情報変換部や表計算部などの1以上のソフトウェア72を実行する。
設計書メタ情報変換部201などの各機能部はプログラムとしてメモリ70にロードされる。
プロセッサ60は、各機能部のプログラムに従って処理することによって、所定の機能を提供する機能部として稼働する。例えば、プロセッサ60は、設計書メタ情報変換プログラムに従って処理することで設計書メタ情報変換部201として機能する。他のプログラムについても同様である。さらに、プロセッサ60は、各プログラムが実行する複数の処理のそれぞれの機能を提供する機能部としても稼働する。計算機及び計算機システムは、これらの機能部を含む装置及びシステムである。
設計書メタ情報変換装置101の各機能を実現するプログラム、テーブル等の情報は、記憶部101cや不揮発性半導体メモリ、ハードディスクドライブ、SSD(Solid State Drive)等の記憶デバイス、または、ICカード、SDカード、DVD等の計算機読み取り可能な非一時的データ記憶媒体に格納することができる。
<処理の概要>
図2は、計算機システムの機能ブロック図の一例を示す。
本実施例1では、設計書メタ情報変換装置101を利用する開発者等が、クライアント装置103を利用するユーザの業務を処理する計算機システムを開発することを想定する。設計情報入出力装置102は、ユーザの業務で使用する設計書を処理する計算機である。
設計書メタ情報変換装置101は、開発者の操作に応じて、設計書304b(図7B)の構造(項目及びレイアウト)を定義する設計書メタ情報301(図3)をスプレッドシート形式で生成する。
設計書メタ情報変換装置101では、設計書メタ情報変換部201が、設計書メタ情報301を読み込んで、設計書304bの構造を定義する設計情報定義体302(図4)と、設計書304bを変換する際に利用する設計情報雛形303(図5)に変換する。
設計書メタ情報変換装置101は、変換された設計情報定義体302と設計情報雛形303を、ユーザが利用する設計情報入出力装置102の記憶部102cへ格納させる。
また、設計書メタ情報変換装置101を利用する開発者は、設計書メタ情報301に対応する設計書雛形304a(図7A)を生成して、ユーザが利用する設計情報入出力装置102の記憶部102cに格納しておく。
クライアント装置103のユーザは、表計算部210で設計書雛形304aを読み込んで、スプレッドシート形式の設計書304bを生成し、記憶部102cに格納する。
クライアント装置103はユーザの操作に応じて、設計書304bの登録を要求する。設計書メタ情報変換部201は、登録要求を受け付けると設計書登録画面305をクライアント装置103に出力する。
クライアント装置103は設計書登録画面305から設計書304bの登録を実行する。設計情報入出力装置102は、スプレッドシート形式の設計書304bを受け付けると、設計書読込及び変換部202が設計情報定義体302と、設計情報雛形303を読み込んで、後述するようにスプレッドシート形式の設計書304bをXML形式の設計情報310に変換し、記憶部102cに格納する。
設計情報入出力装置102は、クライアント装置103から検索要求を受け付けると、設計情報検索条件入力画面出力部203が設計情報定義体302を読み込んで検索条件入力画面306を生成し、クライアント装置103に出力する。なお、検索条件入力画面306は、図9、図10の検索条件入力画面306a、306bの総称を示す。
設計情報入出力装置102は、クライアント装置103から検索項目を受け付けると、設計情報検索及び結果表示画面出力部204が検索を実行して、設計情報定義体302を参照して設計情報検索結果画面307を生成し、検索結果としてクライアント装置103に送信する。なお、設計情報検索結果画面307は、図11A〜図12に示す設計情報検索結果画面307a、307b、307cの総称である。
設計情報入出力装置102は、クライアント装置103から検索結果について設計情報の参照要求を受け付けると、設計情報参照及び編集画面出力部205が設計情報310と設計情報定義体302を読み込んで、設計情報参照及び編集画面308を生成し、クライアント装置103に出力する。
クライアント装置103は、設計情報参照及び編集画面308から設計情報310の編集を行うことができる。設計情報入出力装置102は、クライアント装置103から編集結果の出力要求を受け付けると、設計情報編集処理部206がXML形式の設計情報310を読み込んで、設計情報定義体302と設計情報雛形303に応じてスプレッドシート形式の設計書304cを生成してクライアント装置103へ送信する。
<データ構成>
スプレッドシート形式で作成される各種設計書に対するメタ情報を定義した設計書メタ情報301について説明する。
設計書メタ情報301は、設計書メタ情報変換装置101の記憶部101cに格納されたファイルの一例であり、設計書メタ情報変換部201で利用される。設計書メタ情報301は、スプレッドシートで定義される設計書の種別ごとに1つのファイルが表計算部210によって作成される。
以下、図3に一例を示す設計書メタ情報301を利用してデータ構成について説明する。設計書メタ情報301は、クライアント装置103で利用するスプレッドシート形式の設計書304b(設計書雛形304a)で使用する項目と、各項目のセルの位置等のレイアウトを定義した設計書304bの構造を定義したファイルである。
設計書メタ情報301の1ファイルの中には、“ファイル種別”(3011)と、“項目グループ間関連”(3012)と、“シート種別”(3013)と、 “単数項目グループ”(3014)と、“複数項目グループ”(3015)の要素が含まれる。
要素“ファイル種別”(3011)はスプレッドシート形式のファイルごとに設計書の種別を定義するものであり、要素“ローカル名”と要素“英字名”を含む。
要素“シート種別”(3013)はスプレッドシートで定義されるシートごとに定義される。したがって、スプレッドシート内に複数のシートで構成される設計書304bを対象とする場合、要素“シート種別”(3013)、及び以下の“単数項目グループ”(3014)と、“複数項目グループ”(3015)を複数定義する。要素“シート種別”(3013)は、要素“ローカル名”と要素“英字名”を含む。
要素“単数項目グループ”(3014)には、設計書で定義される1つの項目に対して値が1つ定義される項目(単数項目)の内容と付加情報を定義するグループを定義する。なお、要素“単数項目グループ”(3014)は、要素“ローカル名”と要素“英字名”を含む。また、定義される単数項目の数だけ、要素“項番”と、要素“必須フラグ”と、要素“単数項目ローカル名”と、要素“単数項目英字名”と、単数項目がスプレッドシート上のどの位置にあるかを示す情報として要素“開始行”と要素“開始列”と、単数項目を画面上に表示する際に必要とする情報として要素“種類”と要素“サイズ”が定義される。
“種類”は、クライアント装置103のブラウザで表示する際の形式を規定し、“input”は入力フィールドを示し、“text”は文字列を表示することを示す。また、“サイズ”は、入力される文字数を規定する。
要素“複数項目グループ”(3015)には、設計書で定義される1つの項目に対して値が複数定義される項目(複数項目)の内容と付加情報を定義するグループを定義する。要素“複数項目グループ”(3015)は、要素“ローカル名”と要素“英字名”を含む。また、複数項目の数だけ、要素“項番”と、要素“必須フラグ”と、要素“複数項目ローカル名”と、要素“複数項目英字名”と、複数項目がスプレッドシート上のどの位置から始まるかを示す情報として要素“開始行”と要素“開始列”と、複数項目を画面上に表示する際に必要とする情報として要素“種類”と要素“サイズ”が定義される。
なお、以上の要素“単数項目グループ”(3014)と要素“複数項目グループ”(3015)は、対象とする設計書に合わせて、それぞれ無くてもよいし、複数あってもよい。
要素“項目グループ間関連”(3012)には、要素“項番”と、要素“親項目グループ名”と、要素“子項目グループ名”と、要素“説明”を含む。要素“親項目グループ名”と要素“子項目グループ名”には、“単数項目グループ”(3014)または“複数項目グループ”(3015)の“英字名”が記入される。
設計書メタ情報301は、上記の内容で記憶部101cに格納される。設計書メタ情報301は、クライアント装置103が利用する設計書304bに対応して設計書メタ情報変換装置101を使用する開発者などが予め作成してクライアント装置103へ送信する。設計書メタ情報301は、設計書メタ情報変換装置101で作成してもよいし、他の計算機で生成してもよい。
以上のように設計書メタ情報301は、スプレッドシート形式の設計書304b及び設計書雛形304aの構造とレイアウトを含む構成情報を予め定義した情報である。
図4に設計情報定義体302の一例を示す。設計情報定義体302は、設計書メタ情報変換部201の処理によって1つの設計書メタ情報301から1つ生成されて、記憶部101c及び記憶部102cに格納されるファイルである。以下、図4の設計情報定義体302を参照してデータの構成について説明する。
設計情報定義体302はXML形式のファイルであり、ルート要素として“genericRule”(3021)を持つ。また、要素“genericRule”(3021)は属性として“localName”と“name”を持つ。
“localName”の値は設計書メタ情報301の“ファイル種別”(3011)の“ローカル名”から、“name”の値は設計書メタ情報301の“ファイル種別”(3011)の“英字名”から、設計書メタ情報変換部201の処理でそれぞれ設定される。
さらに要素“genericRule”(3021)は、要素“relationship”(3022)と要素“designSpecification”(3023)を複数含む。
要素“relationship”(3022)は、設計書メタ情報301で定義される“項目グループ間関連”と同数だけ、設計書メタ情報変換部201の処理によって生成される。また、要素“relationship”(3022)は属性として“parentItem”と“childItem”を持つ。“parentItem”の値は設計書メタ情報301の“親項目グループ名”から、“childItem”の値は設計書メタ情報301の“子項目グループ名”から、設計書メタ情報変換部201の処理でそれぞれ設定される。
要素“designSpecification”(3023)は、設計書メタ情報301で定義される“シート種別”と同数だけ、設計書メタ情報変換部201の処理によって生成される。要素“designSpecification”(3023)は属性として“localName”と“sheetCls”を持つ。
“localName”の値は設計書メタ情報301の“シート種別”(3013)の“ローカル名”から、“sheetCls”の値は設計書メタ情報301の“シート種別”(3013)の“英字名”から、設計書メタ情報変換部201の処理でそれぞれ設定される。さらに要素“designSpecification”(3023)は、要素“key”を複数含む。
要素“key”は、設計書メタ情報301の“単数項目グループ”(3014)または“複数項目グループ”(3015)の数だけ、設計書メタ情報変換部201の処理によって生成される。また、要素“key”は属性として“localName”と“name”と“type”を持つ。
“localName”の値は設計書メタ情報301の“単数項目グループ”(3014)の“ローカル名”または“複数項目グループ”(3015)の“ローカル名”から設計書メタ情報変換部201の処理で設定される。“name”の値は設計書メタ情報301の“単数項目グループ”(3014)の“英字名”または“複数項目グループ”(3015)の“英字名”から設計書メタ情報変換部201の処理で設定される。
“type”の値は“単数項目グループ”(3014)の場合は“single”または“複数項目グループ”(3015)の場合は“list”から、設計書メタ情報変換部201の処理で設定される。さらに要素“key”は、“type”に設定された値が”single”の場合は要素“singleItemKey”を複数含み、または“type”に設定された値が“list”の場合は要素“listItemKey”を複数含む。
要素“singleItemKey”(3024)は、設計書メタ情報301の“単数項目グループ”(3014)で定義される項目の数だけ、設計書メタ情報変換部201の処理によって生成される。また、要素“singleItemKey”(3024)は属性として“localName”と“name”と“mandatory”を持つ。
“localName”の値は設計書メタ情報301の“単数項目グループ”(3014)の“単数項目ローカル名”から、“name”の値は設計書メタ情報301の“単数項目グループ”(3014)の“単数項目英字名”から、“mandatory”の値は設計書メタ情報301の“必須フラグ”に“○”が記入されている場合は“true”が、“必須フラグ”に何も記入されていない場合は“false”が、設計書メタ情報変換部201の処理でそれぞれ設定される。
さらに、要素“singleItemKey”(3024)は、要素“spreadsheet”と要素“webScreen”を含む。要素“listItemKey”(3025)は、設計書メタ情報301の“複数項目グループ”(3015)で定義される項目の数だけ、設計書メタ情報変換部201の処理によって生成される。また、要素“listItemKey”(3025)は属性として“localName”と“name”と“mandatory”を持つ。
“localName”の値は設計書メタ情報301の“複数項目グループ”(3015)の“複数項目ローカル名”から、“name”の値は設計書メタ情報301の“複数項目グループ”(3015)の“複数項目英字名”から、“mandatory”の値は設計書メタ情報301の“必須フラグ”に“○”が記入されている場合は“true”が“必須フラグ”に何も記入されていない場合は“false”が、設計書メタ情報変換部201の処理でそれぞれ設定される。さらに、要素“listItemKey”(3025)は、要素“spreadsheet”と要素“webScreen”をそれぞれ1つずつ含む。
必須フラグは設計書304bで必ず使用する項目を識別するフラグで、“○”であれば設計書304bで必須の項目であることを示す。また、必須フラグが“○”に設定された項目は、検索処理で検索キーとなる。
要素“sheet”(3026)は、要素“cellLine”と要素“cellColumn”をそれぞれ1つずつ含む。要素“cellLine”(3026)の値は設計書メタ情報301の“開始行”から、要素“cellColumn”の値は設計書メタ情報301の“開始列”から、設計書メタ情報変換部201の処理でそれぞれ設定される。
要素“webScreen”(3027)は、要素“itemType”と、要素“itemLength”を、それぞれ1つずつ含む。要素“itemType”の値は設計書メタ情報301の“種類”から、要素“itemLength”の値は設計書メタ情報301の“サイズ”から、設計書メタ情報変換部201の処理でそれぞれ設定される。
以上のように、設計情報定義体302には、スプレッドシート形式の設計書304bの行番号(cellLine)と列番号(cellColumn)で定まるセルの情報が定義される。設計書読込変換部202は、設計書304bに応じた設計情報定義体302を参照することで、スプレッドシート形式の設計書304bの構造を取得できる。
図5にスプレッドシート形式の設計書304bをXML形式に変換するために使用する設計情報の雛形、または記憶部102cに格納された設計情報310をXML形式に再変換するために使用する設計情報雛形303の一例を示す。
設計情報雛形303は、設計書メタ情報変換部201の処理によって設計書メタ情報301を元にして生成され、記憶部101c及び102cに格納されるファイルである。以下、図5に一例を示す設計情報雛形303を利用してデータ構成について説明する。
設計情報雛形303はXML形式のファイルであり、ルート要素として“documentCls”(3031)を持つ。また、要素“documentCls”(3031)は属性として“name”と“fileName”と“date”を持つ。
属性“name”の値は設計書メタ情報301の“ファイル種別”(3011)の“英字名”から、設計書メタ情報変換部201の処理で設定される。属性“fileName”の値は 設計書登録画面305でユーザにより入力される“設計書ファイル名”から、設計書読込及び変換部202の処理で設定される。属性“date”の値は、設計書読込及び変換部202で設計書304bが記憶部102cに登録された際の、または設計情報編集処理部206で設計書304cを生成する際の年月日日時分秒が、例えば“YYYY/MM/DD/HH:MM:SS”の形式で生成される。さらに要素“documentCls”(3031)は、要素“sheetCls”(3032)を複数含む。
要素“sheetCls”(3032)は設計書メタ情報301で定義される“シート種別”(3013)と同数だけ、設計書メタ情報変換部201の処理によって生成される。また、“sheetCls”(3032)は属性として“name”を持つ。属性“name”の値は設計書メタ情報301の“シート種別”(3013)の“英字名”から、設計書メタ情報変換部201の処理で設定される。さらに要素“sheetCls”(3032)は、要素“singleItems”(3033)または要素“listItems”(3037)を含む。
要素“singleItems”(3033)は、設計書メタ情報301の“単数項目グループ”(3014)の数だけ、設計書メタ情報変換部201の処理によって生成される。また、要素“singleItems”(3033)は属性として“name”を持つ。属性“name”の値は設計書メタ情報301の“単数項目グループ”(3014)の“英字名”から、設計書メタ情報変換部201の処理で設定される。
さらに要素“singleItems”(3033)には、設計書メタ情報301の“単数項目グループ”(3014) で定義される“単数項目英字名”を要素名とする複数の要素が、設計書メタ情報変換部201の処理で生成され含まれる。設計書メタ情報301の“単数項目グループ”(3014) で定義される“単数項目英字名”を要素名とする要素の値には、“${}”で囲まれた変数が設計書メタ情報変換部201で生成される。変数名は、設計書メタ情報301の“シート種別”(3013)の“英字名”と設計書メタ情報301の“単数項目グループ”(3014)の“英字名”を“.”で連結した形式で、設計書メタ情報変換部201によって生成される。
要素“listItems”(3037)は、設計書メタ情報301の“複数項目グループ”(3015)の数だけ、設計書メタ情報変換部201の処理によって生成される。また、要素“listItems”(3037)は属性として“name”を持つ。属性“name”の値は設計書メタ情報301の“複数項目グループ”(3015)の“英字名”から、設計書メタ情報変換部201の処理で設定される。さらに要素“listItems”(3037)は要素“member”(3035)が一つ含まれる。なお、要素“listItems”(3037)と要素“member”(3035)の間には“#foreach( $member in $XXXX)”が、要素“member”(3035)の直後には“#end”が設計書メタ情報変換部201によって生成される。前記の“XXXX”には、設計書メタ情報301の“シート種別”(3013)の“英字名”と設計書メタ情報301の“複数項目グループ”(3015)の“英字名”を“.”で連結した形式の名前とする変数が設計書メタ情報変換部201で生成される。
要素“member”(3035)には、設計書メタ情報301の“複数項目グループ” (3015)で定義される“複数項目英字名”を要素名とする複数の要素が、設計書メタ情報変換部201の処理で生成され含まれる。設計書メタ情報301の“複数項目グループ”(3015) で定義される“複数項目英字名”を要素名とする要素の値には、“${}”で囲まれた変数が設計書メタ情報変換部201で生成される。変数名は、設計書メタ情報301の“シート種別”(3013)の“英字名”と設計書メタ情報301の“複数項目グループ”(3015)の“英字名”を“.”で連結した形式で、設計書メタ情報変換部201によって生成される。
以上のように、設計情報雛形303は、設計情報310を生成する際に、設計書304bの値をXML形式のファイルに設定するフォームが定義される。したがって、設計書読込変換部202は、設計情報定義体302に従ってスプレッドシート形式の設計書304bから読み込んだ値を設計情報雛形303に設定することで、XML形式の設計情報310に変換することができる。
図6は、設計情報310の一例を示す図である。設計情報310は、クライアント装置103で生成したスプレッドシート形式の設計書304bを、設計情報入出力装置102の設計書読込及び変換部202でXML形式に変換した結果を示す。
設計情報310は、図5に示した設計情報雛形303の変数$に設計書304bの内容を設定した情報として設計書読込及び変換部202で生成される。
図7Aは、本発明の実施例1を示し、設計書雛形304aの一例を示す図である。設計書雛形304aは、クライアント装置103の記憶部103cに予め格納されているスプレッドシート形式の情報である。
図7Aの設計書雛形304aは、未入力の状態を示す。設計書雛形304aは、設計書雛形304aの種類を示すドキュメント分類3031と、設計書304bの題目を格納する題目3032と、コンポーネントID3033と、コンポーネント名3034と、作成者3035と、更新者3036と、承認者3037と、作成日3038と、更新日3039と、承認日3040と、データの番号を示す項番3041と、パッケージ名前空間3042と、クラス日本語名3043と、クラス英字名3044と、メソッド日本語名3045と、メソッド英字名3046と、他コンポ公開3047と、備考3048のセルを含む。
図7Bは、本発明の実施例1を示し、設計書304bの一例を示す図である。図7Bの設計書304bは、図7Aの設計書雛形304aにクライアント装置103のユーザが表計算部211で所定の値を入力した結果を示す。設計書304bの各セルの符号は、設計書雛形304aと同一である。
図7Cは、本発明の実施例1を示し、設計書304cの一例を示す図である。図7Cの設計書304cは、後述する図13に示す設計情報参照及び編集画面308で編集された設計情報をスプレッドシート形式で示した情報である。
<フローチャート>
設計書メタ情報301を入力として、設計情報定義体302と設計情報雛形303を出力する、設計書メタ情報変換部201の処理を図14に示すフローチャートを用いて説明する。
ステップ1401で、設計書メタ情報変換部201は、入力部101bからの指示を契機に処理を開始する。
ステップ1402で、設計書メタ情報変換部201は、記憶部101cに予め登録されている設計書メタ情報301のファイルを読み込む。
ステップ1403では、ステップ1402で読み込んだ設計書メタ情報301のファイルの情報から、設計書メタ情報変換部201が前述の方法で設計情報定義体302の要素と値を生成し、設計情報定義体302のファイルを生成して記憶部101cに格納する。
ステップ1404では、ステップ1402で読み込んだ設計書メタ情報301のファイルの情報から、設計書メタ情報変換部201が前述の方法で設計情報雛形303の要素と値を生成し、設計情報定義体302のファイルを生成して記憶部101cに格納する。
ステップ1405では、設計書メタ情報変換部201がステップ1403で生成された設計情報定義体302のファイルと、ステップ1404で生成された設計情報雛形303のファイルを、記憶部101cから読み込んでみ通信インタフェース部104aを介してデータ転送処理を行い、設計情報入出力装置102の記憶部102cに格納させる。
最後にステップ1406で、設計書メタ情報変換部201は出力部101dに処理が完了したメッセージを出力する。
上記処理により、設計書メタ情報変換装置101は、設計書メタ情報301から設計情報定義体302と、設計情報雛形303を生成して設計情報入出力装置102の記憶部102cに格納させる。
図2において、設計書読込変換部202は設計情報定義体302を入力として設計書登録画面305を表示し、設計書雛形304aに基づいて作成されたスプレッドシート形式の設計書304bを受け付ける。そして、設計書読み込み変換部2は、受け付けた設計書304bと、設計書メタ情報変換装置101が生成した設計情報定義体302と設計書雛形304aを入力として、設計情報310を生成する。
図8は、設計書読込変換部202が出力する設計書登録画面305の一例を示す画面イメージである。設計書登録画面305は、記憶部102cに登録されている全ての設計書メタ情報301の要素“ファイル種別”をプルダウンリストで選択する登録対象3051と、ファイル名を入力する“設計書ファイル名”(3052)と“登録ボタン”が配置される。
設計書登録画面305は、設計情報入出力装置102を利用するクライアント装置103の出力部103dに表示される。クライアント装置103を使用するユーザまたは管理者などが入力部103bの操作によって登録対象3051を選択して設計書ファイル名3052を入力した後、“登録ボタン”を操作すると、設計書読込及び変換部202によって設計情報310が生成される。
次に、設計書雛形304aに基づいて作成されたスプレッドシート形式の設計書304bと設計情報定義体302と設計情報雛形303とを入力として、設計情報310を出力する設計書読込及び変換部202の処理の一例を図15に示すフローチャートを用いて説明する。
ステップ1501で、設計書読込及び変換部202は、クライアント装置103の入力部103bからの指示を契機に処理を開始する。
ステップ1502で、入力部103bから通信インタフェース部104cを介して送信された処理リクエストを、設計情報入出力装置102の設計書読込及び変換部202が受け付けて設計書登録画面305を生成する。
設計書読込及び変換部202は通信インタフェース部104bを介して処理レスポンスをクライアント装置103に応答し、クライアント装置103の出力部103dに設計書登録画面305を表示させる。なお、設計書登録画面305の“登録対象”(3051)の選択肢には、記憶部102cに登録されている全ての設計書メタ情報301の要素“ファイル種別”の“ローカル名”が一覧で並ぶ。
ステップ1503で、クライアント装置103は入力部103bの操作によって、設計書登録画面305の“登録対象”(3051)と“設計書ファイル名”(3052)が入力され、設計書登録画面305の“登録”ボタンが押されたことを受け付ける。クライアント装置103は、設計書登録画面305で入力された“設計書ファイル名”(3052)に該当した設計書304bのファイルを記憶部103cから読み込む。クライアント装置103は、通信インタフェース部104cを介して設計書304bのデータと設計書登録画面305で入力された“登録対象”(3051)と処理リクエストを設計情報入出力装置102に通知する。以降のステップの処理は設計情報入出力装置102で実行される。
ステップ1504では、設計書読込及び変換部202が記憶部102cに登録されている設計情報定義体302のファイルの中から、設計書登録画面305の“登録対象”(3051)で選択された文字列と同じ値を設計情報定義体302の要素“genericRule”(3021)の属性“localName”に持つ設計情報定義体302のファイルを記憶部102cから検索して読み込む。
ステップ1505では、設計書読込及び変換部202が記憶部102cに登録されている設計書メタ情報301のファイルの中から、ステップ1504で読み込んだ設計書メタ情報301の“ファイル種別”(3011)の“英字名”と同じ値を設計情報雛形303の要素“documentCls”(3031)の属性“name”の値に持つ設計情報雛形303のファイルを記憶部102cから検索して読み込む。
ステップ1506では、設計書読込及び変換部202がステップ1503で読み込んだスプレッドシート形式の設計書304bのファイルを、ステップ1504で読み込んだ設計情報定義体302を利用して、設計書304bのファイルから単数項目3014または複数項目3015の項目名(ローカル名)と値を取得する。
なお、設計書304bのファイルから単数項目または複数項目に該当するステップ1504で読み込んだ設計情報定義体302の要素“singleItemKey”(3024)または要素“listItemKey”(3025)の属性“mandatory”の値が、“true”であるにも関わらず、設計書304bのファイル上で単数項目3014または複数項目3015の値が入力されていなかった場合、設計書読込及び変換部202はエラーを出力する。
具体的に単数項目3014の場合、つまり設計情報定義体302の要素“key”の属性“type”の値が“single”である場合、設計書読込及び変換部202は設計情報定義体302の要素“singleItemKey”3014とこの属性“name”から項目名を取得し、項目名に対する値の行位置を要素“singleItemKey”(3024)内の要素“cellLine”から取得し、項目名に対する値の列位置を要素“singleItemKey”(3024)内の要素“cellColumn”から取得し、スプレッドシート形式の設計書304bのファイルから取得した行位置と列位置の値を取得する。設計書読込及び変換部202は、以上の処理を設計情報定義体302の要素“key”に含まれる要素“singleItemKey”(3024)の数だけ繰り返す。
または複数項目3015の場合、つまり設計情報定義体302の要素“key”の属性“type”の値が“list”である場合、設計書読込及び変換部202は設計情報定義体302の要素“listItemKey”(3025)とこの属性“name”から項目名を、項目名に対する値の行位置を要素“listItemKey”(3025)内の要素“cellLine”から取得し、項目名に対する値の列位置を要素“listItemKey”(3025)内の要素“cellColumn”から取得し、スプレッドシート形式の設計書304bのファイルから取得した行位置と列位置の値、及び行位置を一つずつ増やして値が存在する行まで値を複数取得する。
設計書読込及び変換部202は、以上の処理を設計情報定義体302の要素“key”に含まれる要素“listItemKey”(3025)の数だけ繰り返す。ただし、設計書読込及び変換部202は一つの設計情報定義体302の要素“key”に含まれる要素“listItemKey”(3025)から取得する値の数は、要素“listItemKey”(3025)の属性“mandatory”が“true”で指定される値の数に等しい。
例えば、図7Bに示す設計書304bのファイルの複数項目の例において、“クラス日本語名”(3053)と“メソッド日本語名”(3055)という項目に対する要素“listItemKey”(3025)の属性“mandatory”が“true”で指定されている場合、それぞれ3行目まで値が埋まっているので、設計書読込及び変換部202は“項番”(3051)が“3”の行までの値が取得される。
ステップ1507では、設計書読込及び変換部202が、まずステップ1506で取得した値を次のようにして、設計情報雛形303に埋め込む変数を設定する。
設計書読込及び変換部202は、単数項目について、ステップ1504で読み込んだ設計情報定義体302の、要素“designSpecification”の属性“sheetCls”の値と、要素“key”の属性“name”の値と、要素“singleItemKey”(3023)の属性“name”の値を“.”で連結した形式で変数を設定し、この変数にステップ1506で取得した項目の値を代入する。
設計書読込及び変換部202は、複数項目について、ステップ1504で読み込んだ設計情報定義体302の、要素“designSpecification”(3023)の属性“sheetCls”の値と、要素“key”の属性“name”の値を“.”で連結した形式で変数を設定する。この変数はリストオブジェクトであり、設計書読込及び変換部202が、ステップ1504で読み込んだ設計情報定義体302の要素“listItemKey”(3025)の属性“name”の値を名前とした変数を設定する。
そして、設計書読込及び変換部202は、前記ステップ1506でスプレッドシート形式の設計書304bでクラス情報(3053、3054)及びメソッド情報(3055、3056)のリストから取得した値を、リストの一行ごとに登録し、このオブジェクトを前記のリストオブジェクトに登録する。
設計書読込及び変換部202は、設計情報雛形303の“$”の変数を、以上のようにして設定した変数の値に置き換えて、設計情報310を生成する。なお、設計情報310内の“#foreach( $member in $XXXX)”と“#end”で囲まれた部分は次のように処理する。
例えば、前記リストオブジェクト“XXXX”の部分が図5の設計情報雛形303に一例を示すように、前記リストオブジェクト“classMethodDesignDoc.classMethodList”であった場合、設計書読込及び変換部202は、“classMethodDesignDoc.classMethodList”に登録されている複数のオブジェクトの中から先頭のオブジェクトを取り出して変数“$member”に代入し、要素“member”(3035)に含まれる要素内の変数を後述するように値に置き換えて、図5の“#end”まで処理する。
例えば、図5に示す要素“classLocalName”(3036)の変数“${member.classlocalName}”では、設計書読込及び変換部202が、“member”(3035)から“classlocalName”を取り出し、その値に置き換える。
設計書読込及び変換部202は、リストオブジェクトに登録されているオブジェクトの数だけ、要素“member”(3035)と、この要素に含まれる要素をコピーして、前記の要素内の変数を値に置き換える処理を繰り返す。設計書読込及び変換部202は、最後に“#foreach( $member in $XXXX)”と“#end”を消去する。
ステップ1508では、設計書読込及び変換部202が、ステップ1507で生成したXML形式の設計情報310のファイルの要素“documentCls”の属性“date”の値に、上記処理を実行した年月日日時分秒を例えば“YYYY/MM/DD/HH:MM:SS”の形式で設定する。
そして、設計書読込及び変換部202は、図5に示した要素“documentCls”の属性“fileName”の値に設計書登録画面305でユーザによって入力された“設計書ファイル名” の名前を設定し、当該ファイル名でステップ1507で生成したXML形式の設計情報310のファイルを記憶部102cに格納する。また、設計書読込及び変換部202は、受け付けた設計書304bを記憶部102cに格納する。
なお、設計書読込及び変換部202は、XML形式の設計情報310を記憶部102cに格納したデータベースの一つのフィールドに格納することができる。これにより、設計書304bのレイアウトや項目が変更されてもXML形式の設計情報310を格納するデータベースを改修する必要はなくなる。また、設計情報310をデータベースの一つのフィールドに格納する際には、XML形式を維持することで検索処理を円滑に行うことができる。
設計書読込及び変換部202は、最後にステップ1509で出力部103dに処理が完了したメッセージを出力して終了する。
以上の処理によって、スプレッドシート形式の設計書304bの内容は、設計書読込変換部202が設計情報定義体302に従って設計情報雛形303に設定することで、XML形式の設計情報310に変換されて記憶部102cに格納される。
設計情報310は、一つのファイルやデータベースの一つのカラムに格納することができるので、設計書304bのレイアウトや項目が変更されても、前記従来例のようにデータベースを改修する必要はない。したがって、システム開発において作成または更新される様々な設計書304bに柔軟に対応することが可能であり、設計書のカスタマイズが容易なスプレッドシート形式設計書の入出力システム100を提供することができる。
なお、設計情報310を記憶部102cのデータベースへ格納する際には、XML形式に限定されるものではなく、テキスト形式など所望の形式(フォーマット)で一つのカラムに格納することができる。
図16は、設計情報検索条件入力画面出力部203の処理の一例を示すフローチャートである。この処理は、設計情報入出力装置102がクライアント装置103から検索要求を受け付けたときなどに実行される。設計情報検索条件入力画面出力部203は、設計情報定義体302と設計情報定義体302を入力して、検索条件入力画面306aを出力する。
ステップ1601で、設計情報検索条件入力画面出力部203は、クライアント装置103の入力部103bからの指示(検索要求)を契機に処理が開始する。設計情報入出力装置102は、入力部103bから通信インタフェース部104bを介して処理リクエストを、設計情報検索条件入力画面出力部203が受け付けて、検索条件入力画面306aを生成する。
ステップ1602で、設計情報検索条件入力画面出力部203は、記憶部102cに登録されている設計情報定義体302を全て読み込む。ステップ1603で、設計情報検索条件入力画面出力部203は、読み込んだ設計情報定義体302の要素“designSpecification”(3023)の属性“localName”の値を、生成した検索条件入力画面306aの“検索対象”(3061)の選択肢にセットする。
ステップ1604では、ユーザによって図9の“検索対象”(3061)が選択されている場合、設計情報検索条件入力画面出力部203は、ユーザによって選択された“検索対象”(3061)に合致する設計情報定義体302を特定する。ただし、ユーザによって“検索対象”が選択されていない場合、本ステップをスキップする。
具体的には、設計情報検索条件入力画面出力部203が、ユーザによって選択された“検索対象”(3061)を要素“designSpecification”(3023)の属性“localName”の値を持つ設計情報定義体302を特定する。設計情報検索条件入力画面出力部203は、特定した設計情報定義体302に含まれる要素“key”ごとに、要素“key”の属性“localName”の値を名前に持つ入力フォームのグループを生成する。
さらに、設計情報検索条件入力画面出力部203は、生成した入力フォームのグループの中に要素“key”に含まれる要素“singleItemKey”(3024)または要素“listItemKey”(3025)の属性“mandatory”が“true”である場合に属性“localName”の値ごとに入力フォーム(3062、3064)と、“検索”(3063、3065)ボタンを生成する。
図9は、検索条件入力画面306aの一例を示す図である。設計情報検索条件入力画面出力部203が生成する検索条件入力画面306aは、検索の対象をプルダウンリスト等で選択する“検索対象”(3061)と、検索する項目と“検索”ボタン3063、3065を含む2つの入力フォーム3062、3064を含む例を示す。
図9の例では、図4に示した設計情報定義体302に基づいて、要素“key”の属性“localName”の値が“クラス・メソッド設計情報”と“クラス・メソッド一覧”を名前とする2つの入力フォームのグループを、設計情報検索条件入力画面出力部203が生成した例を示す。
設計情報検索条件入力画面出力部203は、ユーザによって選択された“検索対象”(3061)を図4の要素“designSpecification”(3023)の中に要素“relationship”が含まれ、要素“relationship”の属性“parentItem”の値と”childItem”の値で指定される単数項目グループまたは複数項目グループが存在する場合、設計情報検索条件入力画面出力部203は、“parentItem”の値と”childItem”の値で指定される単数項目グループまたは複数項目グループを纏めて入力フォームのグループと入力フォームと、“検索”ボタンも生成する。
例えば、図4に一例を示す設計情報定義体302では、要素“relationship”の属性“parentItem”の値に“classMethodDesignInfo”を持ち単数項目グループ“クラス・メソッド設計情報(要素“key”の属性“localName”の値が“クラス・メソッド設計情報”で属性“name”の値が“classMethodDesignInfo”で属性“type”の値が“single”)を指定されている。
設計情報検索条件入力画面出力部203は、要素“relationship”の属性“childItem”の値に“classMethodList”を持ち複数項目グループ“クラス・メソッド一覧” (要素“key”の属性“localName”の値が“クラス・メソッド一覧”で属性“name”の値が“classMethodList”で属性“type”の値が“list”)を指定されており、それら単数項目と複数項目を合わせた入力フォームのグループ“クラス・メソッド設計情報−クラス・メソッド一覧”を持つ検索条件入力画面306bを図10で示すように生成する。
ステップ1605で、設計情報検索条件入力画面出力部203は、通信インタフェース部104bを介して処理レスポンスをクライアント装置103に応答し、クライアント装置103の出力部103dにステップ1604で生成した検索条件入力画面306aまたは306bを表示してから終了する。
図10は、検索条件入力画面306bの一例を示す図である。設計情報検索条件入力画面出力部203が生成する検索条件入力画面306aは、検索の対象をプルダウンリスト等で選択する“検索対象”(3061)と、検索する項目と“検索”ボタン3067を含む2つの入力フォーム3066を含む例を示す。
図10の例では、図4に示した設計情報定義体302に基づいて、上述のように“クラス・メソッド設計情報−クラス・メソッド一覧”を名前とする単数項目と複数項目を合わせた入力フォームを、設計情報検索条件入力画面出力部203が生成した例を示す。
上記の処理によって、図9または図10に示す検索条件入力画面306a、306bが設計情報定義体302の内容に応じて生成され、クライアント装置103のユーザは入力フォーム内の検索項目へ所望の値を入力してから“検索”ボタンを押すことで、検索を実行することができる。
図17は、設計情報検索及び結果表示画面出力部204で行われる処理の一例を示すフローチャートである。設計情報検索及び結果表示画面出力部204は、設計情報定義体302と設計情報310を入力して、図9または図10で受け付けた入力フォームの項目で設計情報の検索を実行し、検索の結果を設計情報検索結果画面307として出力する。この処理は、検索条件入力画面306a、306bで“検索”ボタン3063、3065、3067がクリックされた後に実行される。
ステップ1701で、検索条件入力画面306a、306bで、“検索”ボタンがクリックされてクライアント装置103の入力部103bから指示(検索実行)が発生し、この指示を設計情報検索及び結果表示画面出力部204が受け付けると処理を開始する。
ステップ1702で、入力部103bから通信インタフェース部104bを介して渡される処理リクエストを、設計情報検索及び結果表示画面出力部204が受け付け、検索条件入力画面306a、306bで入力された検索条件(入力フォーム内の項目)を検索キーにして、設計情報定義体302を利用して設計情報310を検索する。すなわち、設計情報検索及び結果表示画面出力部204は、検索条件に応じて設計情報310のファイル種別を検索する。
なお、検索の範囲は“検索”ボタンがクリックされた入力フォームのグループを単位として、設計情報検索及び結果表示画面出力部204が決定する。例えば、図9の検索条件入力画面306aにおいて、入力フォームのグループである“クラス・メソッド設計情報”で入力フォーム3062内の検索条件が入力され“検索”ボタン3063がクリックされた場合、設計情報定義体302において、設計情報検索及び結果表示画面出力部204は、属性“localName”の値が“クラス・メソッド設計情報”を持つ要素“key”を特定する。設計情報検索及び結果表示画面出力部204は、特定した要素“key”の“name”の値“classMethodDesignInfo”を取得して、この取得した値を属性“name”の値に持つ設計情報の要素“singleItems ”の範囲で記憶部102cを検索する。
同様にして、検索条件入力画面306aにおいて、入力フォームのグループである“クラス・メソッド一覧”の入力フォーム3064で検索条件が入力され“検索”ボタン3065がクリックされた場合、設計情報検索及び結果表示画面出力部204は、設計情報定義体302において属性“localName”の値が“クラス・メソッド一覧” を持つ要素“key”を特定する。設計情報検索及び結果表示画面出力部204は、特定した要素“key”の“name”の値“classMethodList” を取得して、この取得した値を属性“name”の値に持つ設計情報の要素“listItems”(3037)の範囲で記憶部102cを検索する。
さらに同様に、図10の検索条件入力画面306bにおいて、入力フォームグループである“クラス・メソッド設計情報−クラス・メソッド一覧”の入力フォーム3066で検索条件が入力されて、“検索”ボタン3067がクリックされた場合、設計情報検索及び結果表示画面出力部204は、設計情報定義体302において属性“localName”の値が“クラス・メソッド設計情報”または“クラス・メソッド一覧”を持つ要素“key”を特定する。
そして、設計情報検索及び結果表示画面出力部204は、特定した要素“key”の“name”の値“classMethodDesignInfo”または値“classMethodList” を取得して、これら取得した値を属性“name”の値に持つ設計情報310の要素“singleItems ”と“listItems”の範囲で記憶部102cを検索する。
ステップ1703で、設計情報検索及び結果表示画面出力部204は、ステップ1702で検索された設計情報310のファイル種別、即ち設計情報310の要素“documentCls”の属性“name”の値を取得する。
ステップ1704で、設計情報検索及び結果表示画面出力部204は、ステップ1703で取得された値を、要素“genericRule”の属性“name”に持つ設計情報定義体302を記憶部102cから読み込む。
ステップ1705で、設計情報検索及び結果表示画面出力部204は、ステップ1702で取得した設計情報310及びステップ1704で取得した設計情報定義体302を元に、図11A〜図12に示す設計情報検索結果画面307a、307bまたは307cを生成する。
図11A〜図12に示す設計情報検索結果画面307a〜307cの検索範囲は、ステップ1702で検索した範囲とし、検索条件入力画面306a〜306bでクリックされた“検索”ボタン3063〜3067が属する入力フォームのグループに依存する。
例えば、図9の検索条件入力画面306aにおいて、入力フォームグループである“クラス・メソッド設計情報”の入力フォーム3062で検索条件が入力され“検索”ボタン3063がクリックされた場合、設計情報検索及び結果表示画面出力部204は、ステップ1702で設計情報の要素“singleItems ”の属性“name”の値に対応した“クラス・メソッド設計情報”である範囲を検索する。設計情報検索及び結果表示画面出力部204は、この検索結果をリスト形式にして図11Aに示す“クラス・メソッド設計情報 検索結果画面”307aを生成する。
図11Aにおいて、“クラス・メソッド設計情報 検索結果画面”307aのリストのカラムヘッダ3071には、“設計情報参照”(3072)と、要素“singleItems”に含まれる要素名に対応するローカル名を、設計情報定義体302の要素“singleItemKey”の属性“name”を特定して属性“localName”の値を割り当てる。
また、検索条件入力画面306aにおいて、入力フォームグループである“クラス・メソッド一覧”の入力フォーム3064で検索条件が入力され“検索”ボタン3065がクリックされた場合、設計情報検索及び結果表示画面出力部204は、ステップ1702で設計情報の要素“listItems”の属性“name”の値に対応した“クラス・メソッド一覧”である範囲を検索する。
設計情報検索及び結果表示画面出力部204は、この検索結果をリスト形式にして図11Bに示す“クラス・メソッド一覧 検索結果画面”307bを生成する。リストのカラムヘッダ3071には、“設計情報参照”(3072)と、要素“member”に含まれる要素名に対応するローカル名を、設計情報定義体302の要素“listItemKey”の属性“name”を設計情報検索及び結果表示画面出力部204が特定して属性“localName”の値を割り当てる。
さらに、検索条件入力画面306bにおいて、入力フォームグループである“クラス・メソッド設計情報 - クラス・メソッド一覧”の入力フォーム3066で検索条件が入力され“検索”ボタン3067がクリックされた場合、設計情報検索及び結果表示画面出力部204は、ステップ1702で設計情報の要素“singleItems ”の属性“name”の値に対応した“クラス・メソッド設計情報”と、要素“listItems”の属性“name”の値に対応した“クラス・メソッド一覧”の範囲を検索する。
設計情報検索及び結果表示画面出力部204は、これらの検索結果をリスト形式にして“クラス・メソッド一覧 検索結果画面”307cを生成する。設計情報検索及び結果表示画面出力部204は、リストのカラムヘッダ3071に、“設計情報参照”(3072)と、要素“singleItems”に含まれる要素名に対応するローカル名を割り当て、設計情報定義体302の要素“singleItemKey”の属性“name”を特定して属性“localName”の値と、要素“member”に含まれる要素名に対応するローカル名を、設計情報定義体302の要素“listItemKey”の属性“name”を特定して属性“localName”の値を割り当てる。
なお、上述の設計情報検索結果画面307aと307bと307cのいずれの“設計情報参照”(3072)の値は、設計情報参照及び編集画面308に遷移するボタンであり、リストの各行の設計情報に対応する設計書ファイル名、即ち設計情報310の要素“documentCls”の属性“fileName”の値を保持している。
設計情報検索及び結果表示画面出力部204は、最後にステップ1706で、通信インタフェース部104bを介して処理レスポンスをクライアント装置103に応答し、クライアント装置103の出力部103dにステップ1705で生成した設計情報検索結果画面307a〜307cを表示させて処理を終了する。
上記処理によって、設計情報入出力装置102はクライアント装置103から受け付けた検索条件で検索した結果を、設計情報検索結果画面307a、307b、307cとして出力することができる。
本実施例1では、設計情報入出力装置102は、受け付けた検索条件でXML形式の設計情報310のファイルを検索する。すなわち、設計書304bのレイアウトや項目が変更されても、設計情報入出力装置102ではXML形式の設計情報310のファイルの検索を行うことができる。したがって、前記従来例のように、設計書304bのレイアウトや項目の変更に応じてデータベースを改修する必要はなくなって、設計書304bの変更などに伴う労力や運用コストを削減できる。
図18は、設計情報参照及び編集画面出力部205の処理の一例を示すフローチャートである。この処理は、設計情報検索結果画面307a〜307cの“設計情報参照”(3072)がクリックされたときに実行される。設計情報参照及び編集画面出力部205は、設計情報定義体302と設計情報310を入力として、設計情報参照及び編集画面308を出力する。
ステップ1801で、設計情報検索結果画面307aや307bや307cに表示された“設計情報参照”(3072)のボタンがクリックされてクライアント装置103の入力部103bから指示が発生し、この指示を契機に処理が開始される。
ステップ1802では、設計情報参照及び編集画面出力部205が“設計情報参照”(3072)のボタンに割り当てられた設計書ファイル名を要素“documentCls”(3031)の属性“fileName”の値に含む設計情報310を記憶部102cから検索する。
ステップ1803では、設計情報参照及び編集画面出力部205がステップ1802で読み込んだ設計情報310のファイル種別、即ち設計情報310の要素“documentCls”(3031)の属性“name”の値を取得する。
ステップ1804では、設計情報参照及び編集画面出力部205がステップ1803で取得した値を、要素“genericRule”(3021)の属性“name”に持つ設計情報定義体302を記憶部102cから読み込む。
ステップ1805では、設計情報参照及び編集画面出力部205がステップ1802で取得した設計情報310を、ステップ1804で読み込んだ設計情報定義体302を利用して、図13に示す設計情報参照及び編集画面308を生成する。
具体的には、設計情報参照及び編集画面出力部205は、図13の“ファイル種別”(3081)として設計情報310の要素“documentCls”(3031)の属性“name”の値に対応したステップ1804の設計情報定義体302の要素“documentCls”の属性“localName”の値と、“ファイル名”(3082)として要素“documentCls”(3031)の属性“fileName”の値を生成する。
設計情報参照及び編集画面出力部205は、“ファイル種別”(3081)内に“シート種別”(3084)として設計情報310の要素“sheetCls”の属性“name”の値に対応したステップ1804の設計情報定義体302の要素“sheetCls”の属性“localName”の値を生成する。
設計情報参照及び編集画面出力部205は、“登録日時”(3083)内に要素“documentCls”の属性“date”の値を生成する。また、“シート種別”(3084)内には単数項目グループや複数項目グループを生成する。
単数項目グループの場合は、図5の要素“singleItems”(3033)の属性“name”の値に対応したステップ1804の設計情報定義体302の要素“key”の属性“localName”の値と、要素“singleItems”(3033)に含まれる要素とその値を生成する。
設計情報参照及び編集画面308では要素“singleItems”(3033)に含まれる要素のローカル名を表示させるために、設計情報定義体302の要素“singleItemKey”(3024)の属性“name”を特定して属性“localName”の値を割り当てる。
なお、設計情報参照及び編集画面出力部205は、要素“singleItems”(3033)に含まれる要素の値を、設計情報参照及び編集画面308において、編集不可能なテキストとするか、編集可能な入力フィールドとするかを、該当する設計情報定義体302の要素“itemType”の値で判定して設計情報参照及び編集画面308を生成する。
複数項目グループの場合、設計情報参照及び編集画面出力部205は、要素“listItems”(3037)の属性“name”の値に対応したステップ1804で読み込んだ設計情報定義体302の要素“key”の属性“localName”の値と、要素“listItems”(3037)に含まれる要素“member”に含まれる要素とその値をリスト形式で生成する。
設計情報参照及び編集画面出力部205は、リストのカラムヘッダ3085には、要素“member”に含まれる要素名に対応するローカル名を、設計情報定義体302の要素“listItemKey”(3025)の属性“name”を特定して属性“localName”の値を割り当てる。
設計情報参照及び編集画面出力部205は、リスト化される値を、画面において、編集不可能なテキストとするか、編集可能な入力フィールドとするかを、該当する設計情報定義体302の要素“itemType”の値で判定して設計情報参照及び編集画面308を生成する。なお、設計情報参照及び編集画面308内でリスト化される値を表示する領域の大きさは、設計情報参照及び編集画面出力部205が該当する設計情報定義体302の要素“itemLength”の値で判定して画面を生成する。なお、設計情報参照及び編集画面308の“追加”(3086)ボタンがクリックされると、リスト内に一行を新たに追加できる。また、リスト内の一行が選択され“削除”(3087)ボタンがクリックされると、選択されたリスト内の一行のデータを削除できる。また、“登録・設計書出力”(3088)のボタンがクリックされると、後述の図19の処理が開始される。
設計情報参照及び編集画面出力部205は、最後にステップ1806で、通信インタフェース部104bを介して処理レスポンスをクライアント装置103に応答し、クライアント装置103の出力部103dにステップ1705で生成した設計情報参照及び編集画面308を表示させて処理を終了する。
上記処理によって、設計情報入出力装置102は、XML形式の設計情報310を読み込んで設計情報参照及び編集画面308として表示することができる。
図19は、設計情報編集処理部206の処理の一例を示すフローチャートである。設計情報編集処理部206は、設計情報定義体302と設計情報雛形303と設計情報310と設計書雛形304aを入力として、設計情報参照及び編集画面308で編集された設計情報310(図6)と設計書304c(図7C)を出力する。
ステップ1901で、設計情報参照及び編集画面308に表示された“登録・設計書出力”(3088)ボタンがクリックされるとクライアント装置103の入力部103bから指示が発生し、この指示を契機に処理が開始される。
ステップ1902では、設計情報編集処理部206が、設計情報参照及び編集画面308の“ファイル種別”(3081)の値を、要素“genericRule”(3021)の属性“localName”の値に持つ設計情報定義体302を記憶部102cから読み込む。
ステップ1903では、設計情報編集処理部206が、記憶部102cに登録されている設計書メタ情報301のファイルの中から、ステップ1902で読み込んだ設計書メタ情報301の“ファイル種別”(3081)の“英字名”と同じ値を設計情報雛形303の要素“documentCls”の属性“name”の値に持つ設計情報雛形303のファイルを記憶部102cから読み込む。
ステップ1904では、設計情報編集処理部206が、まず設計情報雛形303の要素“documentCls”(3031)の属性“fileName”の値に、設計情報参照及び編集画面308の“ファイル名”(3082)を設定する。
次に、設計情報編集処理部206は、ステップ1902で読み込んだ設計情報定義体302を利用して、設計情報参照及び編集画面308から単数項目または複数項目の値を読み込んで所定の変数に代入し、ステップ1903で読み込んだ設計情報雛形303に変数の値を設定してXML形式の設計情報310を生成する。
なお、設計情報編集処理部206は、設計情報参照及び編集画面308から単数項目または複数項目に該当するステップ1902で読み込んだ設計情報定義体302の要素“singleItemKey”(3024)または要素“listItemKey”(3025)の属性“mandatory”の値が、“true”であるにも関わらず、設計情報参照及び編集画面308で単数項目または複数項目の値が入力されなかった場合、または消去されて無い場合はエラーを出力する。
設計情報編集処理部206は、単数項目について、設計情報定義体302の要素“key”の属性“type”の値が“single”である場合、設計情報定義体302の要素“singleItemKey”(3024)とこの属性“localName”と同じ名前をヘッダに持つ値を設計情報参照及び編集画面308から取得する。設計情報編集処理部206は、取得した値を、設計情報定義体302の、要素“designSpecification”(3023)の属性“sheetCls”の値と、要素“key”の属性“name”の値と、要素“singleItemKey”(3024)の属性“name”の値を“.”で連結した形式で変数を生成して値を代入する。以上の処理を設計情報定義体302の要素“singleItemKey”の数だけ繰り返す。
設計情報編集処理部206は、複数項目について、設計情報定義体302の要素“key”の属性“type”の値が“list”である場合、設計情報定義体302の要素“listItemKey”(3025)とこの属性“localName”と同じ名前をリストのヘッダに持つカラムの複数の値を設計情報参照及び編集画面308から取得する。
設計情報編集処理部206は、取得した値を、設計情報定義体302の、要素“designSpecification”(3023)の属性“sheetCls”の値と、要素“key”の属性“name”の値を“.”で連結した形式で変数を生成する。この変数はリストオブジェクトであり、設計情報定義体302の要素“listItemKey”(3025)の属性“name”の値を名前とした変数を作成して、前記設計情報参照及び編集画面308から取得した値を登録する。
設計情報編集処理部206は、以上のようにして生成した変数の値を、設計情報雛形303の“$”の変数を対応する値に置き換えて、設計情報310を生成する。なお、設計情報310内の“#foreach( $member in $XXXX)”と“#end”で囲まれた部分の処理は上記ステップ1507の処理と同様である。
以上のようにして、設計情報編集処理部206は、設計情報参照及び編集画面308から編集後のXML形式の設計情報310を生成する。
ステップ1905では、設計情報編集処理部206が、ステップ1904で生成した設計情報310を記憶部102cに格納して、編集されたデータで設計情報310を更新する。なお、設計情報編集処理部206は、XML形式の設計情報310をデータベースの一つのカラムに格納することができる。
ステップ1906では、設計情報編集処理部206が、予め記憶部102cにファイル種別毎に格納されている設計書雛形304aを、設計情報参照及び編集画面308の“ファイル種別”(3081)の値を元に特定して記憶部102cから読み込む。
ステップ1907では、設計情報編集処理部206が、ステップ1902で読み込んだ設計情報定義体302を用いて、ステップ1904で生成した設計情報310からステップ1906で読み込んだ設計書雛形304aを更新することによって、設計情報参照及び編集画面308で編集された設計情報310を反映した設計書304cを生成する。
具体的に単数項目の場合、設計情報編集処理部206は、設計情報310の要素“singleItems”(3033)の属性“name”の値と同じ値を持つ設計情報定義体302の要素“key”を特定した上で、設計情報310の要素“singleItems”(3033)に含まれる各要素の値と同じ値を属性“name”に持つ(特定した要素“key”内の)要素“singleItemKey”(3024)を特定する。
この要素“singleItemKey”(3024)内の要素“cellLine”からスプレッドシートの行と、要素“cellColumn”からスプレッドシートの列を取得し、設計情報310の要素“singleItems”(3033)に含まれる各要素の値を、ステップ1906で読み込んだ設計書雛形304aに取得した行と列で特定されるセルに反映する。
次に複数項目の場合、設計情報編集処理部206は、設計情報310の要素“listItems”(3037)の属性“name”の値と同じ値を持つ設計情報定義体302の要素“key”を特定する。そして、設計情報編集処理部206は、設計情報310の要素“member”に含まれる各要素の値と同じ値を属性“name”に持つ(特定した要素“key”内の)要素“listItemKey”(3025)を特定する。
設計情報編集処理部206は、この要素“listItemKey”(3025)内の要素“cellLine”からスプレッドシートの行と、要素“cellColumn”からスプレッドシートの列を取得し、設計情報310の要素“member”に含まれる各要素の値を、ステップ1906で読み込んだ設計書雛形304aに取得した行と列で特定されるセルに反映する。
また、設計情報編集処理部206は、設計情報310の要素“documentCls”(3031)の属性“date”の値にこの処理時の年月日日時分秒を例えば“YYYY/MM/DD/HH:MM:SS”の形式で設定する。
ステップ1908では、設計情報編集処理部206が、ステップ1907で生成した設計書304cを、記憶部102cに格納し、通信インタフェース部104bを介してデータ転送処理を行い、クライアント装置103の記憶部103cに登録する。
なお、設計情報編集処理部206は、ステップ1907で生成した設計書304cを、ユーザが例えばクライアント装置103上の表計算部211で編集し、これを設計書304bとしてもよい。
設計情報編集処理部206は、最後にステップ1908で出力部103dに処理が完了したメッセージを出力する。
上記処理によって、設計情報参照及び編集画面308で編集された設計情報310がXML形式のデータとして記憶部102cに格納され、さらに設計情報310はスプレッドシートの設計書304cに変換されてクライアント装置103へ出力される。
以上、本発明を実施するための最良の形態などについて具体的に説明したが、本発明はこれに限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能である。
こうした本実施例1によれば、システム開発において作成される様々な設計書に柔軟に対応可能でありカスタマイズ容易なスプレッドシート形式の設計書の入出力システム100を実現できる。
本実施形態のスプレッドシート形式の設計書304bを格納する記憶部102cにおいて、設計情報310を格納するにあたり、XMLファイルとして格納する、データベースの一カラムに格納する、またはXMLデータベースに格納する、としてもよい。
本実施形態のスプレッドシート形式の設計書304bを格納する記憶部102cにおいて、設計書304bはXML形式としたが、XML(Extensible Markup Language)と同様に半構造データ形式であればJSON(JavaScript Object Notation(JavaScriptは登録商標))など、であってもよい。
また、スプレッドシート形式は表計算部(表計算ソフトウェア)210、211によって生成された情報であり、行と列の識別子を有するセルと、複数のセルを有するシートを含んで構成されればよい。
また、上記ではスプレッドシート形式の設計書304bに本発明を適用する例を示したが、設計書に限定されるものではなく、スプレッドシート形式の情報をXML形式に変換して編集、検索するものであればよい。この場合、上記実施例1の設計書304bを入力情報と読み替え、設計情報定義体302を入力情報定義体とし、設計情報雛形303を変換情報雛形と読み替えればよい。