Don’t Be Q-less Expanding Fusebox Functionality with FuseQ John Quarto-vonTivadar FutureNow, Inc.
FuseQ to the ResQ FuseQ treats fuseactions like a queue A page request can be made up of one *or more* fuseactions Analogy: 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 order Before leaving the core file, are there any Fuseactions left in the FuseQ?
Benefits of FuseQ Fuseactions are more atomic since the page request is not limited to a single FA No need for to access code in other circuits no memory thread cost no passing thru of needed variables no kludges in scoping out-bound variables no 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’s FBX_Settings Call target circuit’s FBX_Switch Call appropriate fuses Call FBX_Layouts Call layout files Display output Fusebox 3 Execution Path
Call Fusebox core file Call Circuits.cfm Call home circuit’s FBX_Settings Call target circuit’s FBX_Switch Call appropriate fuses World.hello Call FBX_Layouts Call layout files Display output
Call Fusebox core file Call Circuits.cfm Call home circuit’s FBX_Settings Call target circuit’s FBX_Switch Call appropriate fuses World.hello Call FBX_Layouts Call layout files Display output
Call Fusebox core file Call Circuits.cfm Call home circuit’s FBX_Settings Call target circuit’s FBX_Switch Call appropriate fuses World.hello Call FBX_Layouts Call layout files Display output
Call Fusebox core file Call Circuits.cfm Call home circuit’s FBX_Settings Call target circuit’s FBX_Switch Call appropriate fuses World.hello Call FBX_Layouts Call layout files Display output
Call Fusebox core file Call Circuits.cfm Call home circuit’s FBX_Settings Call target circuit’s FBX_Switch Call appropriate fuses World.hello Call FBX_Layouts Call layout files Display output
Call Fusebox core file Call Circuits.cfm Call home circuit’s FBX_Settings Call target circuit’s FBX_Switch Call appropriate fuses World.hello Call FBX_Layouts Call layout files Display output
Call Fusebox core file Call Circuits.cfm Call home circuit’s FBX_Settings Call target circuit’s FBX_Switch Call appropriate fuses World.hello Call FBX_Layouts Call layout files Display output
Call Fusebox core file Call Circuits.cfm Call home circuit’s FBX_Settings Call target circuit’s FBX_Switch Call appropriate fuses World.hello Call FBX_Layouts Call layout files Display output
Finished product
Call Fusebox core file Techspedition Fusebox 3-compliant Execution Path
Call Fusebox core file Call Circuits.cfm
Call Fusebox core file Call Circuits.cfm Call home circuit’s FBX_Settings
Call Fusebox core file Call Circuits.cfm Call home circuit’s FBX_Settings Call target circuit’s FBX_Switch
Call Fusebox core file Call Circuits.cfm Call home circuit’s FBX_Settings Call target circuit’s FBX_Switch Call appropriate fuses
Call Fusebox core file Call Circuits.cfm Call home circuit’s FBX_Settings Call target circuit’s FBX_Switch Call appropriate fuses Call FBX_Layouts
Call Fusebox core file Call Circuits.cfm Call home circuit’s FBX_Settings Call target circuit’s FBX_Switch Call appropriate fuses Call FBX_Layouts Call layout files
Call Fusebox core file Call Circuits.cfm Call home circuit’s FBX_Settings Call target circuit’s FBX_Switch Call appropriate fuses Call FBX_Layouts Display output Call layout files
Call Fusebox core file Call Circuits.cfm Call home circuit’s FBX_Settings Call target circuit’s FBX_Switch Call appropriate fuses Call FBX_Layouts Display output Call layout files If FuseQ not empty then loop again
World.hello
Finished product
User.getInfo Company.getStock World.hello
User.getInfo Company.getStock World.hello
User.getInfoCompany.getStock World.hello User.getInfo
Company.getStock World.hello User.getInfo
Company.getStock World.hello
User.getInfo Company.getStock World.hello
User.getInfo Company.getStock World.hello
User.getInfo World.hello Company.getStock
User.getInfo Company.getStock World.hello
Finished product
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 implementation Your Fusebox 3-compliant apps will work out of the box whether you use FuseQ or not Topology: C C++ All legacy C code worked without a single change And 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 $
Finding Your Inner FuseQ on a techspedition into knowledge Core files at 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