Apptacular is great at aggressively mapping out relationships. Â This is good, when trying to build a quick admin interface for your applications. However when you get working on "real" applications, this aggressive relationship building can bite you.
This video will take you through, not just the problem, but how to use Apptacular to fix it.
I'm happy to say I'll be at the Heartland Developers Conference in Omaha Nebraska this year.
I'll be talking about ColdFusion, and how it can power truly rapid RIAs. In order to explain the whole workflow, I'll be touching on ORM, scripting, Flash Catalyst, Flex 4 and Flash Builder.
Additionally, two other Adobeans will be making the trip, Paul Trani and Kevin Hoyt. Here's our lineup:
A couple people have reported an issue that happens when you use Apptacular with "Enable Request Debugging Output" checked in the ColdFusion Administrator. Basically, the XML that is supposed to go to ColdFusion Builder has the debugging tacked on to the end of it rendering the XML invalid, and Apptacular dies.
24 hours after pushing Apptacular out, I have over 150 downloads, and only 2 reported problems.
Awesome!
One of the problems was that a user tried to run Apptacular against a database without primary keys. Apptacular and ORM in general have a dependency on primary keys. I should make that clearer in the documents, and error, and I will. But just know that.
If you want to participate in building Apptacular, you want to look at the source, and tests, etc. Check it out on GitHub: http://bit.ly/ApptacularGitHub
If you want to know more about what Apptacular can do for you, check out these tutorial videos:
Adobe Developer Week is next week, and it is shaping up to be massive. We've put together a lineup of 19 sessions dedicated to current and pressing topics on the Flash Platform. In response over 20,0000 of you have signed up and are ready to learn more.
I'm personally doing two sessions:
Adobe Flash Builder 4 and Adobe ColdFusion 9
May 12, 2010 2 pm PDT
Flash Builder 4 and ColdFusion 9 were made to work with each other, literally. This session will show you the features in ColdFusion 9 that will make your Flex life easier. You will also get to see how Flash Builder's new features help to rapidly make Flash-powered front ends for your ColdFusion back ends.
Adobe ColdFusion 9 and Adobe Flash Catalyst CS5
May 14, 2010 11 am PDT
ColdFusion has always been about RAD. It continues to be the fastest way to create back-ends for your data-driven applications. Flash Catalyst can do the same for your front ends, making it easy to create Flash-powered content that people want to use. This session will show you how Flash Catalyst and ColdFusion can be combined for some lightning-fast application development.
So go sign up and be a part of what is shaping up to be quite a massive event.
Make sure you check out the rest of the content:
Welcome and Introduction to the Adobe® Flash® Platform: Ben Forta
Building Multi-Screen Applications with the Adobe® Flash® Platform and Adobe® Creative Suite® 5: Paul Trani
New Features in Adobe® Flex® 4 Framework: Deepa Subramaniam
New Features in Adobe® Flash® Builder™ 4: Andrew Shorten
Adobe® Flash® Catalyst™ CS5 for Developers: Doug Winnie
Building Mobile Applications with Adobe® Flash® Professional™ CS5: Create a Game: Paul Trani
What's New in Adobe® Flash® Builder™ for Java Developers: James Ward
New Features in Adobe® Flash® Player 10.1: Lee Brimelow
Creating Sexy Applications with the Adobe® Flash® Platform: Designer-Developer Workflow: Serge Jespers
A Basic CRUD Application with Zend AMF and Adobe® Flex 4 Ryan Stewart and Kevin Schroeder
Adobe® Flash® Builder™ 4 and Adobe® ColdFusion® 9: Terry Ryan
Advanced Features In Adobe® Flex®: Ely Greenfield
AS34J: ActionScript 3 for Java Developers: Chet Haase
Adobe® Flash® Platform and Salesforce.com: James Ward
Adobe® Flash® Builder™ for Adobe® Dreamweaver® CS5 Users: Ryan Stewart
Using Advanced Features with Adobe® Flex® & PHP: Ryan Stewart
Adobe® ColdFusion® 9 and Adobe® Flash® Catalyst™ CS5: Terry Ryan
Adobe® Flex® and BlazeDS Integration with SpringSource: Christophe Coenraets and Jeremy Grelle
Building Desktop Applications with Adobe® AIR® 2.0: Ryan Stewart
Sorry for the MeatLoaf-esque title, but I have a video demo that shows off some new features of both ColdFusion Builder extensions in general, and Apptacular in particular.
onProjectCreate
One feature of extensions that hasn't been getting any play is the fact that you can wire up your extensions to run after a project is created. At the end of the New Project Wizard you can choose from a list of all of the extensions that have this enabled, and run anything an extension can do. This is really cool for starting up your projects with your preferred structure and style right from the get go. The video demo shows running Apptacular in this manner.
Prefixes
ORM and databases are great together, but sometimes database conventions run afoul of ORM best practices. Take table prefixes for example. Having a table with tbl_user makes some sense on the database side, it's basically Hungarian notation for tables. (I've also seen people append the schema name to the table, as in the video.)
As necessary as it may be on the database side, it's a big pain on the ORM side. We don't want to work with a tbl_user object, we want to work with a user object.
Apptacular allows you to set a prefix that you can have removed from any of your tables. In this case it will convert the table tbl_user to the ORM entity user. Very handy, and saves a lot of work.
Plurals
The other convention that gets in the way of generating ORM content from the database is plurals in tables. So table users should translate to the ORM entity user. I've added a checkmark option that will try and do that for you.
So these options combine to make writing clean, readable ORM from databases with these conventions really quick and easy. Check out the video to see this in action.
One of the things missing from ColdFusion Builder Extensions is the ability to make spacers in your menu items. This makes it a little hard to organize menu items.
But it turns out that you can add handlerless menu items. I have posted sample SML below.
Unfortunately, they are still clickable but because they don't have a handler they don't do anything. So it's not a perfect solution, but it does make it a little easier to organize your menu options.
To combat this I build all of my extensions with ANT. (I know we provide a packager, but the work flow doesn't work for me.) Here're the relevant ANT targets:
<target name="build.copy.files" description="Create a installable version of the source code."> <echo message="Copying Files to Build Location"/> <copy todir="${build.dir}" preservelastmodified="true"> <fileset dir="${dev.dir}"> <exclude name='settings.xml'/> <exclude name='settings.properties'/> <exclude name='.project'/> <exclude name='.settings'/> <exclude name='build.xml'/> <exclude name='**/.DS_Store'/> </fileset> </copy> </target>
<target name="build.zip" description="Creates a zip file of the build."> <echo message="Creating Zip File"/> <zip destfile="${package.dir}/${app.name}.zip" basedir="${build.dir}"/> </target>