PEXA Serviceについて

チュートリアル

テストツール

定義ファイル

基本プロセス

拡張プロセス

Condition

セッション

モデル

リファレンス

環境設定

目次

  1. プロセス基本書式
    1. debug属性
    2. before_conditionセクション
    3. after_conditionセクション
    4. error宣言部
    5. format_type属性
    6. format_typeセクション


プロセス基本書式

以下で、サービス定義のprocessセクション内に記述するプロセスの基本書式を説明します。
プロセスは全てこの基本書式に従って記述します。

後述するformat_type属性の指定によって、format_typeセクション内の記述がそれぞれ別の書式になります。
format_type毎の書式についてはそれぞれのリファレンスを参照して下さい。

基本書式:


(プロセス名
    debug属性                   (0|1)
    before_conditionセクション  (0|1)
    format_type属性             (1)
    format_typeセクション       (1)
    after_conditionセクション   (0|1)
    errorセクション             (0|1)
)

記述注:
    属性        あらかじめ決められた値を選択する(true/falseなど)
    宣言部      値または、値のリストを設定する
    セクション  入れ子で他の属性、宣言部、セクションを保持する可能性がある
                (値又は、値のリストが設定される場合もある)

    (1):必須
    (0|1):オプション
    (1以上):一個以上必須
    (0以上):0個以上(オプション)


以下で、基本書式内のそれぞれの要素について説明します。

debug属性

概要:
debug出力を行うか否かを設定する。
"true"を設定することで、サービスの実行の前後にプロセスに渡された、実行結果のServiceSessionの内容が標準出力にdumpされる。
(JBOSSにおいては合わせて"server.log"に出力される)
アプリケーションサーバーのJVMオプションで

    -Dpexa_debug=true
が設定されている場合、"false"を設定することで、概要ServiceProcessにおける"ServiceSession"の出力を抑制することができる。

キー:
「debug」(固定|オプション)

形式:
Key・固定値

区分:
true / false

記述例:

    debug   true


before_conditionセクション

概要:
プロセスの前提条件を記述する。
ServiceProcessの実行時に最初に評価される。
偽の場合の例外処理方法についても指定を行う。

キー:
「before_condition」(固定|オプション)

形式:
Key・値または、Key・複数値または、マップ形式又は、マップのリスト形式

宣言部の記述方法の詳細は、サービス定義の解説のconditionセクション書式を参照のこと。


after_conditionセクション

概要:
プロセスの終了条件を記述する。
ServiceProcessの終了後に評価される。
偽の場合の例外処理方法についても指定を行う。

キー:
「after_condition」(固定|オプション)

形式:
Key・値または、Key・複数値または、マップ形式又は、マップのリスト形式

宣言部の記述方法の詳細は、サービス定義の解説のconditionセクション書式を参照のこと。


error宣言部

概要:
ServiceProcess実行時に非システム例外が発生した場合の例外ハンドラを指定する。
エラーハンドラには、

  • JavaHelperクラスの呼び出し
  • SessionBeanHelerの呼び出し
  • エラーメッセージ指定例外送信
  • エラー番号付エラーメッセージ例外送信
  • Directive指定(&Skipまたは&Return)
を指定することができる。
error宣言部が存在しない場合は、外部ServiceProcessHelperまたは、format_typeセクションで生成した例外内容がそのまま返される。

キー:
「error」(固定|オプション)

形式:
Key・値またはKey・複数値

記述1:JavaHelperクラスを指定する

    error   !パッケージ名を含むJavaクラス名
値の先頭に"!"をつけて、パッケージ名を含むJavaのクラス名を指定する。

記述例:
        error   !imeg.share.error.service.交通費精算書.交通費精算書保存ServiceErrorHandler
javaのクラスは、下記のインタフェースを実装する必要がある。
        pexa.share.service.process.ServiceProcessErrorHandler
実行時には上記インタフェースの下記のメソッドが呼び出される
        public ServiceSession handle(Service service, ServiceSession session, Exception ex) throws ServiceException, FatalException;
  • service:例外が発生したService
  • session:例外発生時のServiceSession
  • ex:プロセス又は、外部ServiceHelperから送信された例外
なお、pexaは外部Helperクラスオブジェクトを取得するに当たって、下記の順番でメソッド、コンストラクタを検索する
  1. staticなgetInstance(pexa.share.util.res.Resource)
  2. staticなgetInstance()
  3. pexa.share.util.res.Resourceを引数に持つコンストラクタ
  4. デフォルトコンストラクタ

記述2:SessionBeanHelperを指定する

    error   !JNDIパス名
値の先頭に"!"をつけて、SessionBeanのJNDIパス名を指定する。
ただし、JNDIパス名に":"が含まれていること(":"の有無でSessionBeanの呼び出しであるか否かを判断している)

記述例:
        error   !facade:KoutsuhiSeisansyoServiceErrorHandler
SessionBeanは、下記のインタフェースを実装する必要がある
        pexa.share.service.ServiceErrorHandlerFacade
実行時には上記インタフェースの下記のメソッドが呼び出される
        public ServiceSession handle(ServiceProcess process, ServiceSession session, ServiceException ex) throws ServiceProcessException, FatalException;
  • process:例外が発生したServiceProcess
  • session:例外発生時のServiceSession
  • ex:発生した例外

記述3:エラーメッセージを指定して例外送信

    error   "エラーメッセージ"
指定された例外メッセージを含むpexa.share.service.ServiceProcessExceptionを生成して例外を送信する。
このとき、ServiceExceptionに設定されるFatalReasonには、エラー番号"-402"ServiceProcessエラーが設定される。
(FatalReasonのサブクラスにはpexa.share.service.ServiceFatalReasonが使用される)
エラーメッセージには先頭が"!"で始まらない文字列を指定する。
エラーメッセージに空白を含む場合はダブルクオートでメッセージを囲む。

記述例:
        error   "XXの実行に失敗しました。"

記述4:エラー番号付エラーメッセージ例外送信

    error   "エラーメッセージ",エラー番号
指定された例外メッセージおよび、指定されたエラー番号によるpexa.share.service.UserServiceFatalReasonが設定されたpexa.share.service.ServiceExceptionを送信する。
エラーメッセージには先頭が"!で始まらない文字列を指定する。"
エラーメッセージに空白を含む場合はダブルクオートでメッセージを囲む。
エラー番号には正の数値を指定すること。

記述例:
        error   "XXの実行に失敗しました。"

記述5:Directive指定

    error   &Skip
    error   &Return
サービスを正常終了する。
プロセスの実行又は、外部ServiceHelperで例外が発生してもサービス呼び出し側にそれを通知したくない場合に利用する。


format_type属性

概要:format_typeセクションの種類を指定する。
キー:format_type毎に固定。選択可能なformat_typeは以下の通り。

  • session:sessionの操作を行う
  • search:modelの検索を行う
  • count:modelの検索結果件数を取得する
  • mapping:modelの生成、更新を行う
  • iterator:Listや配列の件数を元にprocessの繰り返し処理を行う
  • loop:条件を元にprocessの繰り返し処理を行う
  • call:他のサービスを呼び出す
  • process:Helperクラス実行もしくは他プロセスのグループ化を行う
  • print:印刷フレームワークを呼び出して印刷を行う
  • convert:変換フレームワークを呼び出して変換処理を行う
  • send:モデルイベントの送信を行う

形式:
Key・値

記述例:

	format_type search

format_typeの拡張
JVMパラメータ"service_process"にformat_type名と対応するクラス名のリストが記述されているファイルのURLを指定することで、format_typeを動的に追加できる。 既存のformat_typeについても指定先に重複した名前でクラスが指定されいた場合はそのクラスに置き換えられる。

なお、拡張するクラスは

	pexa.share.service.process.ServiceProcessSourceItem
を実装したクラスで、デフォルトコンストラクタを持つ必要がある。


format_typeセクション

概要:
format_type毎の固有情報を記述する

キー:
format_type毎に固定

形式:
マップ

記述:
各format_type書式を参照



更新情報

  • 最終更新者 : $Author: tann $
  • 最終更新日時 : $Date:: 2016-01-06 13:14:29 #$
  • バージョン : $Revision: 8375 $



Copyright © 2006, Atrris Corporation