Don’t Be Q-lessExpanding Fusebox Functionality with FuseQ
John Quarto-vonTivadar
FutureNow, Inc.
www.futurenowinc.com
FuseQ to the ResQFuseQ treats fuseactions like a queueA page request can be made up of one *or more* fuseactionsAnalogy: In line at the Bank… if no one’s in front of you, you get to be the next one handled by the Teller; if not, you wait your turn. Every once in a while you’ll let a little old lady skip ahead of you.FuseQ treats the fuseaction as a list … handled in successive orderBefore leaving the core file, are there any Fuseactions left in the FuseQ?
Benefits of FuseQFuseactions are more atomic since the page request is not limited to a single FANo need for <cfmodule> to access code in other circuits
no memory thread costno passing thru of needed variablesno kludges in scoping out-bound variablesno successive recursion calls
No core file changes are required to handle all of: layout fuses, error/exception handling, Model-View-Controller, etc. These all flow naturally from FuseQ’s implementation
Features of FuseQ
Layouts: circuit-wide layouts are handled at the circuit layer (fbx_layouts) and fuse- or fuseaction-specific layouts are handled at the fuse layer
Layout fuses can be applied from any circuit (similar to qry file feature)
Because of zero core file dependencies, you can use “traditional” CF error and exception handling at the app, circuit, FA, and Fuse level. Nothing FB-specific!
Call Fusebox core file
Call Circuits.cfm
Call home circuit’sFBX_Settings
Call target circuit’sFBX_Switch
Call appropriate
fuses
Call FBX_Layouts
Call layoutfiles
Display output
Fusebox 3Execution Path
Call Fusebox core file
Call Circuits.cfm
Call home circuit’sFBX_Settings
Call target circuit’sFBX_Switch
Call appropriate
fuses
World.hello
Call FBX_Layouts
Call layoutfiles
Display output
Call Fusebox core file
Call Circuits.cfm
Call home circuit’sFBX_Settings
Call target circuit’sFBX_Switch
Call appropriate
fuses
World.hello
Call FBX_Layouts
Call layoutfiles
Display output
Call Fusebox core file
Call Circuits.cfm
Call home circuit’sFBX_Settings
Call target circuit’sFBX_Switch
Call appropriate
fuses
World.hello
Call FBX_Layouts
Call layoutfiles
Display output
Call Fusebox core file
Call Circuits.cfm
Call home circuit’sFBX_Settings
Call target circuit’sFBX_Switch
Call appropriate
fuses
World.hello
Call FBX_Layouts
Call layoutfiles
Display output
Call Fusebox core file
Call Circuits.cfm
Call home circuit’sFBX_Settings
Call target circuit’sFBX_Switch
Call appropriate
fusesWorld.hello
Call FBX_Layouts
Call layoutfiles
Display output
Call Fusebox core file
Call Circuits.cfm
Call home circuit’sFBX_Settings
Call target circuit’sFBX_Switch
Call appropriate
fuses
World.helloCall
FBX_Layouts
Call layoutfiles
Display output
Call Fusebox core file
Call Circuits.cfm
Call home circuit’sFBX_Settings
Call target circuit’sFBX_Switch
Call appropriate
fuses
World.hello
Call FBX_Layouts
Call layoutfiles
Display output
Call Fusebox core file
Call Circuits.cfm
Call home circuit’sFBX_Settings
Call target circuit’sFBX_Switch
Call appropriate
fuses
World.hello
Call FBX_Layouts
Call layoutfiles
Display output
Call Fusebox core file
Call Circuits.cfm
Call home circuit’sFBX_Settings
Call target circuit’sFBX_Switch
Call Fusebox core file
Call Circuits.cfm
Call home circuit’sFBX_Settings
Call target circuit’sFBX_Switch
Call appropriate
fuses
Call Fusebox core file
Call Circuits.cfm
Call home circuit’sFBX_Settings
Call target circuit’sFBX_Switch
Call appropriate
fuses
Call FBX_Layouts
Call Fusebox core file
Call Circuits.cfm
Call home circuit’sFBX_Settings
Call target circuit’sFBX_Switch
Call appropriate
fuses
Call FBX_Layouts
Call layoutfiles
Call Fusebox core file
Call Circuits.cfm
Call home circuit’sFBX_Settings
Call target circuit’sFBX_Switch
Call appropriate
fuses
Call FBX_Layouts
Display output
Call layoutfiles
Call Fusebox core file
Call Circuits.cfm
Call home circuit’sFBX_Settings
Call target circuit’sFBX_Switch
Call appropriate
fuses
Call FBX_Layouts
Display output
Call layoutfiles
If FuseQ not empty then loop again
Will I be stuck behind the Q-ball?
Techspedition core file is a full private implementation of the Fusebox 3 spec Contains FuseQ and a number of other needed improvements excluded from the official FB3 implementationYour Fusebox 3-compliant apps will work out of the box whether you use FuseQ or notTopology: C C++ All legacy C code worked without a single changeAnd it’s free, damn it!
That’s Q-ute, but let’s see code!
general use
Layout Fuses
Error/Exception Handling
Short Q&A and lunch
Model-View-Controller (Hal)
Other Techspedition core file API features
Magellan traveled around the world just to end up where he started.
With our books, he could have really gone somewhere.
A little knowledge goes a long way.
CodeRutters: “Discovering Fusebox 3” by Hal Helms and John Quarto-vonTivadar pre-order now on the web site for $19.99
www.techspedition.com
Finding Your Inner FuseQon a techspedition into knowledge
Core files at www.techspedition.com
Series of articles explaining FuseQ
Other regular columns and guest authors speak about the development cycle, coding, cross-training your brain
“Exploring the FuseQ” book in development
Open call for authors – we’re anxious to publish your book