XMLDB開発支援
HOME  >  XMLDB開発支援  >  作って学ぶXMLデータベースNeoCore XMS実践 第2回

作って学ぶXMLデータベースNeoCore XMS実践 第2回

2006年11月15日 更新
第2回:半定型文書を扱うシステムを設計する 著者:ウルシステムズ  小松 要   2006/3/17



前回でXMLデータベースに適しているシステムには、半定型文書を扱うシステムがあることを説明しました。半定型文書というのは、全体的には自由に編集できる非定型の文書ですが、一部に自動処理の対象となる共通の構造を持つような文書のことです(図1)。

半定型文書

▲図1:半定型文書

そして、営業支援のためのシステムとして、半定型文書である提案書を扱うシステムの企画を行いました。

第2回目では、企画したシステムを実現するために、提案書を表現するXMLをどのように扱い、どのような構成のシステムにするかを検討します。


システム概要の設計

まずはユースケースを検討し、必要になる機能要件と半定型文書である提案書に求められる構造要件をまとめます。

必要な機能を洗い出す

最初にユースケースを検討し、営業支援システムに求められる機能の洗い出しを行います。ここでの作業は、RDBを使った通常のシステム開発の場合とかわりません。今回のシステムの主要なユースケースは以下のようになります。

  1. 担当営業は、システムに提案書を登録する
  2. 担当営業および営業マネージャーは、システムに登録されている提案書の概要を一覧表示する。一覧表示する項目は、提案日、お客様名、営業拠点、機種、見積もり金額など
  3. 担当営業は、システムに登録されている提案書を検索し、その内容を取得する。取得した提案書にお客様名などの機密情報は表示されない

▲表1:今回の主要なユースケース

表1のユースケースを実現するために必要な機能を洗い出します。ここでは、図2に示すように提案書登録、提案状況一覧、提案書検索の3つの機能を用意することにします。

営業支援システム概要図

▲図2:営業支援システム概要図(画像をクリックすると別ウィンドウに拡大図を表示します)

提案書登録機能
  • 利用者のPCから提案書をアップロードする機能
  • 提案書のデータをXMLデータベースに格納する機能
提案状況一覧機能
  • 一覧する条件を入力する機能
  • 入力された一覧条件に合致する提案の概要情報を一覧表示する機能
提案書検索機能
  • 参照したい提案書を検索する条件を入力する機能
  • 入力された検索条件に合致した提案書を一覧表示する機能
  • 検索結果の一覧から指定された提案書をダウンロードする機能

▲表2:営業支援システム概要図

半定型文書としての提案書の設計

続いて提案書をどう扱うかについて検討します。

今回のシステムでは、提案書を半定型文書として扱いますので、全体的に非定型ですが、定型の部分が含まれます。それぞれについて設計していきましょう。

この会社では提案書作成のためのツールとして、一般的なプレゼンテーションツールを使用しているものとします。担当営業は、このプレゼンテーションツールを使用して自由に提案書を作成することができます。デザインも内容も顧客にあわせて作成することができるので、非定型文書ということができます。

次に定型の部分を検討します。提案書を自由に作ることができるといっても、提案することが目的ですから内容には共通の項目があります。例えば次のような項目です。

  • お客様名
  • 提案タイトル
  • 提案日
  • 営業拠点
  • 担当営業名
  • 提案機種
  • 見積もり金額

▲表3:提案書に必要な項目例

これらの項目が提案書の定型部分として自動処理できるようになれば、全体的には自由に編集できる非定型文書でありながら、部分的に定型である半定型文書として扱えるようになります。


システムの実現イメージ

次に画面遷移を中心にして、具体的に構築したいシステムのイメージを明確にします。

提案書の作成と登録

担当営業はプレゼンテーションツールを使って提案書を作成しますが、その際に共通項目の情報を記入するためのページを持ったテンプレートを利用します。ページ中の決められた枠の中に記入された情報が共通データとの値として取り出されます。図3にお客様名、提案日、営業拠点、担当営業名の情報を入力している様子を示します。

提案書の作成

▲図3:提案書の作成(画像をクリックすると別ウィンドウに拡大図を表示します)

次に、Webブラウザを用いて提案書の登録画面を開きます。提案書ファイルを選択して送信ボタンを押すと提案書のデータがシステムに登録されます(図4)。

提案書登録機能

▲図4:提案書登録機能(画像をクリックすると別ウィンドウに拡大図を表示します)

提案状況一覧の表示

Webブラウザを使って一覧条件の入力画面を呼び出します。ここで条件を入力することで登録されている提案情報が一覧表示されます(図5)。

提案状況一覧機能

▲図5:提案状況一覧機能(画像をクリックすると別ウィンドウに拡大図を表示します)

提案書の検索

Webブラウザを使って提案書条件の入力画面を呼び出します。ここで条件を入力することで登録されている提案書一覧が表示され、そこからリンクを選択することで提案書がダウンロードできます(図6)。

提案書検索機能

▲図6:提案書検索機能(画像をクリックすると別ウィンドウに拡大図を表示します)


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のサイトを参照ください。

OpenOffice.org
http://openoffice-docj.sourceforge.jp/tr/translated/xml.html#4

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

定型部分のXML構造

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

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

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

定型部分のXMLの例

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

オブジェクト名の指定

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

オブジェクト名を付与し作成した提案書のXMLデータ(content.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データ中から定型部分を取り出してくることができれば、提案状況の一覧表示が可能になるはずです。実際に、この提案書のXMLデータ(content.xml)をNeoCoreXMSデータベースにストアし、お客様名のところだけを検索してみることにしましょう。

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

NeoCoreXMSデータベース検索結果

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


システム構成

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

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

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

システム構成図

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

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

▲このページのTOPへ

  • XMLとは?IT初心者でもすぐわかるXML超入門
  • 無償で使える!XMLDB「NeoCore」
  • サイバーテック求人情報
  • メールマガジン申し込み
  • TEchScore

  • ▲NeoCoreについて記載されています!

  • ▲XMLマスター教則本です。試験対策はこれでばっちり!
Copyright (c) CyberTech corporation ltd. All ights Reserved. | サイバーテックについて | ご利用ガイド