310 likes | 440 Views
Building Fusebox Frameworks. Jeff Peters jeff.peters@bigfoot.com. What is Fusebox?. An Emerging Standard A Way to Think About Web Applications A Way to Organize Development A Way to Manage Dev Projects. What is Fusebox?. An Emerging Standard A Way to Think About Web Applications
E N D
Building Fusebox Frameworks Jeff Peters jeff.peters@bigfoot.com
What is Fusebox? • An Emerging Standard • A Way to Think About Web Applications • A Way to Organize Development • A Way to Manage Dev Projects
What is Fusebox? • An Emerging Standard • A Way to Think About Web Applications • A Way to Organize Development • A Way to Manage Dev Projects
An Emerging Standard • Created by Steve Nelson and a gang of hundreds • Continues to develop and expand • “Is not a religion” – Hal Helms • “May actually be a cult” – Michael Smith
What is Fusebox? • An Emerging Standard • A Way to Think About Web Applications • A Way to Organize Development • A Way to Manage Dev Projects
A Way to Think About Web Applications • Provide a standard way to organize an application • Control program flow in a very uniform manner • Group like functionality together
What is Fusebox? • An Emerging Standard • A Way to Think About Web Applications • A Way to Organize Development • A Way to Manage Dev Projects
A Way to Organize Development • Great for team development • New team members can learn app quickly • Revisiting old apps is much easier
What is Fusebox? • An Emerging Standard • A Way to Think About Web Applications • A Way to Organize Development • A Way to Manage Dev Projects
A Way to Manage Dev Projects • Modularity allows much better development control • Pre-code prototyping and documentation • Dev manager can make assignments that make sense
Fusebox Frameworks • Main application • Circuit apps • Fuseactions • Fuses • Fusebox File
Fusebox Frameworks • Main application • Circuit apps • Fuseactions • Fuses • Fusebox File
Main Application • Many Fusebox apps have a two-tiered approach • Main app controls interaction of circuit apps • Think of it as the main power junction
Fusebox Frameworks • Main application • Circuit apps • Fuseactions • Fuses • Fusebox File
Circuit Apps • Have specific areas of responsibility • Each can contain a variety of fuseactions • Think of them as the breakers in a power panel
Fusebox Frameworks • Main application • Circuit apps • Fuseactions • Fuses • Fusebox File
Fuseactions • Represent specific actions to be performed • Each requires one or more fuses • Think of them as the wires
Fusebox Frameworks • Main application • Circuit apps • Fuseactions • Fuses • Fusebox File
Fuses • Individual CF files • May be app, dsp, act, qry or “roll your own” • Think of them as lights, switches, motors, etc.
Fusebox Frameworks • Main application • Circuit apps • Fuseactions • Fuses • Fusebox File
Fusebox File • The control center for an app • Basically a big CFSWITCH on application.fuseaction • Knows what to call and what to call NEXT (XFAs)
Fusedoc • Standard for documenting fuses • Based somewhat on JavaDoc • Details fuse responsibilities and attributes
Sample Fusedoc <!--- || BEGIN FUSEDOC || || Properties || Name: dsp_showCatalog.cfm Author: jeff.peters@bigfoot.com || Responsibilities || I display the current catalog contents and allow the user to get details about specific items. || Attributes || --> XFA.showItemDetails: STRING (a fuseaction) <-- ItemID: INTEGER NOT NULL (item's catalog ID number) || END FUSEDOC ||--->
Mind Mapping • Free-form outlining • Framework visualization • VisualMind, MindMapper Plus, etc.
Fuseminder • Reads text outline file • Builds Fusebox framework
Fuseminder Syntax • <cf_fuseminder outline=“myFile.txt”> • Optional attributes: • Location ( string; location of main application fusebox) • Verbose ( “yes” | “no” ) • Indenter ( string; outline’s indent string. Default is two spaces )
Sample Outline BookEm:jpeters@ots-inc.com Catalog showCatalog dsp_showCatalog.cfm <!--- || BEGIN FUSEDOC || || Properties || Name: dsp_showCatalog.cfm Author: jeff.peters@bigfoot.com || Responsibilities || I display the current catalog contents and allow the user to get details about specific items. || Attributes || --> XFA.showItemDetails: STRING (a fuseaction) <-- ItemID: INTEGER NOT NULL (item's catalog ID number) || END FUSEDOC ||---> showItem qry_getItem.cfm
Generated Framework myDir Main Fusebox (index.cfm) myDir\Cart Circuit Fusebox (index.cfm) Fuse files w/Fusedocs myDir\Catalog Circuit Fusebox (index.cfm) Fuse files w/Fusedocs myDir\Checkout Circuit Fusebox (index.cfm) Fuse files w/Fusedocs myDir\Users Circuit Fusebox (index.cfm) Fuse files w/Fusedocs
Fuseminder Demo Bam!