7 Replies Latest reply on Apr 21, 2010 10:09 AM by cheftimo

    Does Adobe have some beef with ColdFusion developers?

    cheftimo Level 2

      I think I will be keeping FB 4 after the trial expires. There are some very nice things about it and I especially like the new styling/skinning tools.

       

      I am not impressed with the new “data-centric” paradigm in FB 4. I see it as Adobe’s way to market FB 4 to hobbyists and other people who are not really serious about development, of whom there are many. Other than repeatedly pitching that you can do a bunch of things “without writing a single line of code”, there is not a lot of information out there about how the thing really works, and am hoping that situation improves as time passes. At this point, I am not planning to use those data-centric features, except perhaps for quick prototyping. Anybody who agrees can add to this thread: http://forums.adobe.com/thread/617704?tstart=30, in which I describe a few things I learned while playing with these features.

       

      I do my Flex back end work with ColdFusion and am also trying the new CF Builder. The $300 bucks it costs doesn’t affect us CFers because it comes with FB 4. From what I have seen so far, it does not do much more than the ColdFusion Extensions for Flex Builder, which were free.

       

      But there is one thing about which I am somewhat miffed: they took away two of the best things about the extensions:

       

      the ACtionScript to CFC wizard;

      the CFC to ActionScript wizard.

       

      Those make it very easy to generate a CFC from an AS value object and viceversa. I tried to install them in FB 4, but it won’t allow it, generating an error about a dependency or something.

       

      Those 2 items are great time - and error - savers. Without them, you have to do double the coding. I can’t figure out Adobe's reasoning for not making them available anymore; they are already there and all we need is a way to install them. Is Adobe so intent in pitching this “without writing a single line of code” that they are willing to take this great tool away from us?

       

      Am I the only one who would like to have these available?

       

      I would really appreciate it if someone can provide some logical reason for this and please, CORRECT ME IF I AM WRONG OR MISSING SOMETHING!

       

      Greetings to all,

       

      Carlos

       

        • 1. Re: Does Adobe have some beef with ColdFusion developers?
          david.t.lanton
          I am not impressed with the new “data-centric” paradigm in FB 4. I see it as Adobe’s way to market FB 4 to hobbyists and other people who are not really serious about development, of whom there are many. Other than repeatedly pitching that you can do a bunch of things “without writing a single line of code”,

           

          I use PHP not ColdFusion, so maybe we're not exactly on the same page. But had to comment that even with the Data Services, you still have to write code. Data Services just makes it easier to connect to the backend as it generates most of the AS needed (the AS value objects). So from tje point of view of someone using PHP, FB4 does an excellent job.

           

          The 2 CF plugins you're describing sound very much like what FB4 does now for PHP backend development. Are you sure they've been removed? That doesn't make sense. But again I don't know. When I click the Data menu, the first option is Data/Services, and the third is specifically for ColdFusion. Maybe they're hiding somewhere there.

          • 2. Re: Does Adobe have some beef with ColdFusion developers?
            Ansury Level 3

            I'm new to CF (Java skill set) but I could have sworn I did a tutorial where there was code like this being generated.  I think you should look into it more (maybe ask on the CF forums?) because right now I'm looking at an 'Extensions' tab where it lists "ActionScript Class Generator" and "Adobe CFS Generator".  (What that means or what they do, I dunno.)

             

            I don't think Adobe has anything in with CF developers (since that's the Adobe alternative it's a little crazy), if anything I thought CF integration was supposed to have gotten better.

            1 person found this helpful
            • 3. Re: Does Adobe have some beef with ColdFusion developers?
              cheftimo Level 2

              Yes, David, services or no services, you still have to write code. That is why it bugs me to see the constant “without writing a single line of code” pitch in all the supposedly-for-developers material in FDC. I don’t dig these materials being used to market the products by trying to make it appear that you don’t have to do a damn thing to come up with Flex applications. The pitch should be restricted to sales materials and has no place in a Developer  Center. I would much rather see real, meaningful information – like where the CF-Flex wizards went, and if they are no longer available, why. I don’t need Adobe to keep trying to sell me on the product; I already have it and want it, or I would not bother trying to get the information I need to use it.

               

              Yes, the Data/Services thing works OK, but I have two objections:

               

              1.    the SWFs generated are 20-24% bigger than if you code the service yourself (I tested this with a little project I created);

              2.    it looks like you have to call the service each time you want to bind the data to another control or to somehow use it more than one time. I could not figure out how to access the data that has come in from a service call and been bound to x control – and no one in these forums was willing or able to answer that when I asked the question in a previous post.

               

              The above (1 & 2) is all explained in a previous post, a link to which appears on the post that started this thread

               

              Following Ansury’s suggestion, I did some more digging (which I should have done from the beginning) and found 4 extensions to CF builder that are there for the taking. By installing two of them, I can now generate an AS class from a CFC and create a mapping between the two; but I cannot generate a CFC from an AS class. The FB 3 wizards did this both ways, but this is better than nothing.

               

              So, the ActionScript Class generator works fine. The CFC Generator gives you options to generate a traditional CFC or an ORM CFC; it works fine with the traditional, but all the ORM option generates is an error The version of this CFC generator shows as “Beta” in the FB 4 Extensions window; I am hoping that when the version is final, this problem will have been fixed.

               

              It would be nice if the comments keep coming; maybe I AM missing something here.

               

              Carlos

              • 4. Re: Does Adobe have some beef with ColdFusion developers?
                david.t.lanton Level 1
                Following Ansury’s suggestion, I did some more digging (which I should
                have done from the beginning) and found 4 extensions to CF builder that
                are there for the taking. By installing two of them, I can now generate
                an AS class from a CFC and create a mapping between the two; but I
                cannot generate a CFC from an AS class. The FB 3 wizards did this both
                ways, but this is better than nothing.

                That's good news. The rest you'll probably find out about by doing further reading. I don't use CF, but I really doubt FB4 has less than before.

                2.    it looks like you have to
                call the service each time you want to bind the data to another control
                or to somehow use it more than one time. I could not figure out how to
                access the data that has come in from a service call and been bound to x
                control – and no one in these forums was willing or able to answer that
                when I asked the question in a previous post.

                 

                Regarding 2, I'm assuming you're talking about PHP, No, you don't have to call the service each time you want to bind the data. You define the service, call it once to bring in the data, then bind to that data using .lastResult because the data is already in.

                 

                Here's the process I follow when I need data. I set up the class which let's say has a getRecords() method that returns data. I then use the data/services wizard as usual to introspect the class and set up the return types.

                 

                THEN in design mode, I just drag a useless datagrid (that I delete later) onto the screen. With the datagrid on the screen, I drag my method (getData() from the data/services view) to the datagrid. This sets up the service call and wires the dataProvider property of the datagrid. All I do after that is move around the code that's been generated to where I need it, before deleting the useless datagrid.

                 

                This defined your service. It can stay where it is.

                       xmlns:myservice="services.myservice.*"

                 

                        <myservice:MyService id="myService"
                                                         fault="Alert.show('some event fault message')"
                                                         showBusyCursor="true" />
                       
                        <s:CallResponder id="getRecordsResult" />

                 

                This is the call to your service that actually brings the data in. I move it to the init() function.

                private function init():void{

                    getRecordsResult.token = myService.getRecords();

                }

                 

                Then to use the data returned from getRecords(), you could either instruct the <s:CallResponder itself to wire its data when returns using result.

                        <s:CallResponder id="getRecordsResult"
                                                       result="{doFurtherDataProcessing()}" />

                 

                or tap into the data from anywhere at anypoint using lastResult. In this case the list is asking for the data.

                 

                <s:List dataProvider="getRecordsResult.lastResult" />

                 

                The first way with result means that the source of the data passes it to destination structures. The second way with lastResult means that the destination structures call for the data. But still they call for the data from its inside location, from where it's already sitting inside the app, they don't have to bring it in again from the outside, because the data has already been brought into the app by CallResponder once and is sitting and waiting to be used whenever.

                 

                Hope this helps you. For PHP, I recommend you watch the 2 videos by Tom Lane from Adobe on ADC. Must watch and very helpful. Rest will come from use. For CF, not sure, others may pitch in.

                1 person found this helpful
                • 5. Re: Does Adobe have some beef with ColdFusion developers?
                  cheftimo Level 2

                  OK David, thank you very much for your helpful reply. From what I can see, whether it’s CF of PHP, data is data, and once it has been brought in you can use it, manipulate it, whatever (I did watch the 2 Tom Lane videos). But I am still having a tough time figuring out exactly how. Following your example, I have attempted to see the data in the debugger, but no luck; I have tried looking at the variables and following a bunch of expressions like:

                   

                  getRecordsResult.token;

                  myService.getRecords();

                  getRecordsResult.lastResult;

                  List.dataProvider

                   

                  and others, putting breakpoints in the right places and even creating some phony functions to put breakpoint in them. I know the data is there because the app works, yet the debugger shows them all as null, undefined or non-existent.

                   

                  So, if you have time, I would like to know exactly how you would handle something like this:

                   

                  Let’s say your getRecordsResult.token is a list of products; you have the whole set and now want to show only the ones in category X. How would you refer to that list so you could filter it? I don’t need to know how to do the filtering but just the reference to the data.

                   

                  BTW, what I would like to see in ADC is examples or a little tutorial about this kind of thing instead of just repeatedly seeing “look what you can do without writing a single line of code”. I have not been able to find such an example or tutorial in ADC or anywhere else.

                   

                  Best regards,

                   

                  Carlos

                   

                  • 6. Re: Does Adobe have some beef with ColdFusion developers?
                    david.t.lanton Level 1

                    Some tips for you

                     

                    1) drag and drop methods from Data/Services onto the components you want to bind that data to and see what happens. The wizard is probably smart enough to help you.

                    2) and use code hinting to explore your available options in each component when stuck.

                    3) do lots of googling with "flex 4" added

                    • 7. Re: Does Adobe have some beef with ColdFusion developers?
                      cheftimo Level 2

                      OK David, I think I have the picture a lot better now than before I started my exchange with you.

                       

                      I learned that you can drag a service method into and empty area in design view (as opposed to dragging it into a control like a datagrid); that creates a value object and puts the service in your MXML file. This opens up some new possibilities that I will be exploring

                       

                      I have some issues with using the debugger with these data services, but that will be the subject of a new discussion.

                       

                      All this stuff you have learned by playing with the data services is good material for an article/tutorial. If you have a blog or some kind of site, you may want to consider doing a little writing – you would get a bunch of visitors.

                       

                      Thanks again for all your help.

                       

                      Have fun,

                       

                      Carlos