TOPサーバ構築・運用> XMLデータ構造の設計
作って学ぶXMLデータベースNeoCore XMS実践
作って学ぶXMLデータベースNeoCore XMS実践

第2回:半定型文書を扱うシステムを設計する
著者:ウルシステムズ  小松 要   2006/3/17
前のページ  1  2  3   
XMLデータ構造の設計

   ここから目的とするシステムの機能を実現するために必要なXMLデータ構造を検討していきます。つまり、提案書全体は非定型文書であるXMLデータとし、その内に自動処理可能な定型の構造を表現し、システムで処理できるようにします。


提案書全体のXML構造

   提案書を表現する非定型のXMLデータとしては、プレゼンテーションツールのデータフォーマットをそのまま使うことにします。プレゼンテーションツールとして、通常の保存形式としてXMLを採用しているOpenOffice.orgのImpressを使用することにします。このImpressは、Microsoft PowerPointと同様の機能を持つプレゼンテーションツールで、自由に提案書を作ることができます。

   Impressでは、XMLベースのオフィス文書フォーマットの国際基準であるODF(Open Office Format)を採用しており、Impressを使って作成された文書は、ZIP圧縮されたcontent.xmlやstyles.xmlなどのXMLファイルから構成されます。なお、Impress文書を構成する各ファイルの説明に関しては、OpenOffice.orgのサイトを参照ください。


   Impressで作成された提案書を構成するXMLデータをXMLデータベースに蓄積することで、提案書の定型部分に対する処理を行います。



定型部分のXML構造

   今回のシステムでは、提案資料に対して余計な編集を加えずに登録しても、後の処理に繋げられるというところが重要になります。このためXMLフォーマットの定義を勝手に拡張して定型部分を定義するのではなく、通常のImpressユーザに許されている操作の中で、XMLに反映される情報を使うことで定型部分を実現します。

   一覧表示の対象となる、お客様名、提案タイトル、提案日、営業拠点、担当営業名、提案機種、見積もり金額の情報をXMLデータから取り出すために、オブジェクト名を指定する機能を使います。Impressでは各図形要素に対してオブジェクト名を与えることができます。それぞれのデータを入力するテキスト枠に対応するオブジェクト名をつけておけば、XMLとしては属性として表現されますので、この構造上の特徴からデータを取り出せます。

   機密情報については、スタイルを定義することにします。Impressでは各図形要素に対してスタイルを定義できますが、このシステムでは「機密」スタイルを適用したものを機密データとして扱うことにします。スタイルを定義し、テキスト枠に適用することにより、XMLとしては、オブジェクト名と同様に属性として表現されます。お客様名、提案日、担当営業名は機密データになりますが、他の項目は機密になるとは限りません。これらはユーザの意志で自由に変更することができます。


定型部分のXMLの例

   図7にお客様名を記入するテキスト枠にオブジェクト名として「お客様名」を指定している例を示します。

オブジェクト名の指定
図7:オブジェクト名の指定
(画像をクリックすると別ウィンドウに拡大図を表示します)

   オブジェクト名を付与し作成した提案書のXMLデータ(content.xml)を以下に示します。

提案書のXMLデータ

<?xml version="1.0" encoding="UTF-8"?>
<office:document-content>
  <office:body>
    <office:presentation>
      <draw:page draw:name="page1" draw:style-name="dp1" draw:master-page-name="標準">
        <draw:frame draw:name="お客様名" draw:style-name="gr1">
          <draw:text-box>
            <text:p text:style-name="P1">
              <text:span text:style-name="T1">鈴木電気株式会社</text:span>
            </text:p>
          </draw:text-box>
        </draw:frame>
      </draw:page>
    </office:presentation>
  </office:body>
</office:document-content>


※注: サンプルのため、一部省略しています。

   このXMLデータ中から定型部分を取り出してくることができれば、提案状況の一覧表示が可能になるはずです。実際に、この提案書のXMLデータ(content.xml)をNeoCoreXMSデータベースにストアし、お客様名のところだけを検索してみることにしましょう。

   NeoCoreXMSには、データベースに格納されているデータに対してXQuery式を使って検索するためのツールが提供されています。XQuery式に関しての詳しい説明は次回に回しますが、XMLDBを検索するための式で、RDBのSQLに対応するものです。このツールを用いて、検索を行った結果が図8のようになります。お客様名が一覧表示されていることがわかります。

NeoCoreXMSデータベース検索結果
図8:NeoCoreXMSデータベース検索結果
(画像をクリックすると別ウィンドウに拡大図を表示します)


システム構成

   最後に、営業支援システムのシステム構成を検討します。

   提案書を登録・検索する機能は、複数拠点の担当営業から使用されますので、Webブラウザを用いて利用できるようにします。このために、Servletを使ってデータベースへのアクセスを行う3層レイヤのアーキテクチャを採用します。

   提案書のXMLデータは、NeoCoreXMSデータベースに格納され、Java経由で入出力することにします。サーブレットコンテナには、Tomcatを使用します。

システム構成図
図9:システム構成図
(画像をクリックすると別ウィンドウに拡大図を表示します)

   次回は、実際にNeoCoreXMSデータベースを構築し、営業支援システムで使用する検索式を決定していきます。

前のページ  1  2  3   


ウルシステムズ株式会社 小松 要
著者プロフィール
ウルシステムズ株式会社
小松 要

ビジネスとITのギャップを埋めるITコンサルティングを行うコンサルタント。お客様の現場に対してIT活用の最適解を常に提供するコンサルタントを目指し日々奮闘中。現在は、もっぱらXMLDBの可能性を模索中。


INDEX
第2回:半定型文書を扱うシステムを設計する
  前回では
  システムの実現イメージ
XMLデータ構造の設計