PEXA Supportについて

PEXAプロパティ

トランスレータ

印刷フレームワーク

AETフレームワーク

ワークフロー

動的フォーム

変換フレームワーク

テンプレートエンジン

カレンダー

タスクスケジューラー

目次

  1. このドキュメントについて
  2. 印刷定義ファイル
  3. 帳票フォームファイル
  4. 印刷プロパティファイル
  5. PrintService定義ファイル
  6. PrintDriver定義ファイル
    1. PrintDriverのファクトリクラス名を定義
    2. 別マシンのファサード型ドライバの呼び出し設定
    3. jndi_list.xmlの記述内容


このドキュメントについて

このドキュメントは、PEXA PrintFrameworkの各種設定、定義ファイルの仕様ガイドです。


印刷定義ファイル

PEXA PrintFrameworkは以下の定義ファイルや設定ファイルを実行エンジンが読み込んで動作します。

  1. PrintService定義ファイル
    PrintServiceName毎の以下の情報を定義します。

    • 帳票フォームファイルのパス
    • 帳票のサブフォーム指定(オプション)
    • 帳票フィールドと業務項目のマッピング情報
    • データ操作用のHelperクラス指定

  2. PrintDriver定義ファイル
    PrintタイプとPrintDriverのファクトリクラス名を定義します。
    上記のファイルをプロジェクトワークスペースの所定のフォルダに格納してビルドすることで、 実行エンジンが読み込む以下のような一覧ファイルが生成されます。

    • ${PRJHOME}/build/env/print/client_print.entry
    • ${PRJHOME}/build/env/print/ear_print.entry
    • ${PRJHOME}/build/env/print/server_print.entry

    これらのファイルには
    • 印刷タイプと印刷ドライバの対応情報
    • PrintServiceNameとPrintService定義ファイルのマッピング一覧
    が含まれていて、その情報を元に実行エンジンは印刷実行時に指定された PrintServiceNameに対応するPrintService定義ファイルの内容を読み込み、 指定された印刷タイプに対応する印刷ドライバを呼び出すことで印刷処理を実行します。

  3. 印刷プロパティファイル
    PrintDriver定義ファイルの設定に従って、印刷ミドルウェアに対応したドライバが呼び出されます。
    そのドライバが読み込むファイルとして印刷プロパティファイルがあります。
    これは、ドライバが呼び出す印刷ミドルウェアに渡すパラメータを記述する物です。スプールディレクトリの設定などがあります。

  4. 帳票フォームファイル
    最後に、ドライバから呼び出された印刷ミドルウェア側が読み込むファイルとして、帳票フォームファイルがあります。
    これは印刷ミドルウェア側が提供する帳票デザインツールによって作成される物で、帳票自体のレイアウトおよび印字する文字のフィールドが含まれています。 このファイルと印刷フレームワークが生成して渡してくるフィールドに埋め込む値をマージして実際の帳票が印刷されます。

以下でそれぞれのファイルの内容について説明します。


帳票フォームファイル

帳票フォームファイルは印刷ミドルウェア側が提供する帳票デザインツールによって作成される物で、 帳票自体のレイアウトおよび印字する文字のフィールドが含まれています。

ファイル形式などは印刷ミドルウェア毎の独自形式となり、基本的には帳票レイアウトをデザインするための開発ツールが提供されています。
その開発ツールによってフォームファイルを作成することになります。

作成したフォームファイルはプロジェクトワークスペースの以下のフォルダに格納してください。

印刷ミドルウェアにSVF利用時の場合

  ${PRJHOME}/src/print/svf
印刷ミドルウェアにJasperReports利用時の場合
  ${PRJHOME}/src/print/jasper
このパスは、後述するjndi_list.xmlの接続設定情報で指定するものなので、そちらと合わせてください。


印刷プロパティファイル

印刷プロパティファイルは、印刷ミドルウェアに対応したドライバに読み込ませる設定値を記述するファイルです。
Javaのプロパティファイル形式をとります。

このファイルは、プロジェクトワークスペースの以下のフォルダに格納してください。

  ${PRJHOME}/src/print/res
また、ファイルの拡張子は必ず".native"としてください。
上記のフォルダに.nativeという拡張子でファイルを保存しておくことで、ビルド対象となりnative2asciiツールによって".properties"のファイルに変換されます。

標準提供ドライバ用の印刷プロパティファイル

PEXA追加機能パッケージによって提供される、SVFおよびJasperReports対応のドライバでは以下の名前のファイルを読み込みます。

  env/print/res/LocalPrintService
これは標準で提供される以下のプロパティファイルをビルドすることによって生成されます。
  ${PRJHOME}/src/print/res/LocalPrintService.native
この標準提供のプロパティファイルの設定内容について以下で説明します。


標準提供ドライバ用の印刷プロパティファイルの設定項目

標準提供のLocalPrintService.nativeには以下の設定項目があります。
これはSVF利用時もJasperReports利用時も同じとなります。
なお、独自のドライバをプロジェクト固有で作成した場合は、ドライバ毎の仕様となります。

設定キー 設定内容
local_spool_directory 生成したPDFを格納する位置の指定。
JBOSSのCATALINA HOME(SystemPropertyのcatalina.home)からの相対パスとなる。
JBossのバージョン毎に指定すべきパスが異なるので、下記の記述サンプルを参照すること。
local_spool_uri 生成されたPDFを外部からHTTPでアクセスする際に、URLとして指定するパスの指定。

標準提供ドライバ用の印刷プロパティファイルのサンプル
#---------------------------------------------------------------
# Current-Module:   LocalPrintService.native
# Release-Date:     $Date:: 2011-05-02 22:08:12 #$
# Release-Version:  $Revision: 6370 $
# First-Created-On: 2009/01/30
# First-Created-By: 
# Copy-Right-Owner:
#--------------------------------------------------------------------------------
# Description : 
#   LocalPrintService properties
#   these are used by PrintServiceDriver Beans
#--------------------------------------------------------------------------------
#--------------------------------------------------------------------------------
# local_spool_directory:
#	it is where the spool PDF file is put to.
#	must to set the directory where be able to be accessed via HTTP.
#	in JBoss, it will be accessible from the directory where
#	the System property "catalina.home" indicates relatively.
#--------------------------------------------------------------------------------
# for JBoss4.0.x setting
#--------------------------------------------------------------------------------
#local_spool_directory	deploy/jbossweb-tomcat55.sar/ROOT.war/print/svf_spool/
#--------------------------------------------------------------------------------
# for JBoss4.2.x setting
#--------------------------------------------------------------------------------
local_spool_directory	deploy/jboss-web.deployer/ROOT.war/print/pdf_spool/
#--------------------------------------------------------------------------------
# for JBoss6.0.x setting
#--------------------------------------------------------------------------------
#local_spool_directory	deploy/ROOT.war/print/pdf_spool/

#--------------------------------------------------------------------------------
# local_spool_uri:	
#	it is where the spool PDF can be accessed via HTTP.
#	that is; the web server need to be configured that URI's real directory path 
#	is local_spool_directory.
#--------------------------------------------------------------------------------
local_spool_uri		print/pdf_spool/

#--------------------------------------------------------------------------------
# local_printer_name:
#   it is target printer name on local host.
#   if this property value is "PDF", print result is generated as PDF file.	
#--------------------------------------------------------------------------------
local_printer_name	PDF

#--------------------------------------------------------------------------------
# local_print_servlet:	
#   servlet base URI for local print service
#--------------------------------------------------------------------------------
local_print_servlet	printDirect


PrintService定義ファイル

PrintService定義ファイルは、印刷処理の実行内容を定義するためのファイルです。
PrintServiceName毎の対応する帳票フォームファイルや、フォームファイル中の各フィールドにマッピングする業務項目などを記述します。

このファイルは、プロジェクトワークスペースの以下のフォルダに格納してください。

  ${PRJHOME}/src/print/service
また、ファイルの拡張子は必ず".print"としてください。
上記のフォルダに.printという拡張子でファイルを保存しておくことで、ビルド対象となり一覧ファイルに登録されます。

例:
  ${PRJHOME}/src/print/service/月次集計表印刷.print

以下がPrintService定義ファイルの記述例です。
個々の設定内容については以降で説明します。

記述例:

(print
    ;--------------------------------------------------------------------------
    ; 印刷定義
    ;--------------------------------------------------------------------------
    printType       svf             ;Printタイプ(PrintDriver定義で記述したもの)
    print_name      TESTSUB         ;PrintServiceName(システム内でユニークであること)
    option          reportWriter    ;帳票のサブフォーム指定(オプション)
    formFile        TESTSUB.frm     ;フォームSVF定義ファイル名
    ;--------------------------------------------------------------------------
    ; フィールドマッピング
    ;--------------------------------------------------------------------------
    {field
        顧客番号                印刷請求データモデル.顧客番号
        お客様名                印刷請求データモデル.お客様名
        郵便番号                印刷請求データモデル.郵便番号
        住所1__!imeg.server.util.print.helper.TestFormatHelper(testx,testy)      印刷請求データモデル.住所
        開始日__yyyy/MM/dd      印刷請求データモデル.開始日
        終了日__yyyy/MM/dd      印刷請求データモデル.終了日
        {請求明細
            品名        印刷請求データモデル.請求明細リスト.品名
            数量        印刷請求データモデル.請求明細リスト.数量
            単価        印刷請求データモデル.請求明細リスト.単価
        }
    }
    ;--------------------------------------------------------------------------
    ; ヘルパクラス定義
    ;--------------------------------------------------------------------------
    (helper_class               ;データ操作用のHelperクラス指定
        (TestHelper
            path    imeg.server.util.print.helper.TestHelper
            param0  AAAA
            param1  BBBB
        )
    )
)

printType属性

printタイプ(プリンタドライバ)を設定します。
PrintDriver定義ファイルのprint_driverセクションで宣言されているPrintタイプを指定します。


print_name属性

PrintService名を指定します。
この名前はシステム内で必ずユニークになる必要があります。

ここで宣言されたPrintService名が、ServiceFrameworkのprintプロセスでsheet宣言で指定されることになります。


option属性

プリント形態として、サブフォームを持つ場合に、"reportWriter"を指定します。
現行のドライバーでは、"reportWriter"のみサポートされています。


formFile属性

SVF等の印刷フォーム設定ファイル名を指定します。
帳票フォームファイルを格納するベースディレクトリはjndi_list.xmlに指定します。


field情報

基本的に帳票フォームファイルフィールド名と、そこに割り当てる値のマッピングという形式で構成されます。
左辺が帳票フォームファイル上のフィールド名で、右辺が値の指定となります。

値の指定方法にはいくつか種類がありますので、以下で順に説明します。


[データモデル内の項目の値を指定する場合]

印刷対象データとして渡されたデータモデル内の項目を指定する場合には以下のようにします。

形式:
    {field
        {帳票フィールド名}    {session_value宣言で指定されたデータモデルのキー名}.{データモデル内の業務項目名}
    }
例:session_value宣言で指定されたデータモデル内の項目を指定
    {field
        郵便番号    印刷対象データ.郵便番号
        住所        印刷対象データ.住所
        氏名        印刷対象データ.氏名
    }


[データモデル内の明細リストの値を指定する場合]

この場合は一覧表示する箇所の印刷データを指定する形になりますので、その一覧部分のフィールドのまとまりを サブセクションを設けてグルーピングし、その中でフィールド名と明細部分の項目をマッピングする形になります。

ここで指定するサブセクション名は任意の名称になります。特に帳票フォームファイルとリンクしていません。
フィールドのまとまりを表すわかりやすい名前をつけてください。ただしその帳票内では重複しない名称にしてください。

明細の階層は任意です。明細の明細がある場合は重ねて指定します。

形式:
    {field
        {任意のサブセクション名
            {帳票フィールド名}    {session_value宣言で指定されたデータモデルのキー名}.{明細を表す項目名1}.{明細を表す項目名N}.{明細内の業務項目名}
        }
    }
例:session_value宣言で指定されたデータモデル内の顧客リストの項目を展開
    {field
        {顧客一覧
            郵便番号    印刷対象データ.顧客リスト.郵便番号
            住所        印刷対象データ.顧客リスト.住所
            氏名        印刷対象データ.顧客リスト.氏名
        }
    }


[データモデル内の項目にパス式を適用して指定する場合]

データモデルにマスタなどを指すProxy項目が含まれている場合は、パス式を適用してその先の名称などを引くことが出来ます。

形式:
    {field
        {帳票フィールド名}    {session_value宣言で指定されたデータモデルのキー名}.{データモデル内の業務項目名}/{現象型パス式}
    }
例:session_value宣言で指定されたデータモデル内の商品在庫リストの項目を商品Noから展開
    {field
        {商品一覧
            商品コード    印刷対象データ.在庫リスト.商品No/商品コード
            商品名        印刷対象データ.在庫リスト.商品No/商品名称
            在庫数        印刷対象データ.在庫リスト.在庫数
        }
    }


[日付のフォーマット指定]

値の型がjava.util.Dateの場合、印刷した際の日付文字列フォーマットを指定することが出来ます。
日付フォーマットはフィールド名の後ろにアンダースコア("_")を2つ続けた後に指定します。

形式:
    {field
        {帳票フィールド名}__{日付フォーマット文字列}    {session_value宣言で指定されたデータモデルのキー名}.{データモデル内の業務項目名}
    }
例:yyyy/MM/ddの形式で支払日というフィールドに値をマッピングする
    {field
        支払日__yyyy/MM/dd    印刷対象データ.日付
    }


[ヘルパクラスの指定]

データモデルから取得した値オブジェクトをフィールドに表示するための文字列に変換するヘルパクラスを指定することが出来ます。
ヘルパクラス名およびそれに対するパラメータををフィールド名の後ろにアンダースコア("_")を2つ続けてエクスクラメーション("!")をつけた後に指定します。
ここで指定したクラスについての情報は後述のhelper_class情報セクションで記述します。

形式:
    {field
        {帳票フィールド名}__!{値変換のヘルパクラス名}(パラメータ)    {session_value宣言で指定されたデータモデルのキー名}.{データモデル内の業務項目名}
    }
例:
    {field
        住所1__!imeg.server.util.print.helper.TestFormatHelper(testx,texty)    印刷対象データ.住所
}


helper_class情報

データ操作用のHelperクラスの情報をセットします。
このHelperクラスは、フィールド情報ごとのデータ編集前に実行されますので、印刷データの印字フォーマットの変更等の処理を指定できます。

(TestHelper                 ;Helper名
    path        imeg.server.util.print.helper.TestHelper
    param0      AAAA
    param1      BBBB
)
  • Helper名項目

    Helperの名称を指定します。
    特にチェックはしていませんが、Helperクラスごとにユニークな名称をつける必要があります。

  • path属性

    Helperクラスのクラス名を指定します。

  • param属性

    Helperクラスに渡すパラメータを指定します。
    複数のパラメータを指定するために属性名の後に数字を1文字入れます



PrintDriver定義ファイル

PrintDriver定義ファイルは、印刷タイプに対応する印刷ドライバのファクトリクラス名を記述します。
ここで記述された内容はビルドツールによって一覧ファイルに転写され、実行エンジン読み込まれます。

このPrintDriver定義ファイルはプロジェクトワークスペースにおける格納場所及びファイル名が決まっています。
以下のファイルとなります。

  ${PRJHOME}/src/print/print_driver.entry
上記のファイルがPrintDriver定義ファイルとなります。
初期情報として、SVFおよびJasperReports対応のドライバファクトリクラス名が既に記述されています。
それ以外の印刷ミドルウェアを使用する場合、ドライバを実装した上でこのファイルにファクトリクラスを登録してください。

PrintDriverのファクトリクラス名を定義

PrintタイプとPrintDriverの生成ファクトリクラス名を対応づける情報です。
以下のように、左辺側に印刷タイプを表す任意の名称、右辺側にその印刷タイプに対応したPrintDriverを生成するファクトリクラス名を指定します。

例:PEXAが提供するSVF対応のPrintDriver生成ファクトリの場合

    (printer_driver
        svf        pexa.ext.share.service.print.svf.SVFPrintServiceFacadeFactory
        svf_local  pexa.ext.share.service.print.svf.SVFPrintServiceFactory
    )
例:PEXAが提供するJasperReport対応のPrintDriver生成ファクトリの場合
    (printer_driver
        jasper        pexa.ext.share.service.print.jasper.JPPrintServiceFacadeFactory
        jasper_local  pexa.ext.share.service.print.jasper.JPPrintServiceFactory
    )
プリントドライバーは同一アプリケーションサーバーマシンに印刷ミドルウェアを搭載する時はドライバーファクトリクラスを指定し、
別マシンに印刷ミドルウェアを搭載する時はファサード型ドライバファクトリクラスを指定します。

印刷ミドルウェアのライセンス(CPUライセンス等)の都合によっては、呼び出し元のアプリケーションサーバーではなく別マシンに印刷ミドルウェアを搭載するケースがあります。
そのようなケースで別マシンの印刷ドライバを呼び出すための設定を次で説明します。


別マシンのファサード型ドライバの呼び出し設定

別マシンのアプリケーションサーバーで稼働する印刷ドライバを呼び出す場合は、
そちらのサーバー側とJNDI接続するための情報を以下のファイルに登録します。

    ${PRJHOME}/env/mapping/list/jndi_list.xml
このファイルはJNDI接続設定を複数セット登録することが出来るようになっています。
それぞれのJNDI接続設定には任意の名称を付けることが出来るようになっています。

なお、特に指定されない限りはこのjndi_list.xmlはearファイル中のクラスパスから読み込まれます。
以下のJavaVM起動オプションを指定することで特定パスのファイルを読み込ませることもできます。

jndi_list.xmlのファイルパス指定形式:
    -Dpexa.facade.grand.url.jndi_list={読み込ませたいjndi_list.xmlのURL}
記述例:
    -Dpexa.facade.grand.url.jndi_list=file:///opt/jboss/env/mapping/list/jndi_list.xml
なお、上記のようにearのクラスパスではなく特定のファイルパスを指定した場合、
jndi_list.xmlが参照するDTDファイル(jndi_list.dtd)をセットで配置する必要があります。
このDTDファイルはjndi_list.xmlからの相対パスで"../dtd/jndi_list.dtd"と指定されているので、
たとえば以下のようなフォルダ構成で配置して下さい。
    /opt/jboss/env/mapping/list/jndi_list.xml
    /opt/jboss/env/mapping/dtd/jndi_list.dtd

jndi_list.xml中に記述されている、どの設定を使用するかは呼び出し元の
アプリケーションサーバー起動時のJavaVM起動オプションで指定することが出来ます。

適用するJNDI設定の指定形式:
    -Dprint_jndi={jndi_list.xmlに登録した接続設定名}
指定例:
    -Dprint_jndi=print_server_001
JavaVM起動オプションでの指定が無い場合は、デフォルトで"local_jndi_print"という設定名が適用されます。
jndi_list.xmlに記述する内容は次で説明します。


jndi_list.xmlの記述内容

jndi_list.xmlでのJNDI接続設定の例を以下に記述します。

 <!-- プリンタドライバ用イニシャルコンテキスト -->
  <jndi name="local_jndi_print" sync="false">
    <property>
        <entry key="java.naming.factory.initial" value="org.jnp.interfaces.NamingContextFactory" />
        <entry key="java.naming.provider.url" value="jnp://192.168.100.136:1099" />
        <entry key="print.svf.form.url" value="/env/print/svf/" />
        <entry key="print.svf.spool.url" value="http://192.168.100.136:8080"/>
        <entry key="print.jasper.form.url" value="/env/print/jasper/" />
        <entry key="print.jasper.spool.url" value="http://192.168.100.136:8080"/>
    </property>
  </jndi>
以下のような設定項目があります。

設定キー 設定値
java.naming.factory.initial 必須。JNDI接続する際に使用するInitialContextFactory実装クラスの指定です。
java.naming.provider.url 必須。JNDI接続先のURL指定です。
print.svf.form.url SVF使用時に必須。フォームファイルの格納フォルダパスです。
print.svf.spool.url SVF使用時に必須。PDF生成時に返すURLのコードベースです。
print.jasper.form.url JasperReports使用時に必須。フォームファイルの格納フォルダパスです。
print.jasper.spool.url JasperReports使用時に必須。PDF生成時に返すURLのコードベースです。


更新情報

  • 最終更新者 : $Author: morishita $
  • 最終更新日時 : $Date:: 2011-05-02 22:08:12 #$
  • バージョン : $Revision: 6370 $



Copyright © 2006, Atrris Corporation