PEXA Modelについて

チュートリアル

定義ファイル

機能一覧

リファレンス

目次
  1. はじめに
  2. 現象型の種別について
  3. 現象型の多重度について
  4. データモデルを表す現象型について
  5. 現象型定義ファイルの書式


はじめに

このドキュメントは、PEXAモデルフレームワークで使用される現象型定義について解説する物です。

現象型とは、業務システムが正式に取り扱う業務項目を表します。
業務項目に対してIDや名称、項目が保持する値のタイプなどをこの定義ファイルで宣言します。

この定義ファイルはXMLファイルとして記述され、ビルドツールを通すことでカタログHTMLファイルと現象型メタ情報ファイルが生成されます。 定義する単位としては、一つの業務項目に対して一つの現象型定義XMLファイルを作成することになります。


現象型の種別について

業務項目の種別として、PEXAでは以下の3種類のいづれかを指定します。

  • Measurement
  • Category
  • Combination
それぞれについて、以下で説明します。

Mesurement

Mesurementの現象型は、「量」を値として保持します。
「量」は動的な値を扱います。動的な値とは

  • 取りえる値が発散している。
  • 存在が業務オブジェクトの記述に依存する。
という値です。
単純な文字列情報、年月日などの日付情報、数値情報があてはまります。
このような場合、現象型定義内に値の型情報を記述します。 java.util.Dateやjava.lang.String、java.lang.Integer等が指定されます。

また、データモデルをシステム内でユニークに特定するためのProxyをとることもあります。 このProxyは別途定義ファイルが用意されており、具体的な内容についてはそちらで定義されます。 現象型定義では、あくまでどの「Proxy」にリンクするかが記述されるだけとなります。 Proxy定義の詳細はこちらを参照して下さい。
(ただし、値の型情報だけはやはり現象型定義内にも記述します。)

Mesurementの現象型の例としては、以下のようなものがあります。
例1)
現象型名 : 患者氏名
値 : PEXAロクロウ

例2)
現象型名 : 患者生年月日
値 : 1975/01/01

例3)
現象型名 : 患者身長
値 : 175(cm)

例4)
現象型名 : PrescriptionOrderNo
値 : データモデル「PrescriptionOrder」のProxy


Category

Categoryの現象型は、「現象」を値として保持します。
「現象」は静的な値を扱います。静的な値とは

  • 取り得る値が有限である。
  • 存在が業務オブジェクトの記述に依存しない。
という値です。
一般的な言葉としては「区分値」と置き換えても構いません。 フラグ的な情報や、数値に固定的な意味を割り当てるようなものを指します。

この「現象」については別途定義ファイルが存在しており、区分値の具体的な内容についてはそちらで定義されます。 現象型定義では、あくまでどの「現象」にリンクするかが記述されるだけとなります。 現象定義の詳細はこちらを参照して下さい。
(ただし、値の型情報だけはMesurement項目と同様に現象型定義内にも記述します。)

Categoryの現象型の例としては、以下のようなものがあります。
例1)
現象型名 : 患者性別
値 : 1なら男、2なら女

例2)
現象型名 : RemovedFlag
値 : trueならREMOVED, falseならNOT_REMOVED


Combination

Combinationの現象型は、ある現象型の組となる「複合現象型」を値として保持します。
「複合現象型」はデータモデル(型はpexa.share.concept.Updatable)となりますので、 例えばSheet-Meisai構造のデータモデルで親モデルから子モデルを取得するような現象型を定義する場合にtypeでCombinationを指定します。

ここで指定されるデータモデルはモデル定義ありの「名前有り」データモデルと、アドホックにテンポラリ的に生成される「名無し」データモデルの場合があります。
「名前有り」データモデルを指定する場合は、現象型定義内でデータモデル名称を指定します。
「名無し」データモデルの場合は名称は指定しませんが、その中に含まれる現象型があらかじめ静的に決まっている場合はそれらを一つずつ記述することも出来ます。

Combinationの現象型の例としては、以下のような物があります。

例1)
現象型名 : PrescriptionOrder
値 : PrescriptionSheet(親データモデル)に紐尽くPrescriptionOrder(子データモデル)



現象型の多重度について

業務項目に対する必須設定の一つとして、多重度というものがあります。
これは以下の2種類のいづれかを指定します。

  • Single
  • Multiple
Singleと指定した場合は、その現象型の値は単値になりますので、現象型定義で指定された型のオブジェクトがそのまま値として返ります。

Multipleと指定した場合は、その現象型の値は複値になりますので、現象型定義で指定された型のオブジェクトの配列が値として返ります。java.util.Listにはならないので注意して下さい。

なお、Multiple Combinationとなる現象型の場合について特に注意して下さい。
上記のルールに従いこの場合はpexa.share.concept.Updatableの配列となります。


データモデルを表す現象型について

PEXA1以降では、Sheet-Meisai構造のような親子関係を持つデータモデルを定義できるようになっています。
このような場合、親モデル側に子モデルを取得するための現象型を定義することになるのですが、PEXAのバージョン毎に現象型の定義方法が変わっています。 PEXA2までとPEXA3以降で以下のようになっていますので使い分けに気をつけて下さい。

バージョン type 型指定 備考
PEXA1&PEXA2 Mesurment pexa.share.concept.Updatable PEXA側がデータモデルを指定するための現象型の仕組みを提供していなかったので、便宜上このようになっていた。
PEXA3以降 Combination 無し PEXA側でデータモデルを指定する現象型をサポート。データモデル名も現象型定義内で指定できる。


現象型定義ファイルの書式

以降で、現象型定義ファイルの書式について解説します。

現象型定義ファイルは、XML形式で記述します。
ルートタグのphenomenontypeタグで、seqno属性に現象型のIDを指定します。

記述例:

<?xml version="1.0" encoding="Windows-31j"?>
<!--
 COPYRIGHT
 -->
<!DOCTYPE phenomenontype SYSTEM "../doctype/ptype.dtd">
<!--==================================================
 == Current-Module:   $HeadURL: http://pexa.atrris.com/repos/trunk/doc/material/developGuide/model/xdocs/ja/pexa_model_definition_ptype.xml $
 == Release-Date:     $Date:: 2009-01-24 19:17:52 #$
 == Release-Version:  $Revision: 3139 $
 == First-Created-On: 2007/04/27
 == First-Created-By:
 == Copy-Right-Owner:
 ==================================================-->
<!-- 現象型  -->
<phenomenontype seqno="PT9000001">
     :
     :
     :
</phenomenontype>
このIDはシステム内でユニークになるIDを割り当てて下さい。
なお、通番に関する標準的な命名規則についてはこちらを参照して下さい。

内部は以下のセクションに分割されています。 現象型のtype指定によってdefinitionセクションの内部フォーマットが若干変わってきますので、その点に注意して下さい。


identityセクション

記述例 :

<identity name="VersionNumber"
          type="Measurement"
          multiple="Single"
          dispName="バージョン番号"
          columnName="VERSION_NUMBER"
          columnType="integer"/>

説明 :
現象型の識別情報を記述します。
現象型名称やtype,多重度などを指定します。

なお、この現象型の値をDBに保存する場合の、DBカラムのデフォルト設定をここで指定することが出来ます。
カラム名については、Oracleの制限に合わせて30以内にしておくのが無難です。
カラムタイプについてはここで指定できるのはTable定義カラムセクションで指定できる型となります。
詳細はこちらを参照してください。

属性値 :
identityタグの属性値は以下の通り。

属性値名 説明 形式 必須/非必須
name 現象型名の指定です。
この名称は必ずシステム内でユニークになる必要があります。
文字列 必須
type 現象型の種別指定です。
詳細はこちらを参照。
Measurement,
Catelogory,
Combination
必須
multiple 現象型の多重度指定です。
詳細はこちらを参照。
Single,
Multiple
必須
dispName 現象型の表示名称指定です。
現象型名とは別の名称を指定できますので、例えば現象型名は英字で統一するがdispName側には分かりやすい日本語名を付けておくといった指定が出来ます。
文字列 必須
columnName DB上での対応カラム名の指定です。
標準的なカラム名をあらかじめ決めておける場合は、ここで指定しておくことでモデル定義の記述を省略することが出来ます。
文字列 非必須
columnType DB上での対応カラムの型指定です。
標準的なカラムの型をあらかじめ決めておける場合は、ここで指定しておくことでモデル定義の記述を省略することが出来ます。
ここで指定できる型名については、テーブル定義ガイドに記載されているカラム型指定タグの説明を参照してください。
文字列 非必須


abstractセクション

記述例 :

<!-- 概要  -->
<abstract>
    データモデルのコミット時に整合性チェックのために参照されるバージョン番号です。
</abstract>

説明 :
現象型の概要説明を記述します。
文字列で自由に記述して下さい。


definitionセクション

記述例 : MeasurementでProxyの場合

<!-- 定義 -->
<definition>
    <!-- 観測  -->
    <observation>
        <!-- 測定 -->
        <observationValue>
            <proxy seqno="PX9000002" href="PX9000002.xml" />
        </observationValue>
        <!-- 手続き/情報源 -->
        <method>
        </method>
    </observation>
    <!-- 詳細 -->
    <description>
        Proxyを値としてとる現象型のサンプルです。
    </description>
</definition>
記述例 : Measurementで一般的な型の場合
<!-- 定義 -->
<definition>
    <!-- 観測  -->
    <observation>
        <!-- 測定 -->
        <measurement>
            <class classname="java.lang.Integer" />
        </measurement>
        <!-- 手続き/情報源 -->
        <method>
        </method>
    </observation>
    <!-- 詳細 -->
    <description>
        データモデルのコミット時に整合性チェックのために参照されるバージョン番号です。
    </description>
</definition>
記述例 : MeasurementでValidation指定がある場合
<!-- 定義 -->
<definition>
    <!-- 観測  -->
    <observation>
        <!-- 測定 -->
        <measurement>
            <class classname="java.lang.Integer" />
            <validation minimum="0" maximum="128" />
        </measurement>
        <!-- 手続き/情報源 -->
        <method>
        </method>
    </observation>
    <!-- 詳細 -->
    <description>
        データモデルのコミット時に整合性チェックのために参照されるバージョン番号です。
    </description>
</definition>
記述例 : Categoryの場合
<!-- 定義 -->
<definition>
    <!-- 観測  -->
    <observation>
        <!-- カテゴリ観測 -->
        <category>
            <phenomenon seqno="PH9000001" href="PH9000001.xml" />
        </category>
        <!-- 手続き/情報源 -->
        <method>
        </method>
    </observation>
    <!-- 詳細 -->
    <description>
        データモデルが有効であることを表すフラグです。
    </description>
</definition>
記述例 : Combinationで名前有りモデルの場合
<!-- 定義 -->
<definition>
    <!-- 観測  -->
    <observation>
        <!-- 複合観測 -->
        <combination resource="SampleMeisai"/>
        <!-- 手続き/情報源 -->
        <method>
        </method>
    </observation>
    <!-- 詳細 -->
    <description>
    SampleMeisaiモデルによって表されるCombination項目
    </description>
</definition>
記述例 : Combinationで名無しモデルの場合
<!-- 定義 -->
<definition>
    <!-- 観測  -->
    <observation>
        <!-- 複合観測 -->
        <combination>
            <ptype seqno="PT9000001" href="PT9000001.xml" />
            <ptype seqno="PT9000002" href="PT9000002.xml" />
        </combination>
        <!-- 手続き/情報源 -->
        <method>
        </method>
    </observation>
    <!-- 詳細 -->
    <description>
        名無しモデルのCombination現象型サンプルです。
    </description>
</definition>

説明 :

現象型がとる値についての詳細情報を定義するセクションです。
以下のサブ要素があります。

observationタグ

現象型がとる値についての詳細定義を記述します。
現象型種別などの組み合わせにより、以下のタグで構成されます。


observationValueタグ

現象型がPEXAのProxyとリンクするMeasurementの場合に指定します。
配下にproxyタグでProxy定義とのリンクを記述します。

proxyタグの属性値は以下の通り。

属性値名 説明 形式 必須/非必須
seqno リンクするProxyの通番を指定します。 文字列 必須
href リンクするProxy定義のXMLファイル名を指定します。 文字列 必須

measurementタグ

現象型が一般的な型の値とリンクするMeasurementの場合に指定します。
配下にclassタグで値オブジェクトのクラス名を記述します。

classタグの属性値は以下の通り。

属性値名 説明 形式 必須/非必須
classname 現象型がとる値のクラス名を指定します。 文字列 必須

また、静的に指定できる最大値、最小値が存在する場合は、validationタグを使用してここで指定することが出来ます。

validationタグの属性値は以下の通り。

属性値名 説明 形式 必須/非必須
minimum 現象型がとる値の最小値を指定します。 文字列 非必須
maximum 現象型がとる値の最大値を指定します。 文字列 非必須

categoryタグ

現象型がCategoryの場合に指定します。
配下にphenomenonタグで現象定義とのリンクを記述します。

phenomenonタグの属性値は以下の通り。

属性値名 説明 形式 必須/非必須
seqno リンクする現象の通番を指定します。 文字列 必須
href リンクする現象定義のXMLファイル名を指定します。 文字列 必須

combinationタグ

現象型がCombinationの場合に指定します。
名前有りのモデルを指定する場合は、combinationタグのresource属性でモデル名を指定します。

combinationタグの属性値は以下の通り。

属性値名 説明 形式 必須/非必須
resource データモデル名を指定します。 文字列 非必須

名無しモデルを指定する場合は、combinationタグの配下にptypeタグを列挙して、内部で保持する現象型を指定できます。

ptypeタグの属性値は以下の通り。

属性値名 説明 形式 必須/非必須
seqno 内部で保持する現象型の通番を指定します。 文字列 必須
href 現象型定義のXMLファイル名を指定します。 文字列 必須

method

現象型の値の取得に関する手続きが存在する場合に記述します。


descriptionタグ

現象型がとる値についての詳細説明を記述します。
文字列で自由に記述して下さい。



metadataセクション

記述例

<!-- メタデータ -->
<metadata>
    <!-- ターゲットバリュータイプ -->
    <targetvtype>pexa.share.util.business.ValidityFlag</targetvtype>
    <!-- 現象をマスターから引く場合のJNDIパス -->
    <namingpath></namingpath>
    <masterpath></masterpath>
    <builderpath></builderpath>
    <finderpath></finderpath>
    <metainfo href=""></metainfo>
</metadata>

説明 :

現象型に関する詳細なメタ情報を記述するセクションです。

現在、このセクション内で実際に使用されているのはtargetvtypeのみです。

targetvtype

現象型が、現象もしくはProxyにリンクする場合にその実装クラス名をタグに挟んで指定します。
それ以外の場合は記述不要です。


namingpath

現在使用されていません。


masterpath

現在使用されていません。


builderpath

現在使用されていません。


finderpath

現在使用されていません。


metainfo

現在使用されていません。



statusセクション

記述例 :

<status>
    <author>$Author: morishita $</author>
    <datetime>$Date:: 2009-01-24 19:17:52 #$</datetime>
    <version>$Revision: 3139 $</version>
</status>

説明 :
定義ファイルの編集情報を記述するセクションです。
バージョン管理システムの置換キーワードなどと連携して使用してください。

セクション内の子要素 :
以下の子要素があります。

authorタグ

タグの間にはさんで、ファイルの編集者を記述します。


datetimeタグ

タグの間にはさんで、ファイルの編集日時を記述します。


versionタグ

タグの間にはさんで、ファイルのバージョンを記述します。



更新情報

  • 最終更新者 : $Author: morishita $
  • 最終更新日時 : $Date:: 2009-01-24 19:17:52 #$
  • バージョン : $Revision: 3139 $



Copyright © 2006, Atrris Corporation