No Slide Title

Download Report

Transcript No Slide Title

Getting to Know ColdFusion MX
Rob Brooks-Bilson
Web Technology Manager
Author, Programming
ColdFusion (O’Reilly)
05/21/2002
Presented to the MD CFUG
http://www.cfug-md.org
Enabling a
Microelectronic World
Agenda
•
•
•
•
•
•
•
•
More than we can cover in 1 hour
Getting started
Infrastructure changes
Deprecated and obsolete tags/functions
Language changes
New features
Resources
Q&A
© 2002 Amkor Technology, Inc.
Enabling a Microelectronic World
Getting Started
• Installation Planning
– System requirements generally greater than CF 5
– Will only upgrade from CF 5
• Two installation options:
– Standard


Removes CF 5
Uses existing web server
– Stand-alone




Uses internal web server
Port 8500 by defualt
Not recommended for production
Many config options in
\CFusionMX\runtime\servers\default\SERVER-INF\jrun.xml
© 2002 Amkor Technology, Inc.
Enabling a Microelectronic World
Getting Started
• Supported Operating Systems
– Windows





98
ME (except CF Enterprise)
NT 4
2000
XP
– Linux


ReaHat 6.2-7.2
SuSE 7.2-7.3
– Unix


Solaris 7, 8
UPUX 11.00
© 2002 Amkor Technology, Inc.
Enabling a Microelectronic World
Getting Started
• Supported Web Servers
– CF MX internal web server
– Apache 1.32x and 2.x
– IIS 4 and 5
– Netscape 3.6x
– iPlanet 4.x and 6.x
– Zeus 4.1 (Linux SuSE)
• Not officially supported – but it works!
– WebSite Pro (forthcoming TechNote)
© 2002 Amkor Technology, Inc.
Enabling a Microelectronic World
Getting Started
• Nervous about upgrading?
• Initial install can be done “stand-alone”,
allowing you to run CF 5 and CF MX on the
same server
– Point both CF 5 and CF MX to the same web
root
– When you are satisfied, you can reconfigure
MX to use your web server instead
• Code compatibility analyzer in CF Admin does
a good job of identifying potential issues
© 2002 Amkor Technology, Inc.
Enabling a Microelectronic World
Infrastructure Changes - Java
• ColdFusion MX is completely rewritten in Java
– Ships with the Sun 1.3.1_03 JRE (1.3.1_01 on HP-UX)
– You can also use the IBM JVM 1.2.2 or later
– JDBC drivers for most popular databases
– You can still use ODBC for DBs without JDBC drivers
• J2EE under the hood
– Now shipping

Professional and Enterprise (embedded JRun)
– Available later this year

CF MX for J2EE App Servers
–
JRun (full version)
– IBM WebSphere
– BEA WebLogic
– Sun One
© 2002 Amkor Technology, Inc.
Enabling a Microelectronic World
Infrastructure Changes - Java
• CFML is compiled to Java byte code
– Many operations execute faster than previous versions
of CF
– DB operations should perform about the same. JDBC is
NOT inherently faster than ODBC
• More access to underlying Java architecture – if you
want it!
– JSP pages
– JSP tag libraries
– Servlets
– EJBs
– Class files
© 2002 Amkor Technology, Inc.
Enabling a Microelectronic World
Infrastructure Changes - Registry
• CF MX no longer uses the registry (Windows
and *nix) to store config information. Majority
is now in XML config files:
– The XML is WDDX
– Located in \CFusionMX\lib
– Examples



Scheduled tasks: neo-cron.xml
DSN info: neo-query.xml
Verity info: neo-verity.xml
© 2002 Amkor Technology, Inc.
Enabling a Microelectronic World
Example: Neo-cron.xml
<wddxPacket version='1.0'><header/><data><array
length='2'><struct type='coldfusion.server.ConfigMap'><var
name='test'><struct
type='coldfusion.scheduling.CronTabEntry'><var
name='path'><string></string></var><var
name='file'><string></string></var><var
name='resolveurl'><boolean value='false'/></var><var
name='url'><string>http://test.com</string></var><var
name='publish'><boolean value='false'/></var><var
name='password'><string></string></var><var
name='operation'><string>HTTPRequest</string></var><var
name='username'><string></string></var><var
name='interval'><string>ONCE</string></var><var
name='start_date'><string>5/9/2002</string></var><var
name='http_port'><string>80</string></var><var
name='task'><string>test</string></var><var
name='http_proxy_port'><string>23</string></var><var
name='proxy_server'><string></string></var><var
name='start_time'><string>10:24:15 PM</string></var><var
name='request_time_out'><string></string></var></struct></v
ar></struct><boolean
value='false'/></array></data></wddxPacket>
Enabling a Microelectronic World
© 2002 Amkor Technology, Inc.
Infrastructure Changes - Clustering
• Hardware load-balancers are no longer
supported within the CF Admin
• Cisco’s DFP supported via ClusterCATS
• ClusterCATS updated for CF MX
• For new features and configuration, see new
Using ClusterCATS book in the CF Docs
© 2002 Amkor Technology, Inc.
Enabling a Microelectronic World
Deprecated and Obsolete Tags
• Deprecated (works now, but
• Obsolete (these no longer
wont in future releases)
– CFGRAPH
– CFGRAPHDATA
– CFREGISTRY (*nix only)
– CFSERVLET
– CFSERVLETPARAM
© 2002 Amkor Technology, Inc.
work in MX)
– CFINTERNALADMINSEC
URITY
– CFAUTHENTICATE
– CFIMPERSONATE
– CFINTERNALDEBUG
– CFNEWINTERNALADMIN
SECURITY
Enabling a Microelectronic World
Deprecated and Obsolete Functions
• Deprecated
– GetTemplatePath()
– ParameterExists()
•
Obsolete
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
AuthenticatedContext()
AuthenticatedUser()
CF_GetDataSourceUserName()
CF_IsColdFusionDataSource()
CF_SetDataSourcePassword()
CF_SetDataSourceUserName()
CFusion_DBConnections_Flush()
CFusion_Disable_DBConnections()
CFusion_GetODBCDSN()
CFusion_GetODBCINI()
CFusion_SetODBCINI()
CFusion_Settings_Refresh()
CFusion_VerifyMail()
IsAuthenticated()
IsAuthorized()
IsProtected
© 2002 Amkor Technology, Inc.
Enabling a Microelectronic World
Language Changes - Comments
• New comment rules
– Within tags
– Inside custom tag calls
– Within function parameters (not inside string
quotes)
– Between pound signs
– Nested comments
© 2002 Amkor Technology, Inc.
Enabling a Microelectronic World
Example: Comments
<CFSET x = 1 <!--- I am valid --->>
<CFSET y = DateFormat(Now(), 'mm/dd/yyyy' <!--- I'm
valid too --->)>
<CFSET z = (1 + 2<!--- still valid --->)>
<CF_MyTag VAR="x" <!--- I'm valid too --->>
<CFOUTPUT>
#y<!---I'm valid as well, although this looks weird-->#
</CFOUTPUT>
<H2>Open the file Comments.cfm to see what I'm
doing</H2>
© 2002 Amkor Technology, Inc.
Enabling a Microelectronic World
Language Changes – Variable Scope Structs
• New “scope” structures:
– Variables (local) scope
– Server
– Caller (custom tags)
• Use CFDUMP to see the contents of any of the
scope structures
• Be careful when calling variable names that
are also scope structures such as URL, FILE,
etc.
© 2002 Amkor Technology, Inc.
Enabling a Microelectronic World
Example: Variable Scope Structs
<CFSET VARIABLES.x=1>
<CFSET CALLER.y="test the caller">
<CFDUMP VAR="#VARIABLES#">
<P>
<CFDUMP VAR="#CALLER#">
<P>
<CFDUMP VAR="#SERVER#">
© 2002 Amkor Technology, Inc.
Enabling a Microelectronic World
Language Changes – Variable Names
• Additional structure changes
– Compound variable names delimited with
periods now auto create structures:
In CF 5:
<CFSET Employee.Name=“Joe”>
Created a variable called Employee.Name
In CF MX, it creates a structure called
Employee and a key called Name with the
value “Employee”
– Auto generated structures like this can’t be
more than 3 levels deep: my.var.name
© 2002 Amkor Technology, Inc.
Enabling a Microelectronic World
Example: Auto Generating a Structure
<CFSET Employee.Name = "Joe Blow">
<CFSET Employee.Age = "30">
<CFDUMP VAR="#Employee#">
© 2002 Amkor Technology, Inc.
Enabling a Microelectronic World
Language Changes – Variables
• Duplicate URL parameters now come across
as a comma delimited list of values.
– ?a=2&a=2 returns 1,2 in MX
– In CF 5, only the last value is passed
• Compound expressions can now be evaluated
inline without the use of the Evaluate()
function:
<CFSET a=1+2>
<CFSET b=(10*5)+32>
© 2002 Amkor Technology, Inc.
Enabling a Microelectronic World
Example: Duplicate URL Variable Names
<CFIF IsDefined('URL.a')>
a=<CFOUTPUT>#URL.a#</CFOUTPUT>
<P>
</CFIF>
<CFOUTPUT>
<A HREF="#CGI.Script_Name#?a=1&a=2">Click me</A>
</CFOUTPUT>
© 2002 Amkor Technology, Inc.
Enabling a Microelectronic World
Language Changes – Dates and Times
• New Short, Medium, Long, and Full masks in
DateFormat() and TimeFormat()
• “gg” mask (era) is now supported in DateFormat()
• Date functions support years in the range 100 AD –
9999 AD
• Two digit years:
– JRE and current locale determine how to process
– For most locales, two digit years are processed relative
to the current century.


Two digit years are interpreted to within 80 years before
the current date and 20 years after.
Exceptions
–
Within 72 years before the current date, and 28 years after:
English (Australian), English (New Zealand), German
(Austrian), German (Standard), German (Swiss), Portuguese
(Brazilian), Portuguese (Standard), Swedish.
© 2002 Amkor Technology, Inc.
Enabling a Microelectronic World
Example: DateFormat()
<CFSET TheDate = Now()>
<CFOUTPUT>
TheDate = #DateFormat(TheDate, 'mm/dd/yyyy')#
<P>
These formats are new in ColdFusion MX:<BR>
short: #DateFormat(TheDate, 'short')#<BR>
medium: #DateFormat(TheDate, 'medium')#<BR>
long: #DateFormat(TheDate, 'long')#<BR>
full: #DateFormat(TheDate, 'full')#<BR>
</CFOUTPUT>
© 2002 Amkor Technology, Inc.
Enabling a Microelectronic World
Example: TimeFormat()
<CFSET TheTime = Now()>
<CFOUTPUT>
TheTime = #TimeFormat(TheTime,'hh:mm:ss tt')#<P>
<P>
These formats are new in ColdFusion MX:<BR>
short: #TimeFormat(TheTime, 'short')#<BR>
medium: #TimeFormat(TheTime, 'medium')#<BR>
long: #TimeFormat(TheTime, 'long')#<BR>
full: #TimeFormat(TheTime, 'full')#<BR>
</CFOUTPUT>
© 2002 Amkor Technology, Inc.
Enabling a Microelectronic World
Language Changes - RequestTimeOut
• RequestTimeOut URL parameter is no longer
supported in MX
• Instead, CFSETTING now has a
REQUESTTIMEOUT parameter
– Allows you to set timeouts on a page-by-page
basis
– Place in your Application.cfm for application
wide setting
• You can support “legacy” code like this:
<CFIF IsDefined(‘URL.RequestTimeOut’)>
<CFSETTING REQUESTTIMEOUT = “#URL.RequestTimeOut#”>
</CFIF>
© 2002 Amkor Technology, Inc.
Enabling a Microelectronic World
Language Changes - CFQUERY
• TIMEOUT attribute is now in seconds and not
•
•
•
•
milliseconds as in CF 5. Also applies to each
part of query, not the whole operation.
CONNECTSTRING attribute is no longer
supported due to JDBC issues. This means
you can no longer make DSN-less
connections.
DNNAME, DBSERVER, PROVIDER, and
PROVIDERDSN are all obsolete
DBTYPE attribute is no longer supported
except for DBTYPE=“Query”
CF now properly escapes single quotes in
values passed to CFQUERY
© 2002 Amkor Technology, Inc.
Enabling a Microelectronic World
Language Changes - Query Objects
• Query objects created manually (via
QueryNew()) can contain complex data types
as individual cell values
– Can’t be used for query of queries
– Can’t be saved to DB without first serializing
compex data types into WDDX or other string
format
– Invalid names passed to QueryAddNew() now
throw an error (CF 5 let them go)
© 2002 Amkor Technology, Inc.
Enabling a Microelectronic World
Example: Query Cell Containing an Array
<CFSET
<CFSET
<CFSET
<CFSET
Colors = ArrayNew(1)>
Colors[1]="Red">
Colors[2]="Silver">
Colors[3]="Blue">
<CFSET Products = QueryNew("ProductName, Color, Price, Qty")>
<CFSET NewRows = QueryAddRow(Products, 2)>
<CFSET
<CFSET
<CFSET
<CFSET
QuerySetCell(Products,
QuerySetCell(Products,
QuerySetCell(Products,
QuerySetCell(Products,
"ProductName", "Widget", 1)>
"Color", Colors, 1)>
"Price", "19.99", 1)>
"Qty", "46", 1)>
<CFSET
<CFSET
<CFSET
<CFSET
QuerySetCell(Products,
QuerySetCell(Products,
QuerySetCell(Products,
QuerySetCell(Products,
"ProductName", "Thingy", 2)>
"Color", Colors, 2)>
"Price", "34.99", 2)>
"Qty", "12", 2)>
<CFDUMP VAR="#Products#">
© 2002 Amkor Technology, Inc.
Enabling a Microelectronic World
Language Changes – Query of Queries
• Improved performance
•
•
•
•
– Orders of magnitude for many operations
– Recommended upper limit for records is now
50,000 rows. CF 5 was 10,000
Column aliases in ORDER BY, GROUP BY, and
HAVING
Neither MX nor CF 5 support table aliases
Full support for LIKE
Arbitrary expressions can be:
– Grouped
– In aggregate functions
– Additionally, arbitrary functions are allowed in
aggregate functions
© 2002 Amkor Technology, Inc.
Enabling a Microelectronic World
Language Changes – Query of Queries
• Upper() and Lower() scalar functions for case
insensitive matching
• Addition and subtraction can be performed on
DATE types
• Improved error messages
• != may be used instead of <> for comparisons
© 2002 Amkor Technology, Inc.
Enabling a Microelectronic World
Language Changes - CFMAIL
• New SPOOLENABLE attribute – two options
– Yes (default): Copy of message is queued to
disk until it can be sent. Same behavior as CF
5.
– No: Messages are queued in memory until
they can be sent
• GROUP attribute now works correctly
© 2002 Amkor Technology, Inc.
Enabling a Microelectronic World
Language Changes – Binary
• Binary strings are now represented as bytearrays
• You can use standard CF string functions for
manipulating binary data without having to
Base 64 encode
• CFDUMP can dump the contents of binary
objects, or you can use CFLOOP to iterate
over the byte-array
© 2002 Amkor Technology, Inc.
Enabling a Microelectronic World
Example: Manipulating Binary
<CFINCLUDE TEMPLATE="_TwosCompToDec.cfm">
<CFSET
flnm="d:\cfusionmx\wwwroot\cfide\administrator\images\cfmx.
gif">
<CFFILE ACTION="ReadBinary" FILE="#flnm#" VARIABLE="TheFile">
<CFSET Width = TwosCompToDec((TheFile[7]) + (TheFile[8] *
256), 8)>
<CFSET Height = TwosCompToDec((TheFile[9]) + (TheFile[10] *
256), 8)>
<H2>GIF Dimensions</H2>
<CFOUTPUT>
Width: #Width#<BR>
Height: #Height#<BR>
</CFOUTPUT>
© 2002 Amkor Technology, Inc.
<CFDUMP VAR="#TheFile#">
Enabling a Microelectronic World
Language Changes - CFSCRIPT
• Try/Catch exception handling added
– Syntax a bit different than CFTRY/CFCATCH
– Catch statements coded outside Try block
– No CFCATCH structure. You get to define
your own to hold error information
– No CFTHROW or CFRETHROW equivalent
• For-in loop can now be used to loop over
COM collections
© 2002 Amkor Technology, Inc.
Enabling a Microelectronic World
Example: Try/Catch in CFScript
<CFSCRIPT>
try {
x=y+1;
}
catch("Expression" exception) {
writeOutput("Expression Error: " &
exception.Message);
}
catch("Any" exception) {
writeOutput("General Error: " &
exception.Message);
}
</CFSCRIPT>
© 2002 Amkor Technology, Inc.
Enabling a Microelectronic World
Example: For-in Loop over COM in CFScript
<cfscript>
fso = CreateObject("COM",
"Scripting.FileSystemObject");
for (i in fso.drives) {
WriteOutput(i.DriveLetter &"<br>");
}
</cfscript>
© 2002 Amkor Technology, Inc.
Enabling a Microelectronic World
Language Changes – Regular Expressions
• MX Introduces a totally new regular
•
•
•
•
expression engine
“Perl” compatible
More special characters and escape
sequences
Case conversion in replacement strings
Minimal matching
© 2002 Amkor Technology, Inc.
Enabling a Microelectronic World
Example: Regular Expressions
<CFSET String="I want to go to to the park.">
<CFOUTPUT>
From the CF Docs:<BR>
#REReplaceNoCase(String, "([A-Za-z]+)[
]+\1","\1","ALL")#
<P>
Should be:<BR>
#ReReplaceNoCase(String, "\b([a-z]+)[ ]+\1", "\1",
"All")#
</CFOUTPUT>
© 2002 Amkor Technology, Inc.
Enabling a Microelectronic World
Language Changes - Unicode
• CF MX Supports Unicode!
– MX supports Java UCS-2 character code
values in the range 0-65535
– CF 5 only supported characters in the range 1255
– Character set support is a function of the
underlying JRE
• Default encoding is UTF-8
© 2002 Amkor Technology, Inc.
Enabling a Microelectronic World
Language Changes - Unicode
• CFPROCESSINGDIRECTIVE tag can now set the
encoding for a page
– The most common character sets are UTF-8, UTF-16,
UTF-16BE, UTF-16LE, US-ASCII, and ISO-8859-1
– You may use any character set supported by your JRE
• Many tags and functions have a new CHARSET
attribute/prameter
– CFCONTENT
– CFFILE
– CFHTTP
– ToBase64()
– ToString()
– UrlDecode()
– UrlEncodedFormat()
© 2002 Amkor Technology, Inc.
Enabling a Microelectronic World
Language Changes – LS Functions
• Locales are defined by your JRE
– Locales may be different than in CF 5
– LSEuroCurrencyFormat() now only returns
EUR as the currency symbol for locales that
support it
– LSCurrencyFormat() does not return EUR as
the currency symbol for any locale – even
those supporting the Euro
• There are several other changes to LS
functions. Consult the CF Docs for more info.
© 2002 Amkor Technology, Inc.
Enabling a Microelectronic World
Language Changes - Locking
• Contrary to rumor, CFLOCK is not gone – just
different
– If you don’t lock access to shared scope
variables (application, session, server), CF MX
won’t experience the memory corruption that
could occur in previous versions
– However, race conditions as well as
overwriting of values can still occur.
– In many (most?) cases, you’ll continue to want
to lock
© 2002 Amkor Technology, Inc.
Enabling a Microelectronic World
Language Changes - Verity
• All Tags (CFCOLLECTION, CFINDEX,
CFSEARCH):
– Collection names may now contain spaces
– New SearchEngine exception type is thrown
when an error occurs with CFINDEX,
CFCOLLECTION, and CFSEARCH
© 2002 Amkor Technology, Inc.
Enabling a Microelectronic World
Language Changes - Verity
• Changes to CFCOLLECTION
– ACTION is now required
– New ACTION=“List”. Returns query with
names of all registered collections – VDK and
K2
– ACTION=“Map” is no longer necessary as MX
automatically detects mapped collections
© 2002 Amkor Technology, Inc.
Enabling a Microelectronic World
Language Changes - Verity
• Changes to CFINDEX
– ACTION=“Optimize” is obsolete in MX
– EXTERNAL attribute is no longer necessary as
MX automatically detects mapped collections.
Do not use it.
© 2002 Amkor Technology, Inc.
Enabling a Microelectronic World
Language Changes - Verity
• Changes to CFSEARCH
– Now allows fully qualified (absolute) path
names in the COLLECTION attribute
– EXTERNAL attribute is no longer necessary as
MX automatically detects mapped collections.
Do not use it.
© 2002 Amkor Technology, Inc.
Enabling a Microelectronic World
Language Changes - Verity
• New K2 Server functions
–
–
–
–
GetK2ServerDocCount()
GetK2ServerDocCountLimit()
IsK2ServerABroker()
IsK2ServerOnline()
© 2002 Amkor Technology, Inc.
Enabling a Microelectronic World
New Features - CFHTTP
• Can now post raw XML using new “XML”
•
•
•
•
•
CFHTTPPARAM Type
New FIRSTROWASHEADERS attribute solves
problem with first row in delimited file always
being lost
CFHTTP follows a maximum of 4 redirects.
CF 5 would follow up to 5
Response headers return structures when
multiple keys have same name. CF 5 returned
arrays
Certain behaviors such as SSL support vary
depending on your JRE
See the Release Notes for more info
© 2002 Amkor Technology, Inc.
Enabling a Microelectronic World
New Features - Security
• Advanced Security (SiteMinder) is gone
• Replaced with new security framework

Application based security
–
–

New tags
 CFLOGIN
 CFLOGINUSER
 CFLOGOUT
New Functions
 IsUserInRole()
 GetAuthUser()
Sandbox Security
–
Lock-down tags, functions, databases, files,
directoriesm and IP addresses and ports based on
directory
© 2002 Amkor Technology, Inc.
Enabling a Microelectronic World
New Features – Charting and Graphing
• CFGRAPH and CFGRAPHDATA are
deprecated.
• Still functional. However, may produce
unexpected output.
• Run the code compatibility analyzer in the CF
Admin to find templates containing these tags
• Replaced by CFCHART, CFCHARTSERIES,
and CFCHARTDATA
© 2002 Amkor Technology, Inc.
Enabling a Microelectronic World
New Features – Charting and Graphing
• CFCHART offers the following
– 11 chart/graph types with 2 and 3 dimensional
versions of each
– Flash, JPG, or PNG format (no GIF due to
licensing issues)
– More interactive display options than
CFGRAPH
– Multiple series
– Ability to overlay different chart types
– Charts can be cached to memory or disk
© 2002 Amkor Technology, Inc.
Enabling a Microelectronic World
Example: Super Basic CFCHART
<CFQUERY NAME="GetSalary" DATASOURCE="ProgrammingCF">
SELECT Department, AVG(Salary) AS AvgSalary FROM
EmployeeDirectory
GROUP BY Department
</CFQUERY>
<CFCHART FORMAT="Flash">
<CFCHARTSERIES QUERY="GetSalary" TYPE="bar"
VALUECOLUMN="AvgSalary"
ITEMCOLUMN="Department">
<CFCHARTSERIES QUERY="GetSalary" TYPE="line"
VALUECOLUMN="AvgSalary"
ITEMCOLUMN="Department">
</CFCHART>
© 2002 Amkor Technology, Inc.
Enabling a Microelectronic World
New Features – UDFs
• MX now supports tag based UDFs
– Opens up a ton of new UDF possibilities
– THREE new tags



CFFUNCTION
CFARGUMENT
CFRETURN
– Local function variables are created with new
Var attribute: <CFSET Var x=1>
• Arguments is now available as an array AND a
structure
• Function parameters can now be named:
Person(Name=“Joe”, Age=“30”)
© 2002 Amkor Technology, Inc.
Enabling a Microelectronic World
Example: Tag based UDFs
<CFFUNCTION NAME="IsScheduledTask" RETURN="Boolean">
<CFARGUMENT NAME="TaskName" REQUIRED="True" TYPE="String">
<!--- var local vars for the func --->
<CFSET Var TaskXML="">
<CFSET Var GetTasks="">
<!--- get the scheduler xml file. It's stored as WDDX --->
<CFFILE ACTION="Read“ FILE="#Server.ColdFusion.RootDir#\lib\neo-cron.xml“
VARIABLE="TaskXML">
<!--- convert the WDDX to CFML - and array of structs --->
<CFWDDX ACTION="WDDX2CFML" INPUT="#TaskXML#" OUTPUT="GetTasks">
<!--- search the array of structs for the name passed to the func --->
<CFIF ListContainsNoCase(StructKeyList(GetTasks[1]), Arguments.TaskName) EQ 0>
<CFRETURN False>
<CFELSE>
<CFRETURN True>
</CFIF>
</CFFUNCTION>
<CFOUTPUT>Is "Test" a scheduled task? #IsScheduledTask("test")#<BR>
Is "Jest" a scheduled task? #IsScheduledTask("jest")#</CFOUTPUT>
© 2002 Amkor Technology, Inc.
Enabling a Microelectronic World
New Features – Native XML Handling
• New XML Document Object data type
– Builds a DOM using native ColdFusion data
types such as arrays and structures
– Can be manipulated with new XML functions,
structure functions, and array functions
• CFDUMP displays an extremely useful
representation of the XML document object
© 2002 Amkor Technology, Inc.
Enabling a Microelectronic World
Example: XML Document Object
<CFFILE ACTION="Read"
FILE="d:\cfusionmx\wwwroot\mdcfug\MacromediaXmlFeed.x
ml" VARIABLE="MyXML">
<CFSET DesDev = XmlParse(MyXML)>
<CFDUMP VAR="#DesDev#">
© 2002 Amkor Technology, Inc.
Enabling a Microelectronic World
New Features – Native XML Capabilities
• Read an existing XML file and convert it to an
•
•
•
•
XML document object
Add,update, and delete elements and data
from an XML document object
Transform XML document objects using XSLT
Search and extract data using Xpath
Generate XML files from XML document
objects
© 2002 Amkor Technology, Inc.
Enabling a Microelectronic World
New Features – XML Tags and Functions
• Tags
• Functions
– CFXML
–
–
–
–
–
–
–
–
–
–
© 2002 Amkor Technology, Inc.
IsXmlDoc()
IsXmlElement()
IsXmlRoot()
XmlChildPos()
XmlElemNew()
XmlFormat()
XmlNew()
XmlParse()
XmlSearch()
XmlTransform()
Enabling a Microelectronic World
Example: Manipulating XML
<CFFILE ACTION="Read" FILE="d:\cfusionmx\wwwroot\mdcfug\MacromediaXmlFeed.xml" VARIABLE="MyXML">
<CFSET
<CFSET
<CFSET
<CFSET
DesDev = XmlParse(MyXML)>
Size = ArrayLen(DesDev.Macromedia_Resources.XmlChildren)>
MyQuery = QueryNew("resource, title, author, url, product") >
QueryAddRow(MyQuery, Size)>
<CFLOOP INDEX="i" FROM="1" TO="#Size#">
<CFSET ThisProd = "">
<CFSET QuerySetCell(MyQuery, "resource",
DesDev.Macromedia_Resources.Resource[i].XmlAttributes.Type, i)>
<CFSET QuerySetCell(MyQuery, "title", DesDev.Macromedia_Resources.Resource[i].Title.XmlText,
i)>
<CFSET QuerySetCell(MyQuery, "author", DesDev.Macromedia_Resources.Resource[i].Author.XmlText,
i)>
<CFSET QuerySetCell(MyQuery, "url", DesDev.Macromedia_Resources.Resource[i].Url.XmlText, i)>
<!--- get the number of products by looping over the entire XMLChildren array and pulling out
only product items. This is necessary because
an item can pertain to more than one product. --->
<CFSET NumOfProd = ArrayLen(DesDev.Macromedia_Resources.XmlChildren[i].XmlChildren)>
<CFLOOP INDEX="j" FROM="1" TO="#NumOfProd#">
<CFIF DesDev.Macromedia_Resources.XmlChildren[i].XmlChildren[j].XmlName IS "product">
<CFSET ThisProd = ListAppend(ThisProd,
DesDev.Macromedia_Resources.XmlChildren[i].XmlChildren[j].XmlAttributes.Name)>
</CFIF>
</CFLOOP>
</CFLOOP>
<CFDUMP VAR="#MyQuery#">
© 2002 Amkor Technology, Inc.
Enabling a Microelectronic World
New Features - CFIMPORT
• Four uses:
– Import JSP Tag Libraries
– Import “libraries” of custom tags


Allows you to store and call your custom tags
anywhere on the server
Allows custom prefixes
– Import web services
– Adaptive tags
© 2002 Amkor Technology, Inc.
Enabling a Microelectronic World
New Features – Adaptive Tags
• Use CFIMPORT with PREFIX=“”
• Modify existing HTML/CFML tags to do new
and interesting things
© 2002 Amkor Technology, Inc.
Enabling a Microelectronic World
Example: CFIMPORT and Adaptive Tags
<CFIMPORT PREFIX="" TAGLIB="/mdcfug/adaptivetags">
<BLINK>Fill me out!</BLINK>
<FORM MEDHOD="Post"
ACTION="<CFOUTPUT>#CGI.Script_Name#</CFOUTPUT>">
State: <INPUT TYPE="State" NAME="State"><BR>
Name: <INPUT TYPE="Text" NAME="Name" WIDTH="15"
MAXLENGTH="255"><BR>
<INPUT TYPE="Submit" NAME="Submit" VALUE="Submit">
</FORM>
© 2002 Amkor Technology, Inc.
Enabling a Microelectronic World
New Features - CFCs
• CFC = ColdFusion Component
• A lot more to them than we can cover here
• CFC’s are objects that allow “pseudo” objectoriented programming in CF MX
– CFC’s have methods you can call
– Limited inheritance
– Introspection
• New variable scope in CFCs – This
• Use the CFCexplorer!
© 2002 Amkor Technology, Inc.
Enabling a Microelectronic World
New Features - CFCs
• New tags and functions for creating and
working with components:
– CFCOMPONENT
– CFFUNCTION
– CFARGUMENT
– CFPROPERTY
– CFRETURN
– CFINVOKE/CFINVOKEARGUMENT
– CFOBJECT
– GetMetaData()
© 2002 Amkor Technology, Inc.
Enabling a Microelectronic World
New Features - CFCs
• Can be called in a number of ways:
– CFINVOKE tag
– CFOBJECT tag
– CFSCRIPT (CreateObject)
– URL
– FORM
– Flash Remoting
– As a Web Service
• To see what a CFC has to offer, enter it’s URL
(secured by RDS password)
© 2002 Amkor Technology, Inc.
Enabling a Microelectronic World
New Features - CFCs
• CFC security is handled with the ROLES and
ACCESS attributes
– Roles specify WHO can access the CFC and
correspond with roles defined within the CF
security architecture
– ACCESS specifies HOW the CFC can be
accessed:




Public
Private
Package
Remote
© 2002 Amkor Technology, Inc.
Enabling a Microelectronic World
Example: CFINVOKE a CFC
<!--- call with CFINVOKE, filter on multiple products,
sort it, and return as
a query object --->
<cfinvoke component="GetDesDevFeed"
method="GetFeed"
product="ColdFusion,Macromedia_Flash" <!--- no space
between items --->
sortOrder="Title DESC"
returnVariable="MyQuery">
<cfdump var="#MyQuery#">
© 2002 Amkor Technology, Inc.
Enabling a Microelectronic World
New Features – Web Services
• CF MX has built in support for SOAP based
web services via the Apache Axis server
under the hood
• Both production and consumption are
supported:
– CFINVOKE/CFINVOKEARGUMENT or
CreateObject() to consume
– Set ACCESS to “Remote” in a CFC to produce
– it’s that easy!
• WSDL file is automatically created when
producing a web service
• Web services can be registered in the CF
Admin to avoid having to always specify the
full path to the WSDL file
© 2002 Amkor Technology, Inc.
Enabling a Microelectronic World
Example: Invoking a Web Service
<cfinvoke
webservice="http://localhost:8500/mdcfug/getdesdevfee
d.cfc?wsdl"
method="getFeed"
returnvariable="aQuery">
<cfinvokeargument name="product" value="ColdFusion"/>
<cfinvokeargument name="author" value=""/>
<cfinvokeargument name="resource" value=""/>
<cfinvokeargument name="sortOrder" value=""/>
</cfinvoke>
<CFDUMP VAR="#aQuery#">
© 2002 Amkor Technology, Inc.
Enabling a Microelectronic World
New Features – Web Services
• Security for web services is the same as that
for CFCs
• If you have Dreamweaver MX, there are all
sorts of goodies for auto-generating code for
producing and consuming web services in
ColdFusion
© 2002 Amkor Technology, Inc.
Enabling a Microelectronic World
Resources
• MX Release Notes:
•
•
•
•
•
•
http://www.macromedia.com/support/coldfusion/releas
enotes/mx/releasenotes_mx.html
MX Doc Updates:
http://www.macromedia.com/v1/Handlers/index.cfm?ID
=22811&Method=Full
MX Doc Additions:
http://www.macromedia.com/v1/handlers/index.cfm?id=
22993&method=full
MX LiveDocs:
http://livedocs.macromedia.com/cfmxdocs/
Macromedia Designer & Developer Center:
http://www.macromedia.com/desdev/mx/coldfusion/
CFLib.org: http://www.cflib.org
CFCzone: http://www.cfczone.org
© 2002 Amkor Technology, Inc.
Enabling a Microelectronic World
Q&A
• Feel free to email me questions at
[email protected]
• This presentation is available for download
from http://www.cfug-md.org
© 2002 Amkor Technology, Inc.
Enabling a Microelectronic World