customagent_src.zip ファイルに含まれるクラスを使用して、ユーザーがアプリケーションを操作するたびにメトリックデータを記録するカスタムエージェントを作成することができます。ユーザーの操作を記録して再生するエージェントを作成する方法については、再生エージェントの作成を参照してください。
customagent_src.zip ファイルに含まれるカスタムエージェントは、CustomAdapter クラスです。このクラスは、イベントデータをデータベースに書き出す HTTPService を呼び出します。
CustomAdapter クラスがサポートするクラスは次のとおりです。
これらのクラスに加え、ZIP ファイルには環境 XML ファイルおよびこのファイルを解析するユーティリティクラスも含まれています。
また、ユーザーのセッション情報を提供するカスタムエージェントから RemoteObject にアクセスすることもできます。例を単純化するため、ここではデータをデータベースに書き込むのではなくトレースログに書き出します。
CustomAdapter クラスとそれがサポートするファイルを使用して、オートメーションイベントを記録する Flex アプリケーションを作成するには、このセクションの手順説明に従います。
このカスタムエージェントは、異なる環境情報を使用するエージェント(Flex のオートメーション機能に含まれる QTP エージェントなど)と一緒には使用できません。そのため、この例のエージェントを使用する場合は、QTP を使用してスクリプトを記録することは避けてください。
オートメーション API を使用して自動化可能なイベントを記録するアプリケーションを作成するには、まず次のことを実行する必要があります。
環境の設定を終えたら、CustomAdapter クラスを編集して、Flex アプリケーションの操作を記録するように設定します。
CustomAdapter クラスは、recordHandler() メソッドの RECORD イベントを処理します。RECORD イベントには、次のプロパティがあります。
var obj:IAutomationObject = event.automationObject; var label:String = automationManager.getProperties(obj, ["label"])[0];
for (var i:int = 0; i<event.args.length; i++) {
trace("event.args[" + i + "]: " + event.args[i]);
}
CustomAdapter の recordHandler() メソッドのデフォルトバージョンには、イベント情報をデータベースに書き込むコードが含まれています。データベースを設定せずに例を実行できるよう、メソッドを単純化するには、このセクションの手順に従います。手順を実行し終えたら、前に戻ってデータベースを作成し、CustomAdapter クラスの recordHandler() メソッドを取り消すことができます。
trace("automation name:" + obj.automationName);
trace("event name:" + event.name);
trace("replayable event:" + event.replayableEvent);
trace("event target:" + event.target);
// Arguments to be sent are '#' separated.
var arguments:String = event.args.join("#");
trace("args:" + arguments);
// Show all event args.
for (var i:int = 0; i<event.args.length; i++) {
trace("event.args[" + i + "]: " + event.args[i]);
}
trace("------------------------");
後でサービスメソッドのコメントを解除すれば、データベースサポートを追加できます。
trace("in CustomAdapter constructor")
こうすると、アプリケーションの起動時にカスタムエージェントを確実にインスタンス化できます。
compc -source-path+=c:/myfiles/flex3/agent -include-classes
custom.CustomAdapter custom.CustomAutomationClass
custom.CustomAutomationEventDescriptor
custom.CustomAutomationMethodDescriptor
custom.CustomAutomationPropertyDescriptor
custom.CustomEnvironment
custom.utilities.EnvXMLParser
-library-path+=c:/home/dev/depot/flex/sdk/frameworks/libs
-output=c:/myfiles/flex3/agent/CustomAgent.swc
こうすると、c:/myfiles/flex3/agent ディレクトリに CustomAgent.swc ファイルが作成されます。
Flex でオートメーションを使用するには、Flex アプリケーションとそれがサポートするラッパーファイルを作成する必要があります。
<?xml version="1.0"?>
<!-- agent/Main.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" height="100%" width="100%">
<mx:Script><![CDATA[
private function changeLabel(newLabel:String):void {
b1.label = newLabel;
}
]]></mx:Script>
<mx:TextInput id="ti1" text=""/>
<mx:Button id="b1" label="Change Label" click="changeLabel(ti1.text)" />
</mx:Application>
mxmlc -include-libraries+=c:/myfiles/flex3/agent/CustomAgent.swc c:/myfiles/flex3/agent/Main.mxml
これにより、c:/myfiles/flex3/agent ディレクトリに Main.swf が作成されます。
<html><body> <script src="mysource.js"></script> </body></html>
document.write("<object id='tempId' classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' height='100%' width='100%'>");
document.write("<param name='src' value='Main.swf'/>");
document.write("<embed name='Main' src='Main.swf' height='100%' width='100%'/>");
document.write("</object>");
XML ファイルは実行時にロードされるため、Web サーバー上の SWF ファイルからアクセス可能になっている必要があります。
http://localhost:8100/flex/agent/index-simple.html
in CustomAdapter constructor automation name:ti1 event name:SelectText event target:[object AutomationManager] args:0#0 event.args[0]: 0 event.args[1]: 0 ------------------------ automation name:ti1 event name:Input event target:[object AutomationManager] args:42 event.args[0]: 42 ------------------------ automation name:Change Label event name:Click event target:[object AutomationManager] args: ------------------------
このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート