PEXA Clientについて

チュートリアル

定義パターン

定義ファイル

リファレンス

目次

  1. はじめに
  2. Message定義の内容
  3. Message制御機能
  4. identityセクション
  5. descriptionセクション
  6. localeセクション
  7. message-listセクション
  8. statusセクション
  9. Message定義全体のサンプル


はじめに

このドキュメントは、PEXAクライアントフレームワークで使用するMessage定義ファイルについて解説するものです。

Message定義ファイルは、画面に表示される各種メッセージを外部定義するためのXML形式の定義ファイルです。
この定義ファイルには、システム全体で共通的に使用するようなメッセージや、ドメイン単位で共通となるようなメッセージがIDを振られて定義されます。

定義ファイルの分割単位は任意です。メッセージレベル毎、システム内のドメイン毎など、プロジェクト毎に都合のいい形で分割して下さい。

各画面からは、参照記法のmessage参照を使用してこのMessage定義の内容を取得します。 定義ファイル自体にはMessageListIDという形でIDが振られるので、定義されたメッセージを参照する場合はこのMessageListIDとMessageIDを組み合わせて指定することになります。

Message定義ファイルの内部は、いくつかのセクションに分かれています。
以下でMessage定義ファイルの内容の概説およびそれぞれのセクションの詳細を解説していきます。


Message定義の内容

Message定義に含まれる情報には、主に以下の物があります。

MessageListの識別情報

MessageListはシステム内でユニークに特定できる必要があります。
そのために、MessageListを識別するためのIDや名称を必ず定義する必要があります。

詳細はidentityセクションを参照してください。


MessageListの適用ロケール情報

表示メッセージの国際化対応を行うために、MessageListを適用するロケールを指定することが出来ます。
ここで特定のロケールを指定しておくと、実行時の環境にマッチングするMessageListが自動的に適用されます。

詳しくはlocaleセクションを参照してください。


MessageListに含まれるMessage一覧

MessageListには複数個のMessageが含まれます。
個々のMessageにはIDが振られて、メッセージの内容とメッセージレベルがそれぞれ定義されます。

詳しくはmessage-listセクションを参照してください。



Message制御機能

Message定義と参照記法のmessage参照を組み合わせることで、以下のような表示メッセージ制御を行うことが出来ます。

それぞれについて以下で説明します。

変数が埋め込まれた動的な表示メッセージの取得

Message定義に記述されたメッセージ文字列に変数が埋め込まれている場合は、
message参照でContentIDを一緒に指定することで、そのContentに含まれるContentItemの値を変数部分と置き換えた結果を取得することが出来ます。

変数はtextタグで囲まれた文字列の中に"${変数名}"という形式で記述してください。

記述例:変数付きのメッセージ定義

<message id="M001" level="INFO">
    <text>変数Aの値は${変数A}です。</text>
    <text>変数Bの値は${変数B}です。</text>
</message>
記述例:参照記法
    message:CM_COMM_001/M001[CC_WKFL_001_Config]
上記のような指定をすると、CC_WKFL_001_ConfigのContentItemの値がそれぞれ
  • 変数A="あいうえお"
  • 変数B="かきくけこ"
の場合には取得される実際のメッセージは以下のようになります。

変数値反映後の取得メッセージ
  変数Aの値はあいうえおです。
  変数Bの値はかきくけこです。
また、変数変換を行う際にtranslatorを適用することができます。
区分値や日付などを表示文字列に変換する際にデフォルトトランスレータ以外を使用したい場合はmessageタグのtranslator属性で指定してください。


表示メッセージの国際化対応

Message定義には国際化対応機能があります。

Java言語のリソースファイルと同じような仕組みとなっており、特定のロケール(ja_JP, en_USなど)に対応したMessage定義を 複数セット用意しておくことで、実行環境のロケールと照らし合わせて適合した定義ファイルが読み込まれる形となります。

ロケールは、lang属性とcountry属性の組み合わせで指定することになります。
lang属性は言語(日本語、英語など)を表し、country属性は国(日本、アメリカ、イギリスなど)を表します。

lang属性は必須ですが、countryは省略可能です。
countryを省略した場合は、実行時の環境におけるcountryがなんであれlanguageが一致すればその定義ファイルが適用されます。

構成例:日本語と英語に対応する場合(英語はcountry指定無し)

    src/client/message/ja_JP/CM_COMM_001_ja_JP.xml
    src/client/message/en/CM_COMM_001_en.xml
上記2ファイルでどちらも同じIDを持たせて、さらにlocaleタグで対応ロケールを指定する。

記述例:CM_COMM_001_ja_JP.xml
    <identity id="CM_COMM_001"/>
    <locale lang="ja" contry="JP"/>
    <message-list>
        <message id="M001" level="INFO">
            <text>検索結果が0件です。</text>
        </message>
    </message-list>
記述例:CM_COMM_001_en.xml
    <identity id="CM_COMM_001"/>
    <locale lang="en"/>
    <message-list>
        <message id="M001" level="INFO">
            <text>search result count is 0.</text>
        </message>
    </message-list>
上記のように日本語のファイルと英語対応のファイルを同一IDで2つ用意しておくことで、
    <showMessageDialog message="message:CM_COMM_001/M001"/>
と指定して表示されるメッセージが自動的に実行環境のロケールに合わせた内容になります。

message参照によって実際に読み込まれるMessage定義ファイルが、CM_COMM_001_ja_JP.xmlになるかそれともCM_COMM_001_en.xmlになるかは ClientFramework内部で自動的に判定されるので、message参照を記述する際には何も気にする必要はありません。

なお、localeタグが記述されていないMessage定義は、デフォルトMessage定義として扱われます。
あるIDのMessage定義を参照した際に、実行環境のロケールに明示的に対応しているものが無い場合に最終的に適用されるものとなります。



identityセクション

記述例 :

<identity id="CM_COMM_Info" name="共通メッセージリスト"/>

説明 :
identityセクションは、MessageListの識別情報を記述するセクションです。
IDや名称を定義します。

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

属性値名 説明 形式 必須/非必須 参照記法可/不可
id システム内でユニークになるMessageListの識別ID 文字列 必須 不可
name MessageListの名称。 文字列 非必須 不可


descriptionセクション

記述例 :

<description>
    システム全体で使用される共通メッセージのリストです。
</description>

説明 :
descriptionセクションは、MessageListの詳細説明を記述するセクションです。
フリーフォーマットで文章で記入してください。


localeセクション

記述例 : 言語と国の両方指定

<locale lang="ja" country="JP"/>
記述例 : 言語のみ指定
<locale lang="ja"/>

説明 :
localeセクションは、表示メッセージの国際化対応を行うためのセクションです。
適用されるべきロケールを明示的にここで指定しておくと、画面の実行環境のロケールと適合した場合にのみ使用されるMessage定義になります。

このセクションの記述は任意です。もし記述されていない場合はデフォルトMessage定義として扱われます。
これは、実行環境のロケール対応のMessage定義が見つからない場合に適用される物です。

localeタグの属性値は以下の通りです。

属性値名 説明 形式 必須/非必須 参照記法可/不可
lang このメッセージ定義の適用言語圏を指定する。
ISO-639で定義される2桁の小文字で指定すること。
文字列 必須 不可
country このメッセージ定義の適用国を指定する。
ISO-3166で定義される2桁の大文字で指定すること。
省略可能。省略時は実行環境のcountryに関わらずlanguageが一致すれば適用される。
文字列 非必須 不可


message-listセクション

記述例 :

<message-list>
    <!-- ================================================
    ===  一覧画面 操作関連メッセージ
    ================================================= -->
    <!-- 行未選択 -->
    <message id="行未選択" level="情報">
        <text>処理対象の行が選択されていません。</text>
    </message>
    <!-- 複数行未選択 -->
    <message id="複数行未選択" level="情報">
        <text>処理対象の行が選択されていません。</text>
        <text>複数選択可能な項目はチェックボックスで指定してください。</text>
    </message>
    <!-- 検索結果0件の場合に表示 -->
    <message id="該当情報無し" level="情報">
        <text>検索条件に該当する情報が見つかりませんでした。</text>
    </message>
    <!-- 検索結果件数 -->
    <message id="検索結果件数" level="情報">
        <text>検索条件に該当する情報は${検索結果件数}件でした。</text>
    </message>
<message-list>

説明 :
message-listセクションは、MessageListに含まれる個々のMessageを宣言するセクションです。
子要素として、個々のメッセージを表すmessageタグを列挙します。

セクション内の子要素 :
message-listセクションの子要素として、以下のタグがあります。

messageタグ

個々のメッセージを定義するためのタグです。必要な分を複数個列挙してください。
messageタグの属性値は以下の通り。

属性値名 説明 形式 必須/非必須 参照記法可/不可
id メッセージに割り振るID。メッセージリスト内でユニークであること。 文字列 必須 不可
level メッセージレベルを定義する。不要であれば省略可です。
どれだけのレベルを用意するかは、フレームワーク側では特に制限しません。 各プロジェクト毎に任意のレベルを決めて割り振って下さい。
文字列 非必須 不可
translator メッセージに変数を埋め込んだ場合に、変数値を表示文字列に変換するためのトランスレータを指定します。
指定しない場合はデフォルトトランスレータが自動的に適用されます。
文字列 非必須 不可

messageタグの子要素として、textタグがあります。
このtextタグの開始タグと終了タグの間に挟んでメッセージ文字列を記述します。
メッセージを改行させたい場合は、textタグを複数個記述して下さい。

記述例 :

<message id="複数行未選択" level="情報">
    <text>処理対象の行が選択されていません。</text>
    <text>複数選択可能な項目はチェックボックスで指定してください。</text>
</message>
上記のように記述すると、画面上には
  処理対象の行が選択されていません。
  複数選択可能な項目はチェックボックスで指定してください。
と表示されます。

なお、この表示メッセージ中に変数を埋め込むことで、表示文字列をある程度動的に生成することが出来ます。
変数付きメッセージについてはこちらを参照してください。



statusセクション

記述例 :

<status>
    <author>$Author: morishita $</author>
    <datetime>$Date:: 2009-03-04 16:00:46 #$</datetime>
    <version>$Revision: 3293 $</version>
</status>

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

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

authorタグ

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


datetimeタグ

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


versionタグ

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



Message定義全体のサンプル

<?xml version="1.0" encoding="Windows-31j"?>
<!--
 - Copyright
 -->
<!DOCTYPE client-messagelist SYSTEM "../doctype/client-messagelist.dtd">
<!--==============================================================
 == Current-Module:
 == Release-Date:
 == Release-Version:
 == First-Created-On:
 == First-Created-By:
 == Copy-Right-Owner:
 ==============================================================-->
<client-messagelist>
<!--==============================================================
==  識別情報
===============================================================-->
    <identity id="CM_COMM_Info" name="共通メッセージリスト"/>
<!--==============================================================
==  詳細説明
===============================================================-->
    <description>
        システム全体で使用される共通メッセージのリストです。
    </description>
<!--==============================================================
==  メッセージリストに含まれるメッセージの一覧
===============================================================-->
    <message-list>
        <!-- ================================================= -->
        <!-- 一覧画面 操作関連メッセージ                          -->
        <!-- ================================================= -->
        <!-- 行未選択 -->
        <message id="行未選択" level="情報">
            <text>処理対象の行が選択されていません。</text>
        </message>
        <!-- 複数行未選択 -->
        <message id="複数行未選択" level="情報">
            <text>処理対象の行が選択されていません。</text>
            <text>複数選択可能な項目はチェックボックスで指定してください。</text>
        </message>
        <!-- 検索結果0件の場合に表示 -->
        <message id="該当情報無し" level="情報">
            <text>検索条件に該当する情報が見つかりませんでした。</text>
        </message>
        <!-- ================================================= -->
        <!-- 印刷 関連メッセージ                               -->
        <!-- ================================================= -->
        <message id="印刷情報無し" level="情報">
            <text>印刷対象の情報がありません。</text>
        </message>
        <!-- ================================================= -->
        <!-- ファイル出力 関連メッセージ                      -->
        <!-- ================================================= -->
        <!-- ファイル出力情報無しの場合に表示 -->
        <message id="出力情報無し" level="情報">
            <text>出力対象の情報がありません。</text>
        </message>
        <!-- ================================================= -->
        <!-- ファイル取込 関連メッセージ                          -->
        <!-- ================================================= -->
        <message id="ファイルフォーマットエラー" level="警告">
            <text>エラーレコードが存在します。</text>
            <text>データを修正して再度ファイルを指定して下さい。</text>
        </message>
        <message id="ファイル取込" level="情報">
            <text>指定されたファイルを取込ます。</text>
            <text>よろしいですか?</text>
        </message>
        <message id="ファイル取込完了" level="情報">
            <text>ファイルを取込ました。</text>
        </message>
        <!-- ================================================= -->
        <!-- 編集画面 操作関連メッセージ                          -->
        <!-- ================================================= -->
        <!-- キャンセル時 -->
        <message id="編集内容破棄" level="情報">
            <text>編集内容を破棄します。よろしいですか?</text>
        </message>
        <!-- 編集画面の終了時 -->
        <message id="編集画面終了" level="情報">
            <text>画面を閉じると変更された情報は破棄されます。</text>
            <text>よろしいですか?</text>
        </message>
        <!-- ================================================= -->
        <!-- 検索条件ToolTip 関連メッセージ                          -->
        <!-- ================================================= -->
        <message id="前方一致検索" level="情報">
            <text>前方一致検索可能です。</text>
        </message>
        <message id="部分一致検索" level="情報">
            <text>部分一致検索可能です。</text>
        </message>
        <!-- ================================================= -->
        <!-- パスワード更新                          -->
        <!-- ================================================= -->
        <message id="パスワード入力確認失敗" level="警告">
            <text>パスワード(確認入力)と新しいパスワードが一致しません。</text>
        </message>
        <message id="パスワード更新完了" level="情報">
            <text>パスワードの更新が完了しました。</text>
        </message>
        <!-- ================================================= -->
        <!-- ログイン/ログアウト                             -->
        <!-- ================================================= -->
        <message id="ログアウト" level="情報">
            <text>基幹システムからログアウトします。</text>
            <text>よろしいですか?</text>
        </message>
    </message-list>
<!--==============================================================
==  ファイル編集情報
===============================================================-->
    <status>
        <author></author>
        <datetime></datetime>
        <version></version>
    </status>
</client-messagelist>


更新情報

  • 最終更新者 : $Author: morishita $
  • 最終更新日時 : $Date:: 2009-03-04 16:00:46 #$
  • バージョン : $Revision: 3293 $



Copyright © 2006, Atrris Corporation