I've tried both creating commands in the result handler and by using
the Task framework. I like the Task framework because it's more
modular in that it helps keep the commands independent. Having said
that, I'm having problems getting it working.
I created a task per command and each task dispatches the message for
the command and wait for the results. Then I've created a sequential
task group and added each task and then start the group. Here is an
example of one of my tasks:-
package mytasks
{
import org.spicefactory.lib.task.Task;
import org.spicefactory.parsley.asconfig.ActionScriptContextBuilder;
import MyMessage;
import MyModel;
public class MyTask extends Task
{
[Inject(id="myModel")] [Bindable]
public var myModel:MyModel;
[MessageDispatcher]
public var messageDispatcher:Function;
public function MyTask()
{
super();
ActionScriptContextBuilder.build(MyConfig);
}
protected override function doStart():void {
messageDispatcher(new MyMessage());
}
[MessageHandler]
public function handleMyMessage(message:MyMessage):void {
if (message.success == true) {
myModel.debug = "success";
complete();
} else {
error("my task failed");
}
}
}
}
And my configuration file contains:-
<model:MyModel id="myModel"/>
<spicefactory:DynamicCommand type="{MyCommand}" selector="execute"
result="handleResult" error="handleError"/>
My command is:-
package mycommands
{
import mx.controls.Alert;
import mx.collections.ArrayCollection;
import mx.rpc.AsyncToken;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
import mx.rpc.remoting.RemoteObject;
import MyMessage;
import MyModel;
public class MyCommand {
[Inject(id="ro")]
public var service:RemoteObject;
[Inject(id="myModel")]
public var myModel:MyModel;
public function execute (message:MyMessage) : AsyncToken {
return service.getRemoteData(myModel.id);
}
public function handleResult(result:ResultEvent,
message:MyMessage):void {
if (result.result != null) {
myModel.dataCollection = result.result as ArrayCollection;
message.success = true;
}
}
public function handleError(fault:FaultEvent, trigger:MyMessage):void {
Alert.show(fault.toString());
}
}
}
But when I run this I get "value is not a function".
So what have I missed or left out?
Chris
--
Chris Velevitch
Manager - Adobe Platform Users Group, Sydney
m: 0415 469 095
www.apugs.org.au
Adobe Platform Users Group, Sydney
Topic: Deploying Coldfusion into the Cloud
Date: 26th September 6pm for 6:30 start
Details and RSVP on
http://apugs.groups.adobe.com/index.cfm?event=post.display&postid=38239