PEXA Supportについて

PEXAプロパティ

トランスレータ

印刷フレームワーク

AETフレームワーク

ワークフロー

動的フォーム

変換フレームワーク

テンプレートエンジン

カレンダー

タスクスケジューラー

目次

  1. はじめに
  2. 項目メタ情報
    1. フォームメタ(DF_Form)
    2. 項目メタ(DF_Item)
    3. 項目区分値(DF_ItemCategory)
  3. 入力値を保存するデータモデル
  4. コンポーネントタグとCommand命令
  5. 動的フォーム実行の流れ
    1. 動的フォームのセットアップ
    2. 動的フォームの入力確定
  6. 動的フォーム展開例


はじめに

このドキュメントは、動的フォームフレームワークのアーキテクチャについて解説する物です。

動的フォームフレームワークは、項目メタ情報に従って、独特の処理フローで入力フィールドの配置、制御を行います。
このドキュメントに一通り目を通して全体構成を把握した上で利用して下さい。


項目メタ情報

図1:項目メタ情報のデータモデル構成

動的フォームフレームワークでは、フォーム上で取り扱う項目のメタ情報を記録するデータモデルを使用します。
ここでは、具体的にどのようなデータモデルがあるのか解説します。

モデルID モデル名 提供レベル 説明
DML_PEXA_930001 DF_Form PEXA 項目メタのヘッダとなるデータモデルです。
動的フォームで実現する入力フォームで扱う項目の集まりを表します。
DML_PEXA_930002 DF_Item PEXA 項目メタ情報を表すデータモデルです。
動的フォームで実現する入力フォームで扱う項目の集まりを表します。
DML_PEXA_930003 DF_ItemCategory PEXA 項目の入力値がとりうる区分値を表すデータモデルです。
項目メタでDF_ItemCategory=CATEGORYに設定された場合に必ず登録する必要があります。
フォームメタ(DF_Form)

フォームメタ(DF_Form)は、動的フォームを使用して扱いたい入力項目のまとまりを表します。
項目メタのヘッダとなり、項目の配置に関するツリー構造やフラットな項目情報リストなどを返す項目が用意されます。

現象型名 説明
DF_FormNo フォームメタのプライマリキー
DF_FormName フォーム名
DF_FormDescription フォームに関する説明コメント
DF_FormItemList フォーム直下のItemを表す明細リスト。
ツリー構造として取得したい場合はこの現象型から項目メタを引くこと。
DF_FieldItemList フォームにぶら下がる全てのItemのうち、入力フィールドに直接マッピングされるItemをフラットに並べたリスト。
Combination項目を省いて実際の入力項目となるものだけ取得した場合はこの現象型から項目メタを引くこと。

項目メタ(DF_Item)

項目メタ(DF_Item)は、動的フォーム上で取り扱う項目の存在を定義するメタ情報です。
項目名、項目タイプ、値タイプ、初期値、必須・非必須といった、動的フォームが入力フィールドを配置するに当たって必要な制御情報を設定します。

現象型名 説明
DF_ItemNo 項目メタのプライマリキー
DF_ItemName 項目名。DF_ItemDispNameが設定されていない場合はこの名称が項目名ラベルに表示される。
DF_ItemDispName側でラベル表示用の名称を設定しておくことで、Combination配下の子項目の場合に
親項目名_子項目名などのわかりやすい名前にしておくこともできる。
DF_ItemDispName 項目名の表示用の名前。
この情報を設定しておくと、入力フィールドとペアで配置される項目名ラベルにこちらの名称が表示される。
この情報が設定されていない場合はDF_ItemNameが項目名ラベルに表示される。
DF_ItemPatternName 項目のパターン種別名称。実行エンジン側では特に使用しません。
例えば、上限値系項目、基準値系項目、下限値系項目といった、項目の種別を表す名称を設定しておくことで、
メタデータのメンテナンス画面で検索条件に使用すると言った利用方法が考えられます。
DF_ItemDescription 項目に関する説明コメント。
DF_ItemSortOrder 動的フォーム上に配置される項目入力フィールドの並び順です。
DF_Form直下の項目の場合はフォーム上での並び順となり、Combination配下の子項目の場合はフィールドグループ上での並び順になります。
DF_FormNo 項目メタが所属するDF_Formを指す外部キー。
DF_Form直下、Combination配下のどちらの場合も必ずこの項目は設定する。
DF_ParentFormNo DF_Form直下の項目メタが、どのフォームにぶら下がっているかを指す外部キー。
Combination配下の項目メタの場合は設定しないこと。
DF_ParentItemNo Combination直下の項目メタが、どのCombination項目にぶら下がっているかを指す外部キー。
DF_Form直下の項目メタの場合は設定しないこと。
DF_ItemTypeCategory 項目の種別区分。以下の3つのうちのいずれかを設定する。
  • MEASUREMENT : 入力内容をそのまま保存するタイプの項目。名前、数量など。
  • CATEGORY : 選択肢から選んで入力するタイプの項目。種別、区分、フラグなど。
  • COMBINATION : 子項目を抱える親項目。項目のグルーピングを行う場合に使用する。
DF_ValueTypeCategory DF_ItemTypeCategoryでMEASUREMENTを指定された場合に設定する値種別。以下の2つのうちのいずれかを設定する。
  • STRING : 自由入力文字列
  • DECIMAL : 数値
DF_ItemRequiredFlag 入力が必須であるかを表すフラグ。
必須となる場合、入力フィールドの背景色設定及び入力確定時の入力チェックが行われる。
DF_ItemDefaultValue 動的フォームの初回表示時におけるデフォルト値。
DF_ItemCategoryList DF_ItemTypeCategory=CATEGORYの場合に必ず設定する項目区分値のリスト。
後述のDF_ItemCategoryデータモデルのリストとなる。
DF_CombinationItemList DF_ItemTypeCategory=COMBINATIONの場合に必ず設定する子項目メタのリスト。 子項目を表すDF_Itemデータモデルのリストとなる。

項目区分値(DF_ItemCategory)

項目メタ(DF_Item)のDF_ItemTypeCategory=CATEGORYの場合に必ず設定する、入力値として選択できる区分値の情報です。

現象型名 説明
DF_ItemCategoryNo 項目区分値のプライマリキー。
DF_ItemCategoryName 項目区分値の名称。項目の入力フィールド上での入力値そのものとなる。
DF_ItemCategoryDescription 項目区分値の説明コメント。
DF_ItemCategorySortOrder 項目区分値の並び順。
DF_ItemNo 項目区分値がぶら下がる項目メタ(DF_Item)を指す外部キー。


入力値を保存するデータモデル

項目メタ情報に従って動的フォームの仕組みで展開された入力フォームに、アプリケーションのユーザーが入力操作を行います。
この時に入力された値をデータベースに保存するために、入力値を記録するデータモデル(以下、入力値モデル)を用意する必要があります。

入力値モデルの定義内容

入力値モデルは各プロジェクト毎に必要に応じて作成します。
1プロジェクト内で複数種類用意し、例えば

  • 製造工程スペック設定値モデル
  • 印刷号機設定値モデル
  • 印刷作業指示設定値モデル
など、入力フォームで取り扱う内容毎に別々に用意するのが基本となります。

この入力値モデルはKey&Value形式で値を保持することを想定しています。
KeyはDF_ItemNoを指す現象型となり、Valueは入力フィールドに入力された内容を記録するString値の現象型となります。

動的フォームを使用する各画面毎に、どの入力値モデルに入力値を記録するかなどは、Area定義のDynamicFormValueタグで記述します。
詳細はComponentタグのリファレンスを参照して下さい。


入力値モデルのインスタンス粒度

インスタンスの粒度は動的フォーム上の1項目に対して1インスタンスとなります。
そのため、1つの動的フォーム全体の入力値は、入力値モデルのリストという形で表現されます。



コンポーネントタグとCommand命令

動的フォームは、画面上のGUIコンポーネントの1つとして動作します。
そのため、Area定義のコンポーネントタグとしてDynamicFormタグが用意されています。

このタグを画面パネル上のJPanelとマッピングすることで入力フィールドがその上に配置されます。
ただし、他のGUIコンポーネントと違い、動的フォームの初期化タイミングや入力内容の確定タイミングは実行エンジンが適切に決めることが出来ません。

例えば、通常のTextFieldの場合は、初期化はArea自体の初期化タイミングと同じでよく、入力確定はフォーカスが外れた時やエンターキー押下時となるため実行エンジン側で制御できます。
しかし、動的フォームの場合は項目メタ情報を読み込むだけ無く、必要によっては他のマスタから必須フラグや初期値を上書きした上でDynamicFormに与える必要があったり、 入力確定は必須チェックなどの都合上フォーカス移動などでは決められないために確定ボタン押下時まで遅らせる必要があったりします。

このため、DynamicFormの動作を制御するためのCommand命令としてopearteDynamicForm命令が用意されています。
このタグを使用して、初期化や入力確定をArea定義のCommandから都合の良い任意のタイミングで行って下さい。


動的フォーム実行の流れ

以下で、動的フォームを使用した場合の処理の流れを説明します。

動的フォームでは初期化や入力確定は明示的にoperateDynamicForm命令で指示する必要があります。
その前後でどのようなことを行う必要があるかを以下で説明します。

動的フォームのセットアップ

図2:動的フォームセットアップ時の処理フロー

動的フォームの初期化とは、以下の2つの処理を含みます。

  • 項目メタ情報に従って項目名ラベルや入力フィールドをパネル上に展開する
  • 入力値データモデルの内容に従って各入力フィールドの初期表示を行う
このため、まず項目メタ情報及び入力値データモデルをあらかじめ取得して下さい。
その上でoperateDynamicForm命令でsetupを実行することにより動的フォームによる表示が行われます。


動的フォームの入力確定

図3:動的フォームの入力各提示の処理フロー

動的フォームの入力確定とは、以下の2つの処理を含みます。

  • 入力内容のチェック(現状は必須入力チェックのみ)
  • 入力値を入力値データモデルに反映する(メモリ上でのsetValue処理のみ)
operateDynamicForm命令でfixを指示することで上記の処理が行われます。
基本的には、このfixを行うタイミングは編集画面全体での登録処理を行うボタンを押下した場合などです。

そのタイミングで、まずfixを指示して動的フォームの内容を確定します。
そして続けて編集画面で取り扱っているデータ全体も含めて入力内容をデータベースなどに保存することになります。



動的フォーム展開例

以下に、動的フォームが項目メタ情報を元に入力フィールドを展開した例を示します。
このサンプルにおける、Area定義でのDynamicFormタグの記述は以下のようになっています。

<DynamicForm id="動的フォームPanel" inset="2"
             items="content:CC_TEST_DynamicForm/項目メタ情報リスト" 
             values="content:CC_TEST_DynamicForm/入力値モデルリスト">
    <DynamicFormValue model="TestDynamicFormValue" key="DF_ItemNo" value="Comment"/>
    <DynamicFormLabel background="color:LIGHT_GRAY"/>
    <DynamicFormField width="100" height="24" length="15"/>
    <DynamicFormCombination direction="horizontal"/>
</DynamicForm>

図4:項目メタ情報の構成例

図5:項目メタ情報に従って展開された動的フォームの例


更新情報

  • 最終更新者 : $Author: morishita $
  • 最終更新日時 : $Date:: 2011-01-14 17:08:49 #$
  • バージョン : $Revision: 5879 $



Copyright © 2006, Atrris Corporation