Ben, I would love to see a new reincarnation of Benorama.
Bravo to "Flex2/ColdFusion7 best practices!" And of course with your excellent internationalization solutions. Speaking of I18, how are you handling I18 with your current flex coldfusion, coldspring, Modelglue architecture. Cheers, Tim --- In [email protected], "Benoit Hediard" <[EMAIL PROTECTED]> wrote: > > Hi Tim, > > > are you using Cairngorm2 yet? > > Yes, we are using Cairngorm2 on a pretty large Flex/ColdFusion project. > > Our architecture : > - ColdFusion MX 7 Standard + Flash Media Server 2 + SQL Server 2005 (we do > not plan to use Flex Enterprise Services), > - Flash (Flex 2). > > Frameworks used : > - ColdSpring to handle our CFC-based model/service layers, > - Model-Glue to handle our CFC/CFM-based view/controller layers for the HTML > client, > - Cairngorm to handle our AS3/MXML model/view/controller layers for the > Flash client. > > I'm a big fan of those three frameworks : lightweight and powerful. > We never used ARP, so I have no opinions on it. > > As soon as I have some times (maybe this week-end...), I'll write a sample > Flex/ColdFusion application (probably, a Cairngorm 2 version of Ben Forta's > Phones app). > > Benoit Hediard > > PS: Later this year, I also plan to rebuild entirely benorama.com (not > updated since 2002 for CFMX launch...), in order to put all the latest > Flex2/ColdFusion7 best practices! > > > -----Message d'origine----- > De : [email protected] [mailto:[EMAIL PROTECTED] De la > part de sufibaba > Envoyé : mardi 7 février 2006 23:08 > À : [email protected] > Objet : [flexcoders] Re: Flex/Coldfusion connectivity test app > > Thanks for the excellent reply. > > You saved the day. > > We do have CF working with Flex. There's also the Phones example on the > Adobe Labs site that shows this connectivity. All of this is working fine. > The challenge we were having was with the new version of Cairngorm. We have > been using ARP for a flash application that is to be migrated to flex2 and > we need to get a bit of advice from the creator of Cairngorm -- who is now > Adobe, to suggest a best practice example that shows how coldfusion is the > "perfect mate" for flex2. > > The login example that was given is a bit too simplified and also did not > include how coldfusion. > > If Adobe wants to sell coldfusion with flex, then it would be beneficial to > demonstrate via examples how things could work together. > > Anyhow, aside from our wish list to Adobe, > > Merci Beaucoup for your excellent tutorial and sharing your experiences, > especially the bugs. > > BTW, are you using Cairngorm2 yet? or what type of architecture are you > using. > > P.S. I used your Benorama architecture for a project and was very happy > with it. What are your thoughts on Cairngorm and the upcomming > ARP3 for flex2. > > Cheers, > > Tim > > > > --- In [email protected], "Benoit Hediard" <ben@> wrote: > > > > This sample app also shows how CFC/AS3 VO mappings (or remote class > alias) > > works. > > > > Have fun! > > > > Benoit Hediard > > > > -----Message d'origine----- > > De : [email protected] [mailto:[EMAIL PROTECTED] > De la > > part de Benoit Hediard > > Envoyé : mardi 7 février 2006 20:37 > > À : [email protected] > > Objet : [flexcoders] Flex/Coldfusion connectivity test app > > > > Since some people seems to have issues to use the Flex/ColdFusion > > connectivity, here is a sample app to test your connectivity. > > > > ------------------------ > > ColdFusion / Server side > > ------------------------ > > > > Save the following value object CFC in > > {wwwroot}/com/mycompany/myapp/model/TestVO.cfc > > <cfcomponent> > > > > <cfproperty name="someString" type="String" /> <cfproperty > name="someNumber" > > type="Numeric" /> > > > > <cffunction name="init" returntype="com.mycompany.myapp.model.TestVO"> > > <cfscript> > > this.someString = "test"; > > this.someNumber = 0; > > </cfscript> > > <cfreturn this /> > > </cffunction> > > > > </cfcomponent> > > > > Save the following remote service CFC in > > {wwwroot}/com/mycompany/myapp/service/TestService.cfc > > <cfcomponent> > > > > <cffunction name="getArray" access="remote" returntype="Array"> > > <cfscript> > > var data = arrayNew(1); > > arrayAppend(data, createObject("component", > > "com.mycompany.myapp.model.TestVO").init()); > > arrayAppend(data, createObject("component", > > "com.mycompany.myapp.model.TestVO").init()); > > </cfscript> > > <cfreturn data /> > > </cffunction> > > > > <cffunction name="getStruct" access="remote" returntype="Struct"> > > <cfscript> > > var data = structNew(); > > data.firstData = createObject("component", > > "com.mycompany.myapp.model.TestVO").init(); > > data.secondData = createObject("component", > > "com.mycompany.myapp.model.TestVO").init(); > > </cfscript> > > <cfreturn data /> > > </cffunction> > > > > <cffunction name="receiveAndReturnVO" access="remote" > > returntype="com.mycompany.myapp.model.TestVO"> > > <cfargument name="vo" type="com.mycompany.myapp.model.TestVO"> > > <cfreturn arguments.vo> > > </cffunction> > > > > </cfcomponent> > > > > ------------------ > > Flex / Client side > > ------------------ > > > > Save the following value object in {some test > > project}/com/mycompany/myapp/model/TestVO.as > > package com.mycompany.myapp.model { > > > > [Bindable] > > [RemoteClass(alias="com.mycompany.myapp.model.TestVO")] > > > > public class TestVO { > > > > public var someString:String; > > public var someNumber:int; > > > > public function TestVO() { > > someString = ""; > > someNumber = 0; > > } > > > > } > > > > } > > > > Save the following test application in Flex Builder 2 {some test > > project}/TestConnectivity.mxml <?xml version="1.0" encoding="utf-8"?> > > <mx:Application xmlns:mx="http://www.macromedia.com/2005/mxml" > xmlns="*"> > > > > <mx:RemoteObject id="testService" > > destination="ColdFusion" > > result="onResult(event)" > > source="com.mycompany.myapp.service.TestService" /> > > > > <mx:Script> > > <![CDATA[ > > import com.mycompany.myapp.model.TestVO; > > import mx.controls.Alert; > > import mx.rpc.events.ResultEvent; > > import mx.utils.ObjectUtil; > > > > private function onResult(event:ResultEvent){ > > > Alert.show(ObjectUtil.toString(event.result)); > > } > > ]]> > > </mx:Script> > > > > <mx:Button label="getArray" click="testService.getArray()" /> > > > > <mx:Button label="getStruct" click="testService.getStruct()" /> > > <!-- BUGS : display (null) value instead of objects, but objects are > > > correctly returned... --> > > > > <mx:Button label="receiveAndReturnVO" > > click="testService.receiveAndReturnVO(new TestVO())" /> > > > > </mx:Application> > > > > Compile and run TestConnectivity.mxml (do not forget to set the > > compile argument to take into account your flex/coldfusion service > > definition, > > "flex-enterprise-services.xml") > > > > It should work, if your ColdFusion server is correctly configured > with the > > Flex/ColdFusion connectivity add-on. > > You can also check the adapter logs in > > {CFusionMX7}/runtime/logs/coldfusion-out.log, very nice to see if > the typed > > objects are correctly received or sent by the ColdFusion adapter. > > > > ---- > > BUGS > > ---- > > > > We have faced several bugs with the Flex/ColdFusion connectivity. > > > > 1. In the above sample app, getStruct() display (null) object in the > Flex > > app, but objects are correctly returned... Strange. > > > > 2. Sometimes, the AS -> CFC does not map the full type correctly. > > Example : the CFC might receive "TestVO" instead of > > "com.mycompany.myapp.model.TestVO", so the CFC argument type > validation will > > fail and you will get an error... > > The current workaround is to remove typed object validation in remote > > service CFCs. > > > > 3. You might have to add UPPERCASE setter functions for CFC -> AS > > translation to work correctly. > > We don't know yet when it is necessary... But sometimes it does! > > > > Example in TestVO.as : > > public function set SOMESTRING(value:String):void { > > this.someString = value; > > } > > > > public function set SOMENUMBER(someNumber:int):void { > > this.someNumber = someNumber; > > } > > > > --------------------------- > > COLDFUSION WITH CAIRNGORM 2 > > --------------------------- > > > > In order to use your service CFCs in a cairngorm application, you > just need > > to add the RemoteObject definition in your ServiceLocator definition > file. > > > > Hope this helps! > > > > Benoit Hediard > > > > > > > > > > > > > > -- > > Flexcoders Mailing List > > FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt > > Search Archives: > http://www.mail-archive.com/flexcoders%40yahoogroups.com > > Yahoo! Groups Links > > > > > > > > -- > Flexcoders Mailing List > FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt > Search Archives: http://www.mail-archive.com/flexcoders%40yahoogroups.com > Yahoo! Groups Links > -- Flexcoders Mailing List FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt Search Archives: http://www.mail-archive.com/flexcoders%40yahoogroups.com Yahoo! Groups Links <*> To visit your group on the web, go to: http://groups.yahoo.com/group/flexcoders/ <*> To unsubscribe from this group, send an email to: [EMAIL PROTECTED] <*> Your use of Yahoo! Groups is subject to: http://docs.yahoo.com/info/terms/

