1 / 27

Using Event Gateways with CFMX7

Using Event Gateways with CFMX7. By Jeff Tapper Tapper.net Consulting. Agenda. Introduction to Event Gateways Working with Events Configuring Gateways Listener Applications Broadcaster Applications Summary Questions. Who Am I. Jeff Tapper (jeff@tapper.net)

Download Presentation

Using Event Gateways with CFMX7

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Using Event Gateways with CFMX7 By Jeff Tapper Tapper.net Consulting

  2. Agenda • Introduction to Event Gateways • Working with Events • Configuring Gateways • Listener Applications • Broadcaster Applications • Summary • Questions

  3. Who Am I • Jeff Tapper (jeff@tapper.net) • Chief Technologist Tapper.net Consulting • Working with CF since 1995 (v 1.5) • Authored 6 books about CF and/or Flash • Certified MM Instructor for all CF, Flashand Flex courses

  4. Event Gateways • Allow access to CF without HTTP • Call CF code from anything Java can react to • Such as: • Instant Messages • Text Messages from Phones • Java Messaging Service • File System Changes • Etc.

  5. How it works • Message Generator • Event Gateway (Java) • Event Gateway Services (CF) • Listener CFC

  6. Event Gateway CFEvent CFEvent Message CFEvent Understanding the Architecture • Message • Generator/Receiver • SMSC Server • IM Provider • Etc. Listener CFC CF Event Gateway Services Event Listener CFC or CFM Page Event <CFML>

  7. Gateway Types • Several gateway types are provided • SMS • XMPP • CFML • JMS • Directory Watcher • Etc. • Custom Gateway types can be built as needed

  8. Gateway Types • Event Listeners • Creates an event structure and queues it in the Gateway

  9. Gateway Instance • Relates a gateway type to a Listener CFC • Each instance properties set with Configuration file

  10. Application Types • Listener Applications • CFC reacts to outside events • Broadcaster Application • CFML initiates a message to be sent

  11. Listener Applications • Listener CFC called by gateway instance • Method specified in Configuration is called • CFEvent Structure passed as argument

  12. Listener CFC • Contains methods for handling events • Optionally responds to sender with CFReturn • Method is passed CFEvent Struct RFAFileWatch.cfc

  13. CFEvent Structure • Java Object provided by gateway • gatewayId – reference to Instance • data – struct of incoming message • customized for each Event Type • originator – who sent message • SMS phone # • IM handle • Etc. • gateway Type – reference to gateway which heard the event

  14. Configuring a Gateway • Create config file • Build CFC with appropriate methods • Add Gateway Instance to CFAdmin • Start the Gateway CFAdmin

  15. Setting Config file • DirectoryWatcherGateway settings are defined in a Config file --{cfroot}\gateway\config\directory-watcher.cfg • Specifies: • directory • recurse • extensions • Interval • addFunction • changeFunction • deleteFunction RFAUploadDirectory-watcher.cfg

  16. Config File gateway/config/directory-watcher.cfg # The directory you want to watch. If you are entering a Windows path either use forward slashes (C:/mydir) or escape the back slashes (C:\\mydir). directory= # Should we watch the directory and all subdirectories too Default is no. Set to 'yes' to do the recursion. recurse=no # The interval between checks, in milliseconds Default is 60 seconds interval=60000 # The comma separated list of extensions to match. Default is * - all files extensions=* # CFC Function for file Change events Default is onChange, set to nothing if you don't want to see these events changeFunction=onChange # CFC Function for file Add events Default is onAdd, set to nothing if you don't want to see these events addFunction=onAdd # CFC Function for file Delete events Default is onDelete, set to nothing if you don't want to see these events deleteFunction=onDelete

  17. DirWatch.cfc <cfcomponent> <cffunction name="onAdd" output="no"> <cfargument name="CFEvent" type="struct" required="yes"> <cfset data=CFEvent.data> <cflog file="MydirWatcher" application="No" text="ACTION: #data.type#; FILE: #data.filename#; TIME: #timeFormat(data.lastmodified)#"> </cffunction> </cfcomponent>

  18. Customizing Directory Watcher • Problem: Needed easier way to remotely add songs to “Radio Free Astoria” play list • Solution: Using a modified Directory Watcher, I am now able to ftp songs to the server, have them moved to the appropriate directory and automatically added to play list

  19. RFA Directory Watcher Flow New mp3 ftp’d to server Directory Watcher triggers CFC File moved Added to playlist Confirmation Sent

  20. Broadcaster Applications • CFML can be used to broadcast out custom events • Some examples • Send CFML Event to start new thread • SMS site admin about system errors • Send new events to JMS messaging queue • Send Instant Message about application

  21. Sending an Event • CFMX7 introduced new sendGatewayMessage() function • Takes two arguments • gatewayID - gateway instance configured in CFAdmin • Message – struct containg message data • Return type varies based on gateway. Often true or false indicating success

  22. sendGatewayMessage <cffunction name="sendConfirm" access="private" output="no"> <cfargument name="songName" type="string"> <cfset var struct = structNew()> <cfset struct.buddyId = "theAstorian"> <cfset struct.message = "Song #songName# added"> <cfset result = sendGatewayMessage("RFAXMPP",struct)> <cfif result neq 'ok'> <cflog file="rfafileupload" type="Information" text="#result#"> </cfif> </cffunction>

  23. getGatewayHelper() • Returns an object containing details about the gateway • Instant Message Helper ships with CFMX7 • Example: myHelper = getGatewayHelper("rfaxmpp"); status = myHelper.getBuddyInfo("jefftappernyc@yahoo.myjabber.net");

  24. Communicating with IM Gateway Instance XMPP Gateway Jabber Network AIM/MSN/ Yahoo Transport AIM/MSN or Yahoo Network Or, you can use JBuddy CF from Zion Software*

  25. Where to learn more? • CFUnited • Damon Cooper - CFMX 7 Mobile SMS Applications Made Easy • Tom Jordahl – Advanced ColdFusion Event Gateways • Lots of new docs • JBuddyCF – http://www.zionsoftware.com • Blogs: • boyzoid.com • jeff.mxdj.com • weblogs.macromedia.com/mxna/

  26. Summary • Gateways allow for CFML to be triggered by things other than HTTP requests • Gateways react to certain events and calls methods in a CFC • Gateway settings are specified in a Config File • Gateways can be registered using the ColdFusion Administrator

  27. Questions ?

More Related