| Intro | Part I | Part II | Part III | Part IV | Part V (4.1) | Part VI (6.0) | Summary |
This means that instead of arcane database accessors, list objects and loop tags, you can now write something that is readable:
<table>
<%
// get a handle on the content database:
var db = new BVI_ContentManager();
// columns to fetch:
var cols = new Array( "OID", "TITLE", "PRICE" );
// specify SQL WHERE clause:
var result = db.contentByCondition( "AUTHOR = '" + author + "'",
"Bookstore", "PRODUCT", cols );
if ( result != null ) {
// got some results, sort them:
result = result.sortByAttribute( "TITLE", 'a' );
for ( i = 0; i < result.length; ++i ) {
var row = result.get( i );
%>
<tr>
<td><%= row.get( "TITLE" ); %></td>
<td>£<%= row.get( "PRICE" ); %></td>
</tr>
<%
}
}
%>
</table>
This is good news for many, many reasons but most importantly because:
- you no longer need C++ gurus to build BroadVision web sites - JavaScript programmers are easier to find and cost less (no offence!),
- you no longer have to deal with an edit/compile/restart BV/debug cycle - your development cycle is much shorter.
Session.finalPage = "basket.jsp";On a later page, we can retrieve this and construct a link to that script:
<a href=<%= dquote( makeScriptURL( Session.finalPage ) ) %>>Continue</a>You can also store BroadVision components as session properties, although you cannot store arbitrary JavaScript objects. Since you can store BVI_ValueList and BVI_Properties components, this is not really a problem.
The bottom line is that BroadVision development is now faster and more cost-effective; sites can have far greater functionality because the framework is much easier to customize; BroadVision skills are easier to find (or learn) so market support for the product is vastly increased, leading to greater uptake of the product and therefore much better support from BroadVision themselves.
This deserves a special mention. In version 3.0, the navigation framework was restricted to just channels, programs and content. Version 4.1 allows channels to contain subchannels and separates the navigation structure from the content structure much more effectively. Version 3.0 required extensive use of programmed rules to target content to visitors - these were time-consuming and error-prone to create and slow to execute. Version 4.1 replaces almost all need for rules with a streamlined "broadcast attribute" system that allows administrators to specify 'visibility attributes' on programs and for visitors to allow the system to automatically determine which visitors get to see which parts of the navigation structure (and, hence, which content).
With the release of version 5.5 in 2000 Q3, BroadVision revamped KWA and renamed it InfoExchange. In addition to all the navigation infrastructure, they added collaborative tools, discussion groups, issue management / escalation. As an out-of-the-box application, it provides a lot of functionality for building Intranets and Extranets.
It's not quite all good news. C++ 'objects' have been replaced with C++ 'components' in version 4.0. If you really need to extend the application framework at a fundamental level, you still have to write C++. The object structure is somewhat more pleasant, partly because much of the 'glue' code that links your C++ to BroadVision's JavaScript can be automatically generated. At least with the rich JavaScript API, you don't actually have to write components very often.
With version 5.0, BroadVision added the ability to write new components in Java - up to a point. If you wanted to extend (or even use) existing components in your new component, you were still stuck with C++.
Version 6.0 promises a full Java API as well as support for a J2EE compliant application server to be plugged in alongside BroadVision. More on this in a separate article!