Packagejp.co.fujitsu.reffi.client.flex.model
Classpublic class BaseModel
InheritanceBaseModel Inheritance flash.events.EventDispatcher
Implements IModel
Subclasses ConsumerCore, DefaultModel, LocalConnectionReceiverCore, LocalConnectionSenderCore, ProducerCore, RPCCore, TimerProcessCore, UserInteractiveCore

[概 要]

全てのModelの基底クラスです.

[詳 細]

この基底Modelクラスを継承したModelクラスは、以下の三つのイベントを ディスパッチする処理を実装する必要が有ります。 Model処理成功イベント このイベントがコントローラにキャッチされることで、 BaseAction#successForwardがコールバックされるようになります。
     var modelSuccessEvent:ModelProcessEvent = new ModelProcessEvent(ModelProcessEvent.SUCCESS);
     modelProcessEvent.cause = event;
     dispatchModelSuccess(modelSuccessEvent);
     
Model処理失敗イベント: このイベントがコントローラにキャッチされることで、 BaseAction#failureForwardがコールバックされるようになります。
     var modelFailureEvent:ModelProcessEvent = new ModelProcessEvent(ModelProcessEvent.FAILURE);
     modelProcessEvent.cause = event;
     dispatchModelFailure(modelProcessEvent);
     
Model処理完了イベント Action内での登録モデル数分のこのイベントがコントローラにキャッチされることで、 BaseAction#completeがコールバックされるようになります。
     var modelFinishedEvent:ModelProcessEvent = new ModelProcessEvent(ModelProcessEvent.FINISHED);
     modelFinishedEvent.cause = event;
     dispatchModelFinished(modelFinishedEvent);
     

[備 考]

F/Wパッケージ内に存在する、.model.~Coreクラスにはイベントディスパッチ処理が既に実装されています。 これらのクラスを継承する場合は、イベントディスパッチ処理を実装する必要は有りません。

Copyright (c) 2008-2009 FUJITSU Japan All rights reserved.



Public Properties
 PropertyDefined By
  controller : BaseController
[概 要] このモデルを起動したコントローラインスタンスです.
BaseModel
  executeIndex : int
[概 要] 実行インデックス設定.
BaseModel
  parameterMapping : ParameterMapping
[概 要] MVC各レイヤを伝播するパラメータオブジェクトです.
BaseModel
  skip : Boolean
[概 要] このモデルを実行するか、コントローラが判断する為のフラグです.
BaseModel
  successCount : int
[概 要] モデルインスタンス生存中に、何回モデル処理が成功したかを保持します.
BaseModel
Public Methods
 MethodDefined By
  
[概 要] モデル処理失敗イベントを発行するメソッドです.
BaseModel
  
[概 要] モデル処理完了イベントを発行するメソッドです.
BaseModel
  
[概 要] モデル処理成功イベントを発行するメソッドです.
BaseModel
  
[概 要] ModelProcessEvent.SUCCESS発行回数を1増加させます.
BaseModel
  
run():void
[概 要] コントローラにコールされるモデルの主幹メソッドです.
BaseModel
Protected Methods
 MethodDefined By
  
[概 要] run()が終了したタイミングでテンプレートコールされるメソッドです.
BaseModel
  
mainProc():void
[概 要] 主処理テンプレートメソッドです.
BaseModel
  
postProc():void
[概 要] 後処理テンプレートメソッドです.
BaseModel
  
preProc():Boolean
[概 要] 前処理テンプレートメソッドです.
BaseModel
  
trap(e:Error):Error
[概 要] run()内で発生した全例外をハンドリングするメソッドです.
BaseModel
Property Detail
controllerproperty
controller:BaseController

[概 要]

このモデルを起動したコントローラインスタンスです.

[詳 細]

[備 考]


Implementation
    public function get controller():BaseController
    public function set controller(value:BaseController):void
executeIndexproperty 
executeIndex:int

[概 要]

実行インデックス設定.

[詳 細]

モデル実行時のインデックスを設定します。

[備 考]


Implementation
    public function get executeIndex():int
    public function set executeIndex(value:int):void
parameterMappingproperty 
parameterMapping:ParameterMapping

[概 要]

MVC各レイヤを伝播するパラメータオブジェクトです.

[詳 細]

[備 考]


Implementation
    public function get parameterMapping():ParameterMapping
    public function set parameterMapping(value:ParameterMapping):void
skipproperty 
skip:Boolean

[概 要]

このモデルを実行するか、コントローラが判断する為のフラグです.

[詳 細]

このフラグがtrueの場合、コントローラはこのモデルを実行しません。

[備 考]

下記例の場合、予約モデルは3つですが、実行されるのは2つになります。


Implementation
    public function get skip():Boolean
    public function set skip(value:Boolean):void

Example
一回目の通信結果を判断して二回目の実行モデルを切り替える
           override protected function reserveModels(models:Array):void{
               // 実行する可能性の有るモデルを予め登録
               models.push(Class(HTTPServiceCore));
               models.push(Class(ConsumerCore));
               models.push(Class(ProducerCore));
           }
         
           override public function nextModel(index:int, prev:ModelProcessEvent, next:BaseModel):Boolean {
               switch(index){
                   case 0:
                       HTTPRequestCore(next).url = "webcontroller";
                       ((HTTPRequestCore)next).addUrlParameter("model.fqcn", "demo.server.model.DataFetchModel");
                       break;
                   case 1:
                       // 一回目の通信結果を取得してMVCを伝播するParameterMappingに保存します
                       var dao:DataDao = (DataDao)prev.getResult();
                       parameterMapping.setParameter("dao", dao);
          
                       if(this.dao.getDivision() == 0) {
                           ConsumerCore(next).destination = "chat1";
                       }else {
                           // 想定外なのでスキップ。ConsumerCoreをコントローラに実行させない
                           ConsumerCore(next).skip = true;
                       }
                       break;
                   case 2:
                       // 保存しておいた一回目の通信結果を取り出します
                       dao = parameterMapping.getParameter("dao");
                       if(dao.getDivision() == 1) {
                           ProducerCore(next).destination = "chat1";
                           ProducerCore(next).messageBody = handleName + "が入室しました。";
                       }else{
                           // 想定外なのでスキップ。PublishCoreをコントローラに実行させない
                           ProducerCore(next).skip = true;
                       }
                       break;
               }
               return true;
           }
         
successCountproperty 
successCount:int

[概 要]

モデルインスタンス生存中に、何回モデル処理が成功したかを保持します.

[詳 細]

継承モデルがModelSuccessEvent.SUCCESSイベントをディスパッチした回数を返却します。

[備 考]

Consumerのように継続して結果を受信する機能モデルは、 処理終了するまでこの値が継続的にインクリメントされます。


Implementation
    public function get successCount():int
    public function set successCount(value:int):void
Method Detail
dispatchModelFailure()method
public function dispatchModelFailure(event:ModelProcessEvent):void

[概 要]

モデル処理失敗イベントを発行するメソッドです.

[詳 細]

このモデルに登録されているモデル処理監視リスナ群 に対して処理が成功したことを通知します。 このイベントが発行されると、コントローラはアクションにfailureFoward通知を行います。

[備 考]

Parameters

event:ModelProcessEvent — モデル失敗処理結果が入ったModelProcessEventインスタンス 


Example
ModelProcessEventを生成してから使用します。
           var modelFailureEvent:ModelProcessEvent = new ModelProcessEvent(ModelProcessEvent.FAILURE);
           modelProcessEvent.cause = event;
           dispatchModelFailure(modelFailureEvent);
         
dispatchModelFinished()method 
public function dispatchModelFinished(event:ModelProcessEvent):void

[概 要]

モデル処理完了イベントを発行するメソッドです.

[詳 細]

このモデルに登録されているモデル処理監視リスナ群 に対して処理が完了したことを通知します。 コントローラが実行委譲した全てのモデルが完了すると、 コントローラはアクションに対してcomplete通知を行います。

[備 考]

Parameters

event:ModelProcessEvent — モデル失敗処理結果が入ったModelProcessEventインスタンス 


Example
ModelProcessEventを生成してから使用します。
           var modelFailureEvent:ModelProcessEvent = new ModelProcessEvent(ModelProcessEvent.FAILURE);
           modelProcessEvent.cause = event;
           dispatchModelFailure(modelFailureEvent);
         
dispatchModelSuccess()method 
public function dispatchModelSuccess(event:ModelProcessEvent):void

[概 要]

モデル処理成功イベントを発行するメソッドです.

[詳 細]

モデル処理成功回数を1増加させ、このモデルに登録されているモデル処理監視リスナ群 に対して処理が成功したことを通知します。 このイベントが発行されると、コントローラはアクションにsuccessFoward通知を行います。

[備 考]

Parameters

event:ModelProcessEvent — モデル成功処理結果が入ったModelProcessEventインスタンス 


Example
ModelProcessEventを生成してから使用します。
           var modelSuccessEvent:ModelProcessEvent = new ModelProcessEvent(ModelProcessEvent.SUCCESS);
           modelProcessEvent.cause = event;
           dispatchModelSuccess(modelSuccessEvent);
         
finallyProc()method 
protected function finallyProc():void

[概 要]

run()が終了したタイミングでテンプレートコールされるメソッドです.

[詳 細]

デフォルト処理は有りません。 オーバーライドしてこのモデルの終了処理を実装します。

[備 考]

incrementSuccessCount()method 
public function incrementSuccessCount():int

[概 要]

ModelProcessEvent.SUCCESS発行回数を1増加させます.

[詳 細]

successCountプロパティをインクリメントします。

[備 考]

Returns
int — インクリメント後のsuccessCountプロパティ値
mainProc()method 
protected function mainProc():void

[概 要]

主処理テンプレートメソッドです.

[詳 細]

デフォルト処理は有りません。 オーバーライドしてこのモデルのメイン処理を実装します。

[備 考]

postProc()method 
protected function postProc():void

[概 要]

後処理テンプレートメソッドです.

[詳 細]

デフォルト処理は有りません。 オーバーライドしてこのモデルの主処理後処理を実装します。

[備 考]


Throws
Exception — オーバーライド先で発生する可能性が有る例外
preProc()method 
protected function preProc():Boolean

[概 要]

前処理テンプレートメソッドです.

[詳 細]

デフォルト処理はtrueを返却します。 mainprocよりも先に呼ばれるメソッドです。 オーバーライドして、主処理の前に行う初期化を記述します。 nullを返却すると、それ以降のモデル処理は中止されます。

[備 考]

Returns
Boolean — 以降の処理を継続するかどうかのフラグ(デフォルト:true)
run()method 
public function run():void

[概 要]

コントローラにコールされるモデルの主幹メソッドです.

[詳 細]

モデル処理の基本フローを構築します。 下記のテンプレートメソッドが順にテンプレートコールされます。
  1. preproc()
  2. mainproc()
  3. postproc()
  4. finalproc()
上記メソッド内で例外が発生した場合、trapメソッドがテンプレートコールされます。

[備 考]

例外が発生した場合、デフォルト動作としてModel処理失敗イベントが発火されますが、 trapオーバーライドメソッドでnullを返却すると、このイベントは発火されません。

trap()method 
protected function trap(e:Error):Error

[概 要]

run()内で発生した全例外をハンドリングするメソッドです.

[詳 細]

デフォルト処理は有りません。 オーバーライドしてこのモデルの例外ハンドリング処理を実装します。

[備 考]

Parameters

e:Error — オーバーライド先で発生する可能性が有るエラー

Returns
Error — 引数eか、trapオーバーライドメソッドで変換されたエラー