アプリケーションの初期時に、AutomationManager クラスが作成されます。このクラスはその init() メソッドで、Event.ADDED イベントのリスナーを追加します。
次の図は、アプリケーションの初期化時および AutomationManager クラスによる委譲マップの作成時の、イベントの順序を示しています。
- SystemManager クラスが表示リストを作成します。これは、アプリケーションを構成する可視オブジェクトのツリーです。
- 表示リストのルートにまたは表示リストの他のメンバーの子として、新しいコンポーネントが追加されるたび、SystemManager は Event.ADDED イベントを送出します。
- AutomationManager は ADDED イベントをリッスンします。このイベントはその ADDED イベントハンドラで、Automation クラスのメソッドを呼び出します。次に、そのクラスの委譲をインスタンス化します。
- Automation クラスは、表示リスト内の各コンポーネントを、その完全なクラス名にマッピングします。
- 委譲クラスを作成すると、委譲クラスマップ内にそのインスタンスへの参照が追加されます。委譲クラスは次に、記録中のイベントを処理して、シーケンスを再生します。
これで、委譲はコンポーネントに「登録」されたものと見なされます。委譲クラスはコンポーネントのイベントのイベントリスナーを追加し、コンポーネントがこれらのイベントをトリガすると AutomationManager を呼び出します。
表示リストのコンポーネントがインスタンス化され、その委譲クラスのインスタンスにマッピングされると、AutomationManager はイベントをリッスンして処理のためエージェントに転送することができる状態になります。
次の図は、ユーザーが記録可能イベントであるアクションを実行する際の操作のフローを示しています。ここではユーザーはアプリケーションの Button コントロールをクリックします。
- ユーザーが Flex アプリケーションの Button コントロールをクリックします。SystemManager が MouseEvent.CLICK イベントを送出します。
- Button コントロールのオートメーション委譲である ButtonAutomationImpl クラスが、click イベントをリッスンします。委譲の click イベントハンドラで、委譲が AutomationManager の recordAutomationEvent() メソッドを呼び出します多くの場合ボタンもユーザーのアクションに応答する click イベントハンドラを定義していますが、それは表示されません。
- AutomationManager の recordAutomationEvent() メソッドは、AutomationRecordEvent.RECORD イベントを送出します。このイベントでは、replayableEvent プロパティは元の click イベントを参照します。
- カスタムのエージェントクラスは RECORD イベントをリッスンします。このクラスは RECORD イベントを受け取ると、replayableEvent プロパティを使用して元のイベントのプロパティにアクセスします。
- エージェントはイベントプロパティをデータベースに記録するか、ログに記録するか、または記録前にユーザーに関する情報を取得します。