PEXA Clientについて

チュートリアル

定義パターン

定義ファイル

リファレンス

目次

  1. はじめに
  2. Configパターンのサンプル画面イメージ
  3. configのContent定義サンプル
  4. configのContent定義解説
  5. Area定義サンプル
  6. Area定義解説


はじめに

このドキュメントは、定義パターン"Config"の内容について解説する物です。

Configパターンは、バッチ系処理実行、印刷実行、ファイル取込実行など、サーバーサイドの処理を実行して特に結果を表示しないような場合に現れるパターンです。
パラメータを受け取ってサービスを実行する"config"のContent定義が含まれます。

"config"のContent定義には、主に以下のような内容が記述されます。

  • Content(config)の基本的なitem定義
    • サービスに渡すパラメータ
  • Content(config)の基本的なaction定義
    • 各種サービス(種類に限定は無い)の呼び出し
基本的には、パラメータを設定し、サービスを実行するような場合に該当します。


Configパターンのサンプル画面イメージ

Configパターンをとる画面のサンプルとなる画面イメージです。



このように、Configパターンの画面は

  • パラメータを入力してサービスを実行するConfig部
から構成されます。
これをPEXAクライアントフレームワークではステレオタイプ"config"のContentとして表現します。


configのContent定義サンプル

<?xml version="1.0" encoding="Windows-31J"?>
<!--
 - Copyright
 -->
<!DOCTYPE client-content SYSTEM "../doctype/client-content.dtd">
<!--==============================================================
 == Current-Module:
 == Release-Date:
 == Release-Version:
 == First-Created-On:
 == First-Created-By:
 == Copy-Right-Owner:
 ==============================================================-->
<client-content>
<!--==============================================================
==  コンテントの属性値の宣言
===============================================================-->
    <identity id="CC_ACMG_353_01_Config"
            name="制作別科目別製造原価明細を印刷する"
            stereotype="config"/>
<!--==============================================================
==  コンテントの詳細説明
===============================================================-->
    <description>
        制作別科目別製造原価明細を印刷するConfigコンテントです
    </description>
<!--==============================================================
==  リンクするSVOステートメントの宣言
===============================================================-->
    <reference-list>
        <statement ref="ACMG_353" process="制作別科目別製造原価明細を印刷する"/>
    </reference-list>
<!--==============================================================
==  コンテントで参照する項目の宣言
===============================================================-->
    <item-list>
        <!--======================================================
        == データモデル
        =======================================================-->
        <item id="制作マスタFrom" access="hidden" type="model"/>
        <item id="制作マスタTo" access="hidden" type="model"/>
        <!-- =====================================================
        == 画面上の入出力項目
        ====================================================== -->
        <item id="会計搬入年月" access="input" type="value">
            <valuetype ptype="会計搬入年月"></valuetype>
            <description>会計搬入年月</description>
        </item>
        <item id="制作コードFrom" access="input" type="value">
            <valuetype ptype="制作コード"></valuetype>
            <trigger action="制作コードFromをマスタで検索する"/>
            <description>制作コード</description>
        </item>
        <item id="制作コードTo" access="input" type="value">
            <valuetype ptype="制作コード"></valuetype>
            <trigger action="制作コードToをマスタで検索する"/>
            <description>制作コード</description>
        </item>
        <!-- =====================================================
        == 印刷結果項目
        ====================================================== -->
        <item id="印刷結果URL" access="hidden" type="value">
            <valuetype implement="java.lang.String"></valuetype>
            <description>印刷結果ファイル・出力先URL</description>
        </item>
        <item id="ファイル出力内容" access="hidden" type="value">
            <valuetype implement="java.lang.String"></valuetype>
            <description>CSVファイル・出力ファイル名</description>
        </item>
    </item-list>
<!--==============================================================
==  コンテントアクション
===============================================================-->
    <action-list>
        <!-- =====================================================
        == 印刷アクション
        ====================================================== -->
        <action id="印刷">
            <doService service="制作別科目別製造原価明細を印刷する">
                <inputServiceSession>
                    <inputValue key="S_ACMG_353_FILTER_会計搬入年月"item="会計搬入年月"/>
                    <inputValue key="S_ACMG_353_FILTER_FROM_制作コード" item="制作コードFrom"/>
                    <inputValue key="S_ACMG_353_FILTER_TO_制作コード" item="制作コードTo"/>
                </inputServiceSession>
                <outputServiceSession>
                    <outputValue key="DownLoad_URL" item="印刷結果URL"/>
                </outputServiceSession>
            </doService>
        </action>
        <!-- =====================================================
        == ファイル出力アクション
        ====================================================== -->
        <action id="ファイル出力">
            <doService service="制作別科目別製造原価明細を出力する">
                <inputServiceSession>
                    <inputValue key="S_ACMG_353_FILTER_会計搬入年月" item="会計搬入年月"/>
                    <inputValue key="S_ACMG_353_FILTER_FROM_制作コード" item="制作コードFrom"/>
                    <inputValue key="S_ACMG_353_FILTER_TO_制作コード" item="制作コードTo"/>
                </inputServiceSession>
                <outputServiceSession>
                    <outputValue key="CSVString" item="ファイル出力内容"/>
                </outputServiceSession>
            </doService>
        </action>
        <!--========================================================
            ==制作コードFrom検索アクション
            =======================================================-->
        <action id="制作コードFromをマスタで検索する">
            <doService service="制作マスタをコードで検索する">
                <inputServiceSession>
                    <inputValue item="制作コードFrom" key="制作コード"/>
                </inputServiceSession>
                <outputServiceSession>
                    <outputValue item="制作マスタFrom" key="制作マスタ"/>
                </outputServiceSession>
            </doService>
        </action>
        <!--======================================================
            ==制作マスタTo検索アクション
            ======================================================-->
        <action id="制作コードToをマスタで検索する">
            <doService service="制作マスタをコードで検索する">
                <inputServiceSession>
                    <inputValue item="制作コードTo" key="制作コード"/>
                </inputServiceSession>
                <outputServiceSession>
                    <outputValue item="制作マスタTo" key="制作マスタ"/>
                </outputServiceSession>
            </doService>
        </action>
        <!--======================================================
            ==必須入力項目のチェックを行うアクション
            ======================================================-->
        <action id="必須入力チェック">
            <doService service="制作別科目別製造原価明細一覧出力の必須項目入力チェックを行う">
                <inputServiceSession>
                    <inputValue item="会計搬入年月" key="会計搬入年月"/>
                    <inputValue item="制作コードFrom" key="制作コードFrom"/>
                    <inputValue item="制作コードTo" key="制作コードTo"/>
                </inputServiceSession>
            </doService>
        </action>
    </action-list>
<-- ==============================================================
==  コンテントの遷移先リスト
==  (この情報はコンテントカタログ間の関連定義であり、実行時には参照されません)
===============================================================-->
    <transition-list>
    </transition-list>
<!--==============================================================
==  ファイル編集情報
===============================================================-->
    <status>
        <author></author>
        <datetime></datetime>
        <version></version>
    </status>
</client-content>


configのContent定義解説

configのContentは、基本的に以下のような機能を持ちます。

  • サービスに渡すパラメータを画面から受け取り、保持する
  • 任意のサービスを呼び出す
上記を実現するための記述内容をitem及びactionの定義内容としてそれぞれ解説します。

item定義

ステレオタイプ"config"のContentで定義されるitemには、主に以下のような項目があります。

  • 呼び出したいサービスに対して渡すパラメータ
  • 呼び出したサービスから受け取る実行結果


サンプルのContent定義では、画面上に3つの入力フィールドがあるのでそれぞれに対応するitemが定義されています。
また、制作コードFromおよび制作コードToにはそれぞれtriggerが仕掛けられていて、入力と同時にアクションを実行するようになっています。 これは、入力されたコード文字列が実際にマスタテーブルに登録されている正規のコードであるかをチェックするためのものです。

<!-- =====================================================
== 画面上の入出力項目
====================================================== -->
<item id="会計搬入年月" access="input" type="value">
    <valuetype ptype="会計搬入年月"></valuetype>
    <description>会計搬入年月</description>
</item>
<item id="制作コードFrom" access="input" type="value">
    <valuetype ptype="制作コード"></valuetype>
    <trigger action="制作コードFromをマスタで検索する"/>
    <description>制作コード</description>
</item>
<item id="制作コードTo" access="input" type="value">
    <valuetype ptype="制作コード"></valuetype>
    <trigger action="制作コードToをマスタで検索する"/>
    <description>制作コード</description>
</item>


データモデルとして、制作マスタFromと制作マスタToが定義されています。
これは、コードに対応する検索結果のデータモデルを格納するContent項目です。

<!--======================================================
== データモデル
=======================================================-->
<item id="制作マスタFrom" access="hidden" type="model"/>
<item id="制作マスタTo" access="hidden" type="model"/>


action定義

ステレオタイプ"config"のContentで定義されるactionには、主に以下のものがあります。

  • サービスを呼び出す前に行う前処理のaction
  • サービスを呼び出すaction


サンプルのContent定義では、画面上の印刷、ファイル出力ボタンを押したときに、それぞれの処理を行うサービスを呼び出すアクションが定義されています。

<!-- =====================================================
== 印刷アクション
====================================================== -->
<action id="印刷">
    <doService service="制作別科目別製造原価明細を印刷する">
        <inputServiceSession>
            <inputValue key="S_ACMG_353_FILTER_会計搬入年月"item="会計搬入年月"/>
            <inputValue key="S_ACMG_353_FILTER_FROM_制作コード" item="制作コードFrom"/>
            <inputValue key="S_ACMG_353_FILTER_TO_制作コード" item="制作コードTo"/>
        </inputServiceSession>
        <outputServiceSession>
            <outputValue key="DownLoad_URL" item="印刷結果URL"/>
        </outputServiceSession>
    </doService>
</action>
<!-- =====================================================
== ファイル出力アクション
====================================================== -->
<action id="ファイル出力">
    <doService service="制作別科目別製造原価明細を出力する">
        <inputServiceSession>
            <inputValue key="S_ACMG_353_FILTER_会計搬入年月" item="会計搬入年月"/>
            <inputValue key="S_ACMG_353_FILTER_FROM_制作コード" item="制作コードFrom"/>
            <inputValue key="S_ACMG_353_FILTER_TO_制作コード" item="制作コードTo"/>
        </inputServiceSession>
        <outputServiceSession>
            <outputValue key="CSVString" item="ファイル出力内容"/>
        </outputServiceSession>
    </doService>
</action>
また、Content項目のtriggerから呼び出される検索アクションも定義されています。
このアクションはContent項目のtriggerから呼び出されており、画面上で入力されると同時に実行されます。 このようにすることで、入力されたコードが実際に存在する妥当な値であるかをチェックすることができます。 この場合、もし検索サービスを呼び出しても検索でヒットしなかった場合はサービスからエラーが返されるので、 入力値が間違っていることがわかるようになっています。
<!--========================================================
    ==制作コードFrom検索アクション
    =======================================================-->
<action id="制作コードFromをマスタで検索する">
    <doService service="制作マスタをコードで検索する">
        <inputServiceSession>
            <inputValue item="制作コードFrom" key="制作コード"/>
        </inputServiceSession>
        <outputServiceSession>
            <outputValue item="制作マスタFrom" key="制作マスタ"/>
        </outputServiceSession>
    </doService>
</action>
<!--======================================================
    ==制作マスタTo検索アクション
    ======================================================-->
<action id="制作コードToをマスタで検索する">
    <doService service="制作マスタをコードで検索する">
        <inputServiceSession>
            <inputValue item="制作コードTo" key="制作コード"/>
        </inputServiceSession>
        <outputServiceSession>
            <outputValue item="制作マスタTo" key="制作マスタ"/>
        </outputServiceSession>
    </doService>
</action>
更に、サービス呼び出し前の必須項目チェックを行うアクションも定義されています。 これは、この画面から実行したいサービスを呼び出す際に必須入力となっている項目をチェックするものです。 チェック処理を行うサービスを呼び出すことでチェックを行っていますj。
<!--======================================================
    ==必須入力項目のチェックを行うアクション
    ======================================================-->
<action id="必須入力チェック">
    <doService service="制作別科目別製造原価明細一覧出力の必須項目入力チェックを行う">
        <inputServiceSession>
            <inputValue item="会計搬入年月" key="会計搬入年月"/>
            <inputValue item="制作コードFrom" key="制作コードFrom"/>
            <inputValue item="制作コードTo" key="制作コードTo"/>
        </inputServiceSession>
    </doService>
</action>



Area定義サンプル

<?xml version="1.0" encoding="Windows-31J"?>
<!--
 - Copyright
 -->
<!DOCTYPE client-area SYSTEM "../doctype/client-area.dtd">
<!--==============================================================
 == Current-Module:
 == Release-Date:
 == Release-Version:
 == First-Created-On:
 == First-Created-By:
 == Copy-Right-Owner:
 ==============================================================-->
<client-area>
    <!-- エリア属性値 -->
    <identity id="CA_ACFN_257_01"
            name="制作別科目別製造原価明細一覧出力ポップアップエリア"/>

    <!-- 詳細説明 -->
    <description>
        会計ドメイン/会計処理/直接原価クライアントポータル/制作別科目別製造原価明細一覧出力ポップアップエリア定義です。
    </description>

<!--==============================================================
 ==  参照するコンテンツの宣言
 =============================================================-->
    <reference-list>
        <content ref="CC_ACMG_353_01_Config"/>
    </reference-list>
<!--==============================================================
 ==  表示レイアウト情報
 =============================================================-->
    <layout ref="PanelLayout">
        <gui implement="imeg.client.view.rich.area.ac.fn.ACFN_257_SectionalDetailProductionConfigPanel"/>
    </layout>
<!--==============================================================
 ==  コンポーネントマッピング
 =============================================================-->
    <component-mapping>
        <!-- =====================================================
        == 画面上部のタイトル&ボタン
        ====================================================== -->
        <Label id="タイトルラベル" text="制作別科目別製造原価明細一覧"/>
        <!-- =====================================================
        == Config部
        ====================================================== -->
        <!-- 実行ボタン -->
        <Button id="印刷ボタン" text="F3:印刷" onClick="COMMAND[印刷]"/>
        <Button id="閉じるボタン" text="ESC:閉じる" onClick="COMMAND[終了]"/>
        <Button id="ファイル出力ボタン" text="F8:ファイル出力"  onClick="COMMAND[ファイル出力]"/>
        <!-- 各入力フィールド -->
        <TextField id="会計搬入年月テキストフィールド" text="content:CC_ACMG_353_01_Config/会計搬入年月" document="yearmonth"/>
        <Calendar id="会計搬入年月カレンダーアイコン" date="content:CC_ACMG_353_01_Config/会計搬入年月"/>
        <TextField id="制作コード_Fromフィールド" text="content:CC_ACMG_353_01_Config/制作コードFrom"/>
        <Dialog id="制作コード_From検索アイコン" page="CP_MT_ManufactureMaster">
            <DialogContent content="CC_MT_014_02_EditList">
                <outputItem item="制作コード" to="content:CC_ACMG_353_01_Config/制作コードFrom"/>
            </DialogContent>
        </Dialog>
        <TextField id="制作コード_Toフィールド" text="content:CC_ACMG_353_01_Config/制作コードTo"/>
        <Dialog id="制作コード_To検索アイコン" page="CP_MT_ManufactureMaster">
            <DialogContent content="CC_MT_014_02_EditList">
                <outputItem item="制作コード" to="content:CC_ACMG_353_01_Config/制作コードTo"/>
            </DialogContent>
        </Dialog>
    </component-mapping>
<!--==============================================================
 ==  コマンド定義
 =============================================================-->
    <command-list>
        <!--======================================================
        == 画面起動時の初期化処理
        =======================================================-->
        <command id="INIT">
            <requestFocus component="会計搬入年月テキストフィールド"/>
        </command>
        <!--======================================================
        == 印刷実行
        =======================================================-->
        <command id="印刷">
            <doAction action="必須入力チェック" content="CC_ACMG_353_01_Config"/>
            <doAction content="CC_ACMG_353_01_Config" action="印刷"/>
            <if condition="filter:[content:CC_ACMG_353_01_Config/印刷結果URL is null]">
            <true>
                <showMessageDialog message="message:CM_ACFN_Error/出力データなし"/>
                <return/>
            </true>
            <false>
                    <showWebBrowser url="content:CC_ACMG_353_01_Config/印刷結果URL"/>
            </false>
            </if>
        </command>
        <!--======================================================
        == ファイル出力実行
        =======================================================-->
        <command id="ファイル出力">
            <doAction action="必須入力チェック" content="CC_ACMG_353_01_Config"/>
            <doAction content="CC_ACMG_353_01_Config" action="ファイル出力"/>
            <if condition="filter:[content:CC_ACMG_353_01_Config/ファイル出力内容 is null]">
            <true>
                <showMessageDialog message="message:CM_ACFN_Error/出力データなし"/>
                <return/>
            </true>
            <false>
                    <showFileChooserDialog type="save" ext="csv" write="content:CC_ACMG_353_01_Config/ファイル出力内容"/>
            </false>
            </if>
        </command>
    </command-list>
<!--==============================================================
 ==  キーバインド
 =============================================================-->
    <key-binding>
        <keybind stroke="ESCAPE" event="CLOSE"/>
        <keybind stroke="F8" event="COMMAND[ファイル出力]"/>
        <keybind stroke="F3" event="COMMAND[印刷]"/>
    </key-binding>
<!--==============================================================
    ==フォーカス移動
    ==============================================================-->
    <focus-traversal-policy>
        <traversal component="会計搬入年月テキストフィールド"/>
        <traversal component="制作コード_Fromフィールド"/>
        <traversal component="制作コード_Toフィールド"/>
        <traversal component="印刷ボタン"/>
        <traversal component="ファイル出力ボタン"/>
        <traversal component="閉じるボタン"/>
    </focus-traversal-policy>
<!--==============================================================
 ==  ファイル編集情報
 =============================================================-->
    <status>
        <author></author>
        <datetime></datetime>
        <version></version>
    </status>
</client-area>


Area定義解説

Configパターンの画面のArea定義では、パラメータ入力部や実行ボタンをconfigのContentにマッピングします。

component-mapping定義

サンプルのArea定義では、各コンポーネントとContentは以下のようにマッピングされています。

  • config Content: 会計搬入年月、制作コード(From, To)の入力フィールド
各TextFieldがtext属性でContent項目とマッピングされています。
また、それに加えて入力補助のコンポーネントとしてCalendarおよびDialogも使用されています。 これらもそれぞれが会計搬入年月、制作コード(From, To)とマッピングされています。
<!-- 各入力フィールド -->
<TextField id="会計搬入年月テキストフィールド" text="content:CC_ACMG_353_01_Config/会計搬入年月" document="yearmonth"/>
<Calendar id="会計搬入年月カレンダーアイコン" date="content:CC_ACMG_353_01_Config/会計搬入年月"/>
<TextField id="制作コード_Fromフィールド" text="content:CC_ACMG_353_01_Config/制作コードFrom"/>
<Dialog id="制作コード_From検索アイコン" page="CP_MT_ManufactureMaster">
    <DialogContent content="CC_MT_014_02_EditList">
        <outputItem item="制作コード" to="content:CC_ACMG_353_01_Config/制作コードFrom"/>
    </DialogContent>
</Dialog>
<TextField id="制作コード_Toフィールド" text="content:CC_ACMG_353_01_Config/制作コードTo"/>
<Dialog id="制作コード_To検索アイコン" page="CP_MT_ManufactureMaster">
    <DialogContent content="CC_MT_014_02_EditList">
        <outputItem item="制作コード" to="content:CC_ACMG_353_01_Config/制作コードTo"/>
    </DialogContent>
</Dialog>


command定義

Configパターンの画面では、基本的に以下の場合の処理をcommandで定義します。

  • Config部での実行ボタン押下時の処理


サンプルのエリア定義では、上記のうちConfig部の実行ボタン押下時の処理として、"印刷""ファイル出力"commandが定義されています。

印刷Commandでは、まず必須チェックを行うアクションを呼び出して、その後印刷を実行するアクションを呼び出しています。 もし印刷結果が取得できた場合はWebブラウザの表示をshowWebBrowser命令で行っています。 取得できなかった場合はshowMessageDialog命令でメッセージ表示しています。

<!--======================================================
== 印刷実行
=======================================================-->
<command id="印刷">
    <doAction action="必須入力チェック" content="CC_ACMG_353_01_Config"/>
    <doAction content="CC_ACMG_353_01_Config" action="印刷"/>
    <if condition="filter:[content:CC_ACMG_353_01_Config/印刷結果URL is null]">
    <true>
        <showMessageDialog message="message:CM_ACFN_Error/出力データなし"/>
        <return/>
    </true>
    <false>
            <showWebBrowser url="content:CC_ACMG_353_01_Config/印刷結果URL"/>
    </false>
    </if>
</command>
ファイル出力Commandでは、まず必須チェックを行うアクションを呼び出して、その後ファイル出力を実行するアクションを呼び出しています。 もしファイル出力内容が取得できた場合はshowFileChooserDialog命令でファイル保存ダイアログを表示しています。 取得できなかった場合はshowMessageDialog命令でメッセージ表示しています。
<!--======================================================
== ファイル出力実行
=======================================================-->
<command id="ファイル出力">
    <doAction action="必須入力チェック" content="CC_ACMG_353_01_Config"/>
    <doAction content="CC_ACMG_353_01_Config" action="ファイル出力"/>
    <if condition="filter:[content:CC_ACMG_353_01_Config/ファイル出力内容 is null]">
    <true>
        <showMessageDialog message="message:CM_ACFN_Error/出力データなし"/>
        <return/>
    </true>
    <false>
            <showFileChooserDialog type="save" ext="csv" write="content:CC_ACMG_353_01_Config/ファイル出力内容"/>
    </false>
    </if>
</command>



更新情報

  • 最終更新者 : $Author: morishita $
  • 最終更新日時 : $Date:: 2008-08-29 22:48:31 #$
  • バージョン : $Revision: 2282 $



Copyright © 2006, Atrris Corporation