a brief history of fusebox zneeded way for others to inherit my applications zcreated architecture...
TRANSCRIPT
A Brief History of Fusebox
Needed way for others to inherit my applicationsCreated architecture that would be understood and maintainable
A Brief History of Fusebox
Moved into building with Steve NelsonDiscussion on cf-talk about creating a modular architectureFusebox.org went online
Benefits of using Fusebox
Have a developed architectureFlexible enough to modify to your
needsBecoming widespread that new team
members may not have to learn from scratch
Created by developers (this means you!)
Using Fusebox for eCommerce
Using Fusebox for eCommerce
Analyze and designImplement structureExpand and maintain
Analyze and Design
More Design = Less Time = Less Money
Most time and money spent fixing flaws missed during design
Fusebox encourages design up front
Determine the players and props (objects)
Products Customers
Shopping cart Orders
Determine the actions of the objects
ProductsSeachDisplay
CustomersJoinLoginEdit Information
Shopping cartView CartAdd ItemRemove ItemClear cart
OrdersGet Shipping and BillingReview OrderProcess OrderShow Confirmation
Determine the attributes required by the objects
ProductsAttributes.FuseactionSeachDisplay
CustomersAttributes.FuseactionJoinLoginEdit Information
Shopping cartAttributes.FuseactionView CartAdd ItemRemove ItemClear cart
OrdersAttributes.FuseactionGet Shipping and BillingReview OrderProcess OrderShow Confirmation
Can represent objects with UML
Implementing the Structure
Creation of each objectJoining the objects within the siteCalling individual objects
Creating an object
From our object model…
Shopping cartAttributes.FuseactionView Cart Add ItemRemove ItemClear cart
Creating an object
To the object’s file (/shoppingcart/index.cfm)
<cfparam name="attributes.fuseaction" default="#attributes.fuseaction#">
<cfswitch expression="#attributes.fuseaction#"><cfcase value="ViewCart"> </cfcase><cfcase value="addItem"> </cfcase><cfcase value="RemoveItem"> </cfcase><cfcase value="UpdateCart"> </cfcase><cfcase value="ClearCart"> </cfcase>
</cfswitch>
Creating an objectThen adding the fuses or modules
<cfparam name="attributes.fuseaction" default="#attributes.fuseaction#">
<cfswitch expression="#attributes.fuseaction#"><cfcase value="ViewCart">
<cfinclude template="dsp_Cart.cfm"></cfcase><cfcase value="addItem">
<cfinclude template="act_addItem.cfm"><cflocation url ="index.cfm?Fuseaction=viewcart">
</cfcase><cfcase value="RemoveItem">
<cfif BasketItems.recordCount><cfmodule template="act_removeItem.cfm"
ItemID="#attributes.ItemID#"></cfif><cflocation url ="index.cfm?Fuseaction=viewcart">
</cfcase>
Creating an objectOr a much simpler version…
/info/index.cfm
<cfinclude template="app_locals.cfm"><cfinclude
template="dsp_#attributes.fuseaction#.cfm">
Containership of objects
Containership of objects
/products/index.cfm app_locals.cfm
/app_globals.cfm
qry_search.cfm dsp_search_results.cfm
dsp_product_display.cfm• qry_product_details.cfm
Tying the objects together
eBags
Shopping cart
Products
Customers Orders
Tying the objects together
eBags
Shopping cart
Products
Customers OrdersApp_locals App_locals
App_localsApp_locals
App_Globals
Each objects’ app_locals includes the site’s app_globals
Tying the objects together
Calling the objectsURL: Sports Bags = “/search/index.cfm?
fuseaction=search&CategoryID=4”
<cflocation url=“/orders/index.cfm?fuseaction=showConfirmation”>
<cfinclude template="/shoppingcart/act_check_for_Basket.cfm">
<cfmodule template=“/shoppingcart/act_check_for_Basket.cfm">
Quotes from Users
"Fusebox allows our developers to leverage the strengths of standard techniques and practices to deliver a better product along a faster timeline.” -Joshua Cyr
"We are integrating Fusebox into all of our projects; large and small. By building in "modularity" to the code structures and programs from the beginning, we have been able to speed our development times and create better and better systems that are very easy to revise and modify, even for rookie CFers.” -Truman Esmond
"As a team of developers, with different styles, fusebox allowed us to follow a common path, increasing the coordination of projects, while decreasing time spent understanding each others code.” -Micheal Morris - Automated Graphic Systems, Inc.
Fusebox resources
the site - http://www.fusebox.orgMailing list -
http://www.fuseware.com/support/Forums/Index.cfm?cfapp=2