Adam Howitt's Blog

Nov 21
2006

BlueDragon 7.0 Webinar brain dump

I've just sat thru a great webinar by Josh Adams' on the BlueDragon 7.0 new features for an hour, presented by Teratech.  I made notes as I went along so excuse any gaps but it seems like there is plenty to look forward to for BlueDragon in the next release.   I fully intend to install the Beta 2 on a free machine to test it with WalkJogRun when it is released on Monday.  Here are my brief notes for reference:

BlueDragon 7.0 Webinar
BlueDragon - Used by Westlaw
Beta 1 released sept 28,2006
Beta 2 due for release Monday - feature complete
Final release Jan 2007

1. Concurrent processing with cfthread instead of 4 sequential requests for a webservice taking 4x the time, use cfthread to run the requests concurrently - roughly in the time it takes to run 1

<cfthread name="mythread">
</cfthread>
<!--- wait for thread to finish --->
<cfjoin thread="mythread">

CFThread is like CFMODULE where you can pass attribute value pairs.
myThread returns generated content as a variable e.g. mythread.generatedcontent and if you use cfreturn inside a thread it will pass back a return value.

CFJoin can actually be used to wait for processing of templates not even in the current request e.g. an application scope thread like wait for doc to be generated.

Fire and forget threads allow you to run some code like a stored proc call and return immediately so you never cfjoin it back - for example, a complex processing stored proc or a CMS insert.

2. CFQUERY enhancements
cacheduntilchange attribute for SQL 2005
background attribute - run query outside of current thread in a queue for processing when available

Better approach for fire and forget queries is to use BACKGROUND attribute on CFQUERY - does the same thing more efficiently.

3. NULL keyword and IsNull() function
BD7 acknowledges difference between NULL and empty string when your SQL recordset returns both null and empty strings

4. CFC interfaces and abstract CFCs
Nothing covered in the presentation.

5. Application.cfc with enhancements:
onClientStart event handler
onMissingTemplate event handler

6. CFDocument with enhancements
PNG and JPEG output
Multi threaded on all editions

7. CFCHART with enhancements
CFCHARTLEGEND, CFCHARTTITLE, CFCHARTIMAGE

Not supported
1. No event gateways
2. Flash forms
3. Reporting services
 

Comments (Comment Moderation is enabled. Your comment will not appear until approved.)
[Add Comment] [Subscribe to Comments]
  1. Thanks for participating in the webinar and for posting about it, Adam. Let me know how your testing of BlueDragon 7.0 beta2 goes!

    Nice job with the brain dump. I just want to provide some clarifying information. Anyone needing further information should please contact me at (678) 256-5395.

    Westlaw is a New Atlanta customer, but I personally do not know which of our products they use.

    The CACHEDUNTILCHANGED attribute of CFQUERY requires not only SQL Server 2005 but also BlueDragon .NET. The reason is that it makes use of an underlying integration of SQL Server 2005 and .NET that no other version of BlueDragon could use.

    The reason that you should use the BACKGROUND attribute of CFQUERY to send a "fire and forget" query to the DB instead of using CFTHREAD to do that is that it makes better use of your threads. The query will execute as soon as the DB can handle it; until that time it will be placed in a queue. One thread handles that for ALL queries that use the BACKGROUND attribute. By contrast, using CFTHREAD requires a new thread for each execution instance of the CFTHREAD code. If all these threads are doing is waiting for the DB anyway, they're being wasted.

    BlueDragon 7.0 recognizes the concept of NULL as a possible value for any variable, not just in regards to data from queries. You can thus return NULL and have it match any type, something particularly useful for a CFC whose type is a CFC. It is a very powerful feature.

    BlueDragon 7.0 is fully backwards-compatible in regards to evaluating a NULL value to be equal to the empty string. So if you wish to distinguish between an empty string and a NULL you may do so by testing a value to see if it is NULL; if you do not wish to do so, you simply test the value to see if it is equal to the empty string and either NULL or empty string will evaluate to TRUE.

    Again, thanks, Adam!

  2. Hey Josh, Thanks for following up. Did the new Beta get launched? All the stuff on the site mentions the September 20th beta release right now. Adam

[Add Comment]