Listing 1:

<listeners>
   <listener name="IndentController" type="com.indent.controller.IndentController">
	<invoker type="MachII.framework.invokers.CFCInvoker_Event" />	
   </listener>
</listeners>
...

<event-handler event="getAllProjects">
    <event-arg name="bc1" value="getProjectsForUser" />
    <notify listener="IndentController" method="execute" />
    <view-page name="projectDisplay" />
</event-handler>

<page-views>
   <page-view name="projectDisplay" page="/views/projectDisplay.cfm"/>
</page-views>


Listing 2:

<listeners>
   <listener name="IndentController" type="com.indent.controller.IndentController">
	<invoker type="MachII.framework.invokers.CFCInvoker_Event" />	
   </listener>
</listeners>
...
<event-handler event="updateProject">
	<event-mapping event="success" mapping="newProject" />
	<event-mapping event="failure" mapping="exception" />			
	<event-arg name="bc1" value="getProject"/>
	<event-arg name="bc2" value="checkSelectProject" />
	<event-arg name="bc3" value="updateProject"/>			
	<event-arg name="bc4" value="insertProject"/>
	<event-arg name="bc5" value="updateTask"/>
	<event-arg name="bc6" value="getTaskID" />
	<event-arg name="bc7" value="checkSelectTask"/>
	<event-arg name="bc8" value="insertTask"/>
	<event-arg name="bc9" value="getTasks"/>
        <notify listener="IndentController" method="execute" />
...
</event-handler>
<event-handler event="exception">
	<view-page name="exception" />
</event-handler>
<event-handler event=" newProject">
	<view-page name="projectDisplay" />
</event-handler>

<page-views>
   <page-view name="projectDisplay" page="/views/projectDisplay2.cfm"/>
   <page-view name="exception" page="/views/exception.cfm"/>
</page-views>
...


Listing 3:

<business-component-defs>
   <bc-def name="SQL" type=" com.indent.model.SQLModel">
<parameter name="db" value="DBAlias"/>
	<parameter name="modelException" value="com.indent.exception.SQLException"/>
   </bc-def>
   <bc-def name="Condition" type=" com.indent.model.ConditionModel">
	<parameter name="modelException" value="com.indent.exception.ConditionException"/>
  </bc-def>  
</business-component-defs>

<business-components>
 <bc name="getProject" type="SQL" parent="updateProject.bc1">
  	<parameter name="method" value="select projectid from project where
 	createdby='#hds.userid#' and name='#hds.projectName#'" />	
 </bc>
 <bc name="checkSelectProject" type="Condition" parent="updateProject.bc2">
        <parameter name="condition1" value="#hds.getproject.recordcount# eq 0" />
        <parameter name="bclist1" value="bc4,bc1,bc8,bc9"/>
        <parameter name="condition2" value="#hds.getproject.recordcount# gt 0" />
        <parameter name="bclist2" value="bc3,bc6,bc7"/>
  </bc>   
  <bc name="updateProject" type="SQL" parent="updateProject.bc3">
   	<parameter name="method" value="update project set startdate =
	#hds.startDate#,
 	createdby='#hds.userid#' where projectid='#hds.projectid#'" />
   </ bc>
  <bc name="insertProject" type="SQL" parent="updateProject.bc4">
   	<parameter name="method" value="insert into project (startdate, createdby,
 	name) (#hds.startDate#, #hds.userid#, '#hds.projectName#')" />
   </bc>
  <bc name="updateTask" type="SQL" parent="updateProject.bc5">
   	<parameter name="method" value="update task set
	tdesc='#hds.taskDesc#',
 	sdate=#hds.startDate#,uid='#hds.userid#' where tid=#hds.taskid#" />	
   </bc>
  <bc name="getTaskID" type="SQL" parent="updateProject.bc6">
   	<parameter name="method" value="select tid as taskid from task where
 	pid=#hds.projectid# and tname='#hds.taskName#'" />
   </bc>   
  <bc name="checkSelectTask" type="Condition" parent="updateProject.bc7">
	<parameter name="condition1" value="#hds.getTaskID.recordcount# eq 0" />
	<parameter name="bclist1" value="bc8,bc6,bc9"/>
	<parameter name="condition2" value="#hds.getTaskID.recordcount# gt 0" />
	<parameter name="bclist2" value="bc5,bc9"/>
   </bc>  
    <bc name="insertTask" type="SQL" parent="updateProject.bc8">
   	<parameter name="method" value=
	"insert into task (tname, tdesc, sdate, uid, pid) values
 			('#hds.taskName#', '#hds.taskDesc#’, #hds.startDate#, '#hds.userid#',
			#hds.projectid#)" />	
   </bc>  
   <bc name="getTasks" type="SQL" parent="updateProject.bc9">
   	<parameter name="method" value="select pname as projectName, tname as
 	taskName, sdate as startDate 
            from task where uid=#hds.userid# group by projectName" />
   </bc>    
</business-components>


Listing 4:

<cfcomponent displayname="SQL" hint="Indent's generic SQL model component"
extends="com.indent.model.AbstractModel">
	<cffunction name="execute" access="public">
		<cftry>
			<cfif not (StructKeyExists(bcparams,"db"))>  <!—getting db
			parameter ‡
				<cfif (StructKeyExists(bcdefparams,"db"))>
					<cfset dbName = #bcdefparams.db# />
				<cfelse>
			 		<cfthrow type="dbAliasException" message="Database alias not
					defined">
				</cfif>				
			<cfelse>
				<cfset dbName = #bcparams.db# />
			</cfif>
			<cfquery datasource="#dbName#" name="dataset"> <!—evaluating the
			query ‡
				#Evaluate(DE("#bcparams.method#"))#
			</cfquery>
		<cfcatch type="dbAliasException">
			<cfthrow type="modelException"
			message="#cfcatch.Type#:#cfcatch.Message#">
		</cfcatch>
		<cfcatch type="database"> 
			<cfthrow type="modelexception" message="#cfcatch.Type#:Error in
			executing the Query: #Evaluate(DE("#bcparams.method#"))#">
		</cfcatch>
		<cfcatch type="expression">
			<cfthrow type="modelexception" message="#cfcatch.Type#:Error in the
			constructing Query Expression: #bcparams.method#">
		</cfcatch>		
		</cftry>
		<cfset StructDelete(session.hds, "#bcparams.bcName#") />
		<cfset SQLType = LCase(gettoken("#bcparams.method#", 1, " ")) />
		<cfif SQLType eq "select"> <!—put rows returned by select into hds ‡
			<cfset StructInsert(session.hds, "#bcparams.bcName#", #dataset#) />		
		</cfif>
	</cffunction>
</cfcomponent>