Packagejp.co.fujitsu.reffi.client.flex.model.timer
Classpublic class TimerProcessCore
InheritanceTimerProcessCore Inheritance BaseModel Inheritance flash.events.EventDispatcher

[概 要]

一定周期で任意の処理を行う為の機能モデルクラスです.

[詳 細]

以下のプロパティを設定することで動作します。 TimerProcessCoreオブジェクトは、上記の設定によって指定周期毎にModelProcessEvent.SUCCESSイベントを発行し、
コントローラによってTimerProcessCoreをリザーブしたアクションのsuccessForwardメソッドがコールバックされます。

5秒毎に3回successForwardを呼び出すアクション

        public class SimpleTimerAction extends BaseAction {
            
            override protected function reserveModels(models:Array):void {
                models.push(Class(TimerProcessCore));
            }
            
            override public function nextModel(index:int, prev:ModelProcessEvent, next:BaseModel):Boolean {
                if(index == 0) {
                    TimerProcessCore(next).timerId = "simpleTimer";
                    TimerProcessCore(next).interval = 5000;
                    TimerProcessCore(next).repeat = 3;
                }
                
                return true;
            }
            
            override public function successForward(index:int, model:BaseModel, resultEvent:Event):void {
                trace("5秒毎に計3回コールバックされます");
            }
        }
  
又、intervalActionプロパティが設定されていると、指定周期毎にコントローラに intervalAction(BaseAction継承クラス)の実行を委譲します。
この場合、TimerProcessCoreをリザーブしたアクションのsuccessForwardが呼ばれる契機は、intervalActionの終了、
つまりintervalAction#complete()が呼ばれるタイミングになります。
以下のコードはサーバ時間を取得するアクションを定期的に実行します。

サーバ時間を取得するアクション

java.util.Dateを返却するリモートRPCメソッドを実行します。

        public class ServerDateFetchAction extends BaseAction {
            
            override protected function reserveModels(models:Array):void {
                models.push(Class(RemoteObjectCore));
            }
            
            override public function nextModel(index:int, prev:ModelProcessEvent, next:BaseModel):Boolean {
                if(index == 0) {
                    RemoteObjectCore(next).remoteDestination = "serverInformation";
                    RemoteObjectCore(next).methodName = "getServerTime";
                }
                
                return true;
            }
            
            override public function successForward(index:int, model:BaseModel, resultEvent:Event):void {
                trace("ServerDateFetchAction#successForward : サーバ時間 = " + ResultEvent(resultEvent).result);
            }
            
            override public function complete():void {
                trace("ServerDateFetchAction#complete : ServerDateFetchAction完了");
            }
        } 
  
ServerDateFetchActionを定期的に実行するアクション

regularityRemoteAccessというTimerIDで3秒間隔でServerDateFetchActionを実行します。
3回実行した後、TimerProcessCoreManagerを介して明示的にタイマーを止めています。

        public class ExecuteActionByTimerAction extends BaseAction {
            
            override protected function reserveModels(models:Array):void {
                models.push(Class(TimerProcessCore));
            }
            
            override public function nextModel(index:int, prev:ModelProcessEvent, next:BaseModel):Boolean {
                if(index == 0) {
                    TimerProcessCore(next).timerId = "regularityRemoteAccess";
                    TimerProcessCore(next).interval = 3000;
                    TimerProcessCore(next).intervalAction = Class(ServerDateFetchAction);
                }
                
                return true;
            }
            
            override public function successForward(index:int, model:BaseModel, resultEvent:Event):void {
                trace("ExecuteActionByTimerAction#successForward : ServerDateFetchAction実行成功");
                if(model.successCount == 3) {
                    TimerProcessCoreManager.getInstance().stop("regularityRemoteAccess");
                }
            }
            
            override public function complete():void {
                trace("ExecuteActionByTimerAction#complete :タイマー終了");
            }
        }
  
・実行結果
  ServerDateFetchAction#successForward : サーバ時間 = Fri Sep 25 21:47:24 GMT+0900 2009
  ServerDateFetchAction#complete : ServerDateFetchAction完了
  ExecuteActionByTimerAction#successForward : ServerDateFetchAction実行成功
  ServerDateFetchAction#successForward : サーバ時間 = Fri Sep 25 21:47:27 GMT+0900 2009
  ServerDateFetchAction#complete : ServerDateFetchAction完了
  ExecuteActionByTimerAction#successForward : ServerDateFetchAction実行成功
  ServerDateFetchAction#successForward : サーバ時間 = Fri Sep 25 21:47:30 GMT+0900 2009
  ServerDateFetchAction#complete : ServerDateFetchAction完了
  ExecuteActionByTimerAction#successForward : ServerDateFetchAction実行成功
  ExecuteActionByTimerAction#complete :タイマー終了
  

[備 考]

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



Public Properties
 PropertyDefined by
  active : Boolean

[概 要]

開始状態を指定します.
TimerProcessCore
 Inheritedcontroller : BaseController

[概 要]

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

[概 要]

実行インデックス設定.
BaseModel
  interval : Number

[概 要]

タイマー実行間隔です.
TimerProcessCore
  intervalAction : Class

[概 要]

インターバル実行するアクションクラスです.
TimerProcessCore
 InheritedparameterMapping : ParameterMapping

[概 要]

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

[概 要]

繰り返す回数を指定します.
TimerProcessCore
 Inheritedskip : Boolean

[概 要]

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

[概 要]

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

[概 要]

使用するタイマーの識別子です.
TimerProcessCore
Public Methods
 MethodDefined by
 Inherited

[概 要]

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

[概 要]

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

[概 要]

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

[概 要]

ModelProcessEvent.SUCCESS発行回数を1増加させます.
BaseModel
  
resultHandler(event:TimerEvent):void

[概 要]

タイマーイベントのハンドラです.
TimerProcessCore
 Inherited
run():void

[概 要]

コントローラにコールされるモデルの主幹メソッドです.
BaseModel
Protected Methods
 MethodDefined by
 Inherited
finallyProc():void

[概 要]

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

[概 要]

タイマーの開始、終了を行います.
TimerProcessCore
  
onSuccess(event:TimerEvent):void

[概 要]

オーバーライド用タイマーイベントハンドラです.
TimerProcessCore
 Inherited
postProc():void

[概 要]

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

[概 要]

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

[概 要]

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

[概 要]

開始状態を指定します.

[詳 細]

true:tick開始
false : tick停止

[備 考]

The default value is true.

実装
    public function get active():Boolean
    public function set active(value:Boolean):void
intervalproperty 
interval:Number  [read-write]

[概 要]

タイマー実行間隔です.

[詳 細]

実行間隔をミリ秒で指定します。

[備 考]

実装
    public function get interval():Number
    public function set interval(value:Number):void
intervalActionproperty 
intervalAction:Class  [read-write]

[概 要]

インターバル実行するアクションクラスです.

[詳 細]

このプロパティが設定されている場合は、タイマーイベントでこのアクションが コントローラに実行委譲されます。

[備 考]

実行するアクションの処理が、intervalプロパティで指定した時間内に終わらない ものであった場合、負荷が累積します。
その場合、アクションの処理を軽減するか、intervalプロパティを長く設定するなどの対処が必要です。

実装
    public function get intervalAction():Class
    public function set intervalAction(value:Class):void

repeatproperty 
repeat:int  [read-write]

[概 要]

繰り返す回数を指定します.

[詳 細]

intervalを何回繰り返すかを指定します。
指定が無い場合、無制限に実行されます。

[備 考]

実装
    public function get repeat():int
    public function set repeat(value:int):void
timerIdproperty 
timerId:String  [read-write]

[概 要]

使用するタイマーの識別子です.

[詳 細]

タイマーをストップさせる為に使用します。
同時に同じtimerIdを持つTimerを実行しようとするとCoreLogicErrorがスローされます。

[備 考]

実装
    public function get timerId():String
    public function set timerId(value:String):void
Method detail
mainProc()method
protected override function mainProc():void

[概 要]

タイマーの開始、終了を行います.

[詳 細]

activeプロパティがtrueの場合はタイマー開始、falseの場合はタイマー停止します。
具体的なタイマー制御処理はTimerProcessCoreManagerに委譲されます。

[備 考]

onSuccess()method 
protected function onSuccess(event:TimerEvent):void

[概 要]

オーバーライド用タイマーイベントハンドラです.

[詳 細]

継承クラスでタイマーイベントをハンドリングする為に使用します。

[備 考]

パラメータ
event:TimerEvent
resultHandler()method 
public final function resultHandler(event:TimerEvent):void

[概 要]

タイマーイベントのハンドラです.

[詳 細]

intervalAction指定が無い場合にTimerによってコールバックされます。

[備 考]

パラメータ
event:TimerEvent