Packagejp.co.fujitsu.reffi.client.flex.model
Classpublic class BaseModel
InheritanceBaseModel Inheritance flash.events.EventDispatcher
ImplementsIModel
SubclassesConsumerCore, 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
  
finallyProc():void

[概 要]

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

[概 要]

主処理テンプレートメソッドです.
BaseModel
  
postProc():void

[概 要]

後処理テンプレートメソッドです.
BaseModel
  
preProc():Boolean

[概 要]

前処理テンプレートメソッドです.
BaseModel
  
trap(e:Error):Error

[概 要]

run()内で発生した全例外をハンドリングするメソッドです.
BaseModel
Property detail
controllerproperty
controller:BaseController  [read-write]

[概 要]

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

[詳 細]

[備 考]

実装
    public function get controller():BaseController
    public function set controller(value:BaseController):void
executeIndexproperty 
executeIndex:int  [read-write]

[概 要]

実行インデックス設定.

[詳 細]

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

[備 考]

実装
    public function get executeIndex():int
    public function set executeIndex(value:int):void
parameterMappingproperty 
parameterMapping:ParameterMapping  [read-write]

[概 要]

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

[詳 細]

[備 考]

実装
    public function get parameterMapping():ParameterMapping
    public function set parameterMapping(value:ParameterMapping):void
skipproperty 
skip:Boolean  [read-write]

[概 要]

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

[詳 細]

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

[備 考]

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

実装
    public function get skip():Boolean
    public function set skip(value:Boolean):void


一回目の通信結果を判断して二回目の実行モデルを切り替える

        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  [read-write]

[概 要]

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

[詳 細]

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

[備 考]

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

実装
    public function get successCount():int
    public function set successCount(value:int):void

Method detail
dispatchModelFailure()method
public function dispatchModelFailure(event:ModelProcessEvent):void

[概 要]

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

[詳 細]

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

[備 考]

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


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

dispatchModelFinished()method 
public function dispatchModelFinished(event:ModelProcessEvent):void

[概 要]

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

[詳 細]

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

[備 考]

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


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

dispatchModelSuccess()method 
public function dispatchModelSuccess(event:ModelProcessEvent):void

[概 要]

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

[詳 細]

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

[備 考]

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


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プロパティをインクリメントします。

[備 考]

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

[概 要]

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

[詳 細]

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

[備 考]

postProc()method 
protected function postProc():void

[概 要]

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

[詳 細]

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

[備 考]


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

[概 要]

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

[詳 細]

デフォルト処理はtrueを返却します。

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

[備 考]

戻り値
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()内で発生した全例外をハンドリングするメソッドです.

[詳 細]

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

[備 考]

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

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