PEXA Serviceについて

チュートリアル

テストツール

定義ファイル

基本プロセス

拡張プロセス

Condition

セッション

モデル

リファレンス

環境設定

目次

  1. はじめに
  2. ServiceHelper
  3. ServiceCondition
  4. ServiceErrorHandler
  5. ServiceProcessCondition
  6. ServiceProcessErrorHandler
  7. ServiceProcessHelper
  8. SessionObservableFilter
  9. SessionValueProducer


はじめに

このドキュメントは、サービス定義から呼び出せるHelperクラスについてのリファレンスです。

Helperクラスは、サービスフレームワークでは用意されていない機能や、ある業務特有の複雑な処理などを プログラムとして作成して、サービス定義ファイル内から呼び出すことが出来る物です。

これにより、フレームワーク側で標準でサポートしていない機能を外部からプラグインすることが可能になります。
以降で、Helperクラスの種類及びそれぞれが実装すべきインタフェースについて解説します。


ServiceHelper

プラグインポイント:
Service定義ファイルのservice宣言部

実装すべきインタフェース:
pexa.share.service.ServiceHelper

抽象基底クラス:
無し

処理を実装すべきメソッド:

/**
 * Serviceを実行する
 * @param session 実行時サービスセッション
 * @return 実行結果を格納したサービスセッション
 * @throws ServiceException サービス実行時に業務的なエラーが発生
 * @throws FatalException 致命的エラー発生
 * @throws RemoteException 致命的エラー発生
 */
public Session doService(Session session) throws ServiceException, FatalException;

説明:
サービスの処理を丸ごとHelperクラスとして実装する場合に作成するHelperクラスです。
このHelperクラスを使用すると言うことは、Service定義ファイルはこのHelperクラスを呼び出すための踏み台としてのみ使用されることになります。


ServiceCondition

プラグインポイント:
Service定義ファイルのbefore_conditionセクション もしくはafter_conditionセクションclass宣言部

実装すべきインタフェース:
pexa.share.service.ServiceCondition

抽象基底クラス:
無し。

処理を実装すべきメソッド:

/**
* 条件評価を行う。
* @param service  前提条件の対象となったService
* @param session  実行時サービスセッション
* @return 処理のAbortやReturnの必要が無い場合に判定結果を格納したセッションを返す。
* @throws ServiceException 判定結果が偽の場合でAbortまたはReturnする必要がある場合
* @throws FatalException 致命的エラー発生
*/
public Session evaluate(Service service, Session session) throws ServiceException, FatalException;  

説明:
Serviceの前提条件もしくは終了条件を判定するためのHelperクラスです。
判定結果が偽の場合で処理をAbortもしくはReturnする必要があればServiceExceptionをthrowすること。

(Processの前提・終了条件ではないので注意!)
Service定義で記述できるfilterやexistの記述では処理できないような判定を行う場合に使用してください。


ServiceErrorHandler

プラグインポイント:
Service定義ファイルのbefore_conditionセクション もしくはafter_conditionセクションerror宣言部

実装すべきインタフェース:
pexa.share.service.ServiceErrorHandler

抽象基底クラス:
無し。

処理を実装すべきメソッド:

public Session handle(Service service, Session session, Exception ex) throws ServiceException, FatalException;

説明:
Serviceの前提条件もしくは終了条件でエラー判定となった場合のエラーハンドリング処理を行うHelperクラスです。
(Processの前提・終了条件ではないので注意!)
エラー判定となった際に特殊な処理を行う必要があれば使用してください。


ServiceProcessCondition

プラグインポイント:
各プロセス内のbefore_conditionセクション もしくはafter_conditionセクション class宣言部

実装すべきインタフェース:
pexa.share.service.process.ServiceProcessCondition

抽象基底クラス:
無し。

処理を実装すべきメソッド:

/**
* 条件評価を行う。
* @param service  前提条件の対象となったServiceProcess
* @param session  実行時サービスセッション
* @return 処理のAbortやSkipやReturnの必要が無い場合に判定結果を格納したセッションを返す。
* @throws ServiceException 判定結果が偽の場合でAbort,Skip,Returnする必要がある場合
* @throws FatalException 致命的エラー発生
*/
public Session evaluate(ServiceProcess process, Session session) throws ServiceProcessException, FatalException;   

説明:
Processの前提条件もしくは終了条件を判定するためのHelperクラスです。
判定結果が偽の場合で処理をAbort,Skip,Returnする必要があればServiceProcessExceptionをthrowすること。

(Serivceの前提・終了条件ではないので注意!)
Service定義で記述できるfilterやexistの記述では処理できないような判定を行う場合に使用してください。


ServiceProcessErrorHandler

プラグインポイント:
各プロセス内のbefore_conditionセクション もしくはafter_conditionセクション error宣言部

実装すべきインタフェース:
pexa.share.service.process.ServiceProcessErrorHandler

抽象基底クラス:
無し。

処理を実装すべきメソッド:

/**
 * ServiceProcessの例外処理を行う
 * @param process 例外発生元プロセス
 * @param session 例外発生元処理session
 * @throws ServiceProcessException
 * @throws FatalException
 */
public Session handle(ServiceProcess process, Session session, ServiceException ex) throws ServiceProcessException, FatalException;

説明:
Processの前提条件もしくは終了条件でエラー判定となった場合のエラーハンドリング処理を行うHelperクラスです。
(Serviceの前提・終了条件ではないので注意!)
エラー判定となった際に特殊な処理を行う必要があれば使用してください。


ServiceProcessHelper

プラグインポイント:
processプロセスclass宣言部

実装すべきインタフェース:
pexa.share.service.process.ServiceProcessHelper

抽象基底クラス:
無し。

処理を実装すべきメソッド:

/**
 * ServiceProcessを実行する
 * @param session
 * @return
 */
public Session doProcess(Session session) throws ServiceProcessException, FatalException;

説明:
サービス内の1プロセス分の処理を実装するためのHelperクラスです。
サービス内の一部の処理を外部クラスにて実装したい場合に使用してください。


SessionObservableFilter

プラグインポイント:
searchプロセスfilterサブセクションもしくはextra_filterサブセクション

実装すべきインタフェース:
pexa.share.session.filter.SessionObservableFilter

抽象基底クラス:
無し。

処理を実装すべきメソッド:

/**
 * Filterを取得する
 * @param session
 * @return
 * @throws FatalException
 */
public Filter getFilter(Session session) throws FatalException;

説明:
データモデルを検索するための検索条件を表すFilterオブジェクトを作成するHelperクラスです。
searchプロセスのモデル検索条件式では記述できないような検索条件を構成したい場合に使用してください。


SessionValueProducer

プラグインポイント:
sessionプロセスsession_keysセクション内の右辺値

実装すべきインタフェース:
pexa.share.session.producer.SessionValueProducer

抽象基底クラス:
無し。

処理を実装すべきメソッド:

/**
 * Sessionの内容から値を生成する
 * @param session
 * @return パラメータ不足などによる値が生成できない場合はnullを返す。
 * @throws FatalException
 */
public Object getValue(Session session) throws FatalException;

説明:
Session値を動的に出力するためのHelperクラスです。
Session上に保持したい値の取得処理が複雑になる場合などに使用してください。


更新情報

  • 最終更新者 : $Author: morishita $
  • 最終更新日時 : $Date:: 2010-03-10 17:55:53 #$
  • バージョン : $Revision: 4846 $



Copyright © 2006, Atrris Corporation