PEXA Supportについて

PEXAプロパティ

トランスレータ

印刷フレームワーク

AETフレームワーク

ワークフロー

動的フォーム

変換フレームワーク

テンプレートエンジン

カレンダー

タスクスケジューラー

目次

  1. はじめに
  2. PEXA TemplateEngineアダプタ
  3. PEXA内部における使用箇所


はじめに

このドキュメントは、PEXAのサポート機能であるテンプレートエンジンについて解説するものです。

テンプレートエンジンとは、文字列データのテンプレートとそのパラメータになる何らかのオブジェクトを掛け合わせることで 動的に文字列データを生成する仕組みのエンジン部分です。

オープンソースのフリーウェアとしては、以下のような物があります。

どちらもできることはほぼ同じですが、細かいところで得手不得手があるために、利用目的に応じてPEXAでは使い分けています。
基本的に以下のように使い分けています。
  • XMLビルドツール : Velocity
  • Serviceビルドツール : Velocity
  • ModelTranslator : FreeMarker
これは、Velocityがテンプレート内でパラメータ名としてマルチバイト文字やスラッシュなどを使用できないためにModelTranslatorには不向きであり、 FreeMarkerではJavaオブジェクトのメソッドを直接呼び出すことが出来ないためにビルドツールなどで柔軟な利用がしにくいということから来ています。

このように、場面に応じて使い分けることが必要になってきますが、両者は当然APIが異なるため、直接呼び出すと密結合になるために不都合が発生しやすくなります。 そこで両者を同じインタフェースで呼び出せるようにするためのアダプタとなる仕組みをPEXA内部で用意しています。各種ツールやModelTranslatorなどは全てこの 仕組みを通じてVelocityやFreeMarkerを呼び出しています。


PEXA TemplateEngineアダプタ

PEXAのTemplateEngineアダプタは、デザインとしてはJakartaのcommons-loggingに似た形になっています。

commons-loggingは何種類かあるログ用API(Java標準のロガー、log4jなど)をドライバのように見立てて、 それらを同じインタフェースで呼び出せるアダプタとして振る舞います。

PEXAのTemplateEngineアダプタも同じようにアダプタインタフェースおよびFactoryクラスを提供していて、 Factory呼出時にTemplateEngineの実装(Velocity or FreeMarker)を指定することでそれらを内部的に呼び分ける形となっています。

Factoryクラス及びアダプタインタフェースは以下のクラスとなります。

Factoryクラス

下記のクラスがTemplateEngineアダプタのファクトリになります。

  pexa.share.util.template.TemplateEngineFactory
getInstanceメソッドでFactory自身のインスタンスを取得しますが、このメソッドにTemplateEngineの種類(Velocity or FreeMarker)を指定します。

Factotyインスタンスを取得したら、getTemplateEngineメソッドでTemplateEngineアダプタを取得します。 この際、テンプレートファイルのローディングをファイルパスベースで行うかクラスパスベースで行うかを指定します。

詳細はJavaDocのAPIリファレンスを参照してください。


アダプタインタフェース

下記のインタフェースがTemplateEngineアダプタになります。

  pexa.share.util.template.TemplateEngine
TemplateEngineの実行はevaluateメソッドを呼び出すことで行います。
このevaluateメソッドはTemplateContextというインタフェースを実装したオブジェクトをパラメータとして受け取ります。
このインタフェースを実装した標準クラスとして以下が提供されています。
  pexa.share.util.template.engine.SimpleTemplateContext
このクラスのコンストラクタに、テンプレートファイルに対するパラメータ値を格納したMapを渡します。
また、setAttributeメソッドでTemplateEngineに対する実行時パラメータやテンプレートファイル名などを設定します。
設定できるパラメータのキーはTemplateContextインタフェースの定数値として定義されています。

詳細はJavaDocのAPIリファレンスを参照してください。



PEXA内部における使用箇所とテンプレートファイル記述方法

PEXAでは、このTemplateEngineを主に以下の2箇所で使用しています。

  • XMLから各種ファイルへ変換するためのビルドツール(Velocity)
  • Serviceのテンプレート展開を行うビルドツール(Velocity)
  • データモデルを文字列データ(HTMLなど)に変換するModelTranslator(FreeMarker)
上記のそれぞれでは、TemplateEngineの実装毎によるテンプレートファイルの記述方法に当然違いがあり、 さらにPEXA側で必要に応じて機能をいくつかプラグインしています。 それぞれについて別ページで詳細を説明しますので、以下のリンクから参照してください。


更新情報

  • 最終更新者 : $Author: morishita $
  • 最終更新日時 : $Date:: 2008-10-30 12:05:11 #$
  • バージョン : $Revision: 2589 $



Copyright © 2006, Atrris Corporation