PEXA Modelについて

チュートリアル

定義ファイル

機能一覧

リファレンス

目次
  1. はじめに
  2. ExtendedFinder機能について
  3. ExtendedFinder定義ファイルの全体書式


はじめに

ExtendedFinderは、複数種類のデータモデルを一度に検索するための拡張機能です。
内容は異なりますがモデル定義ファイルと同じ拡張子となり、特殊なモデル定義として実行エンジン側で認識されます。
一つの検索条件で複数のデータモデルを一度に検索して、その結果を一つのリストにひとまとめにして返したいような場合に使用します。

この定義ファイルはPEXAプロパティ形式として記述されます。
このファイルはそのまま実行環境にてPEXAの実行エンジンにより読み込まれます。

プロパティ形式の書式については、リファレンスを参照して下さい。


ExtendedFinder機能について

この機能は、データベースをSQLで検索する際に使用できる外部結合に似た検索を行うためのものです。

ServiceのsearchプロセスなどでExtendedFinder名(resource宣言部で指定された名前)を指定すると、 このExtendedFinderの定義ファイル中で列挙されているデータモデル群が実際の検索対象モデルになります。

例えば、あるシステム内に以下のデータモデルが存在するとします。

  • PrescriptionOrderModel
  • SampleTestingOrderModel
  • LeaveHospitalOrderModel
これらは別々の独立したモデルですが、"Order"というステレオタイプを持ち、共通の業務項目をいくつか持っています。
それらのステレオタイプ共通の業務項目を検索条件として、ステレオタイプ"Order"のデータモデルを一括で検索して一覧表示したいような場合にこの機能を使用します。

機能イメージ:
「Order一覧」というExtendedFinderに対して、"OrderStatusFlag = REGISTED"という検索条件で検索を実行する。
Serviceは「Order一覧」という名前のデータモデル(に見えるExtendedFinder)に対して検索条件を指定してsearchプロセスを実行する。
ExtendedFinderは、定義ファイルの内容に従ってOrder一覧に含まれる全てのデータモデルを検索して結果を結合する。

                                                  ┌────────────┐
                                                  │Model                   │
                                         ┌──→ │PrescriptionOrderModel  │
                                         │       │                        │
                                         │       │OrderStatusFlag         │
                                         │       └────────────┘
                                         │              
┌────┐         ┌───────┐  │       ┌────────────┐
│        │search   │ExtendedFinder│  │       │Model                   │
│Service │実行     │「Order一覧」 │  │       │SampleTestingOrderModel │
│        ├───→ │              ├─┼──→ │                        │
│        │         │              │  │       │OrderStatusFlag         │
└────┘         └───────┘  │       └────────────┘
                        それぞれの       │      
                        モデルを検索     │       ┌────────────┐
                                         │       │Model                   │
                                         │       │LeaveHospitalOrderModel │
                                         └──→ │                        │
                                                  │OrderStatusFlag         │
                                                  └────────────┘
なお、ExtendedFinderの定義ファイルはモデル定義ファイルと同じ".model"という拡張子になります。
これは、ExtendedFinder定義がモデル定義の一種としてPEXA実行エンジンに認識されるためです。
検索処理を行うサービスから見ても、ExtendedFinderはデータモデルの一種として認識されます。


ExtendedFinder定義ファイルの全体書式

ExtendedFinder定義ファイルの全体構成について、以下に示します。
それぞれの属性、宣言部、セクションの詳細については、以降で解説します。

書式:

resource宣言部(1)
extendedセクション(1)

	
記述注:
    属性        あらかじめ決められた値を選択する(true/falseなど)
    宣言部      値または、値のリストを設定する
    セクション  入れ子で他の属性、宣言部、セクションを保持する可能性がある
                (値又は、値のリストが設定される場合もある)

    (1):必須
    (0|1):オプション
    (1以上):一個以上必須
    (0以上):0個以上(オプション)
記述例:
;;--------------------------------------------------
;; ModelName
;;--------------------------------------------------
resource        BoardModelList
;;-------------------------------------
;; O/R mapping
;;-------------------------------------
{extended
    {clns.share.proxy.BoardNo
        DiseaseBoardModel    DiseaseBoardModel
        ProblemBoardModel    ProblemBoardModel
    }
}

resource宣言部

説明:
このExtendedFinderに与えるシステム内でユニークなモデル名称です。

なお、ExtendedFinderもデータモデルの一種として扱われますので、ここで指定する名称は全てのデータモデル及びExtendedFinderを含めてユニークになる必要があります。
任意の文字列を指定できます。

記述:

resource        BoardModelList



extendedセクション

書式:

{extended
    ;;---------------------------------
    ;; IdentifiedFlag無しProxyの指定
    ;;---------------------------------
    proxyクラス名		マッピングされるデータ名
    proxyクラス名		マッピングされるデータ名
    proxyクラス名		マッピングされるデータ名
    ;;---------------------------------
    ;; IdentifiedFlag有りProxyの指定
    ;;---------------------------------
    {proxyクラスの指定セクション
        IdentifiedFlagの区分値    マッピングされるデータモデル名
        IdentifiedFlagの区分値    マッピングされるデータモデル名
        IdentifiedFlagの区分値    マッピングされるデータモデル名
                                :
                                :
    }
    {proxyクラスの指定セクション
        IdentifiedFlagの区分値    マッピングされるデータモデル名
        IdentifiedFlagの区分値    マッピングされるデータモデル名
        IdentifiedFlagの区分値    マッピングされるデータモデル名
                                :
                                :
    }
                :
                :
}
	
記述注:
    属性        あらかじめ決められた値を選択する(true/falseなど)
    宣言部      値または、値のリストを設定する
    セクション  入れ子で他の属性、宣言部、セクションを保持する可能性がある
                (値又は、値のリストが設定される場合もある)

    (1):必須
    (0|1):オプション
    (1以上):一個以上必須
    (0以上):0個以上(オプション)

記述例:

{extended
    ;;---------------------------------
    ;; IdentifiedFlag無しProxyの指定
    ;;---------------------------------
    clns.share.proxy.SampleNo1	SampleModel1
    clns.share.proxy.SampleNo2	SampleModel2
    ;;---------------------------------
    ;; IdentifiedFlag有りProxyの指定
    ;;---------------------------------
    {clns.share.proxy.BoardNo
        DiseaseBoardModel    DiseaseBoardModel
        ProblemBoardModel    ProblemBoardModel
    }
}

説明:
Proxyクラス及びIdentifiedFlagの各区分値に対してデータモデル名称を割り当てるセクションです。
ExtendedFinderが結合対象とするデータモデルのこの書式で列挙することにより、ServiceはこのExtendedFinderを検索対象にするだけで複数のモデルを一度に検索することが可能になります。

一つのExtendedFinderの中に、複数種類のProxyを混在させることが可能です。
また、IdentifiedFlagを持つProxyと持たないProxyも混在させることが可能です。


更新情報

  • 最終更新者 : $Author: morishita $
  • 最終更新日時 : $Date:: 2008-11-26 00:19:19 #$
  • バージョン : $Revision: 2798 $



Copyright © 2006, Atrris Corporation