Title: Don
1Dont Be Q-lessExpanding Fusebox Functionality
with FuseQ
- John Quarto-vonTivadar
- FutureNow, Inc.
- www.futurenowinc.com
- john_at_techspedition.com
2FuseQ 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 ones 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 youll 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?
3Benefits of FuseQ
- Fuseactions are more atomic since the page
request is not limited to a single FA - No need for ltcfmodulegt 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 FuseQs implementation
4Features 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!
5Call Fusebox core file
Call Circuits.cfm
Call home circuits FBX_Settings
Fusebox 3 Execution Path
Call target circuits FBX_Switch
Call appropriate fuses
Call FBX_Layouts
Call layout files
Display output
6Call Fusebox core file
Call Circuits.cfm
Call home circuits FBX_Settings
Call target circuits FBX_Switch
Call appropriate fuses
Call FBX_Layouts
Call layout files
Display output
7Call Fusebox core file
Call Circuits.cfm
Call home circuits FBX_Settings
Call target circuits FBX_Switch
Call appropriate fuses
Call FBX_Layouts
Call layout files
Display output
8Call Fusebox core file
Call Circuits.cfm
Call home circuits FBX_Settings
Call target circuits FBX_Switch
Call appropriate fuses
Call FBX_Layouts
Call layout files
Display output
9Call Fusebox core file
Call Circuits.cfm
Call home circuits FBX_Settings
Call target circuits FBX_Switch
Call appropriate fuses
Call FBX_Layouts
Call layout files
Display output
10Call Fusebox core file
Call Circuits.cfm
Call home circuits FBX_Settings
Call target circuits FBX_Switch
Call appropriate fuses
Call FBX_Layouts
Call layout files
Display output
11Call Fusebox core file
Call Circuits.cfm
Call home circuits FBX_Settings
Call target circuits FBX_Switch
Call appropriate fuses
Call FBX_Layouts
Call layout files
Display output
12Call Fusebox core file
Call Circuits.cfm
Call home circuits FBX_Settings
Call target circuits FBX_Switch
Call appropriate fuses
Call FBX_Layouts
Call layout files
Display output
13Call Fusebox core file
Call Circuits.cfm
Call home circuits FBX_Settings
Call target circuits FBX_Switch
Call appropriate fuses
Call FBX_Layouts
Call layout files
Display output
14Finished product
15Call Fusebox core file
Techspedition Fusebox 3-compliant Execution Path
16Call Fusebox core file
Call Circuits.cfm
17Call Fusebox core file
Call Circuits.cfm
Call home circuits FBX_Settings
18Call Fusebox core file
Call Circuits.cfm
Call home circuits FBX_Settings
Call target circuits FBX_Switch
19Call Fusebox core file
Call Circuits.cfm
Call home circuits FBX_Settings
Call target circuits FBX_Switch
Call appropriate fuses
20Call Fusebox core file
Call Circuits.cfm
Call home circuits FBX_Settings
Call target circuits FBX_Switch
Call FBX_Layouts
Call appropriate fuses
21Call Fusebox core file
Call Circuits.cfm
Call home circuits FBX_Settings
Call layout files
Call target circuits FBX_Switch
Call FBX_Layouts
Call appropriate fuses
22Call Fusebox core file
Call Circuits.cfm
Display output
Call home circuits FBX_Settings
Call layout files
Call target circuits FBX_Switch
Call FBX_Layouts
Call appropriate fuses
23If FuseQ not empty then loop again
Call Fusebox core file
Call Circuits.cfm
Display output
Call home circuits FBX_Settings
Call layout files
Call target circuits FBX_Switch
Call FBX_Layouts
Call appropriate fuses
24World.hello
25World.hello
26Finished product
27World.hello
Company.getStock
User.getInfo
28World.hello
Company.getStock
User.getInfo
29World.hello
User.getInfo
Company.getStock
User.getInfo
30World.hello
User.getInfo
Company.getStock
User.getInfo
31World.hello
Company.getStock
User.getInfo
32World.hello
Company.getStock
User.getInfo
33World.hello
Company.getStock
User.getInfo
34World.hello
Company.getStock
User.getInfo
35World.hello
Company.getStock
User.getInfo
36Finished product
37Will 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 its free, damn it!
38Thats Q-ute, but lets see code!
- general use
- Layout Fuses
- Error/Exception Handling
- Short QA and lunch
- Model-View-Controller (Hal)
- Other Techspedition core file API features
39Magellan traveled around the world just to end up
where he started.
With our books, he could have really gone
somewhere.
40- CodeRutters Discovering Fusebox 3
- by Hal Helms and John Quarto-vonTivadar
- pre-order now on the web site for 19.99
- www.techspedition.com
41Finding 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 were anxious to publish
your book