Enterprise Integration with ColdFusion Sean A Corfield


Published on

  • Be the first to comment

  • Be the first to like this

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

Enterprise Integration with ColdFusion Sean A Corfield

  1. 1. Enterprise Integration with ColdFusion <ul><ul><li>Sean A Corfield </li></ul></ul><ul><ul><li>Director of Architecture </li></ul></ul><ul><ul><li>Macromedia, Inc. </li></ul></ul>
  2. 2. Goals <ul><li>Explain some of the history behind Macromedia's use of ColdFusion, both on the web and behind it </li></ul><ul><li>Show you how Macromedia is using ColdFusion “behind the web” for integration tasks </li></ul><ul><li>Inspire you to think outside the “web box” and look for new problems to solve with ColdFusion MX 7 </li></ul>
  3. 3. Who Am I? <ul><li>Senior Architect for Macromedia IT (since mid-2000) </li></ul><ul><li>A ColdFusion developer (since late-2001) </li></ul><ul><li>...and Java developer (since early-1997) </li></ul><ul><li>An advocate of standards and best practices (since birth?) </li></ul>
  4. 4. Agenda <ul><li>Setting the scene – a brief history of macromedia.com </li></ul><ul><li>A look at our Online Store architecture </li></ul><ul><li>Introducing Oracle Applications (ERP) </li></ul><ul><li>Additional systems join our Hub'n'Spoke world </li></ul><ul><li>Evolving our Online Store architecture </li></ul><ul><li>Upcoming changes and future plans </li></ul><ul><li>Wrap-up </li></ul>
  5. 5. macromedia.com BC <ul><li>B efore C oldFusion... </li></ul><ul><li>macromedia.com was built with BroadVision and Perl </li></ul><ul><li>We created flat files full of CSV data and ran batch jobs to move those files around and load them into databases </li></ul>
  6. 6. macromedia.com BC
  7. 7. 2001 A ColdFusion Odyssey <ul><li>Macromedia acquired Allaire </li></ul><ul><li>I formed Web Technology Group to rewrite macromedia.com using ColdFusion </li></ul><ul><li>ColdFusion 5 was the (new) current release </li></ul><ul><li>We learned ColdFusion on Neo using pre-alpha builds and then alphas and betas – it was “fun”... </li></ul><ul><li>We also picked JMS (Java Message Service) and XML as core technologies for data transfer between the website and the various back end systems, using Java “adapters” </li></ul>
  8. 8. macromedia.com – CFMX 6.0 U3 <ul><li>macromedia.com launched in early March 2003 on ColdFusion MX 6.0 Updater 3 </li></ul><ul><li>About a dozen ColdFusion applications </li></ul><ul><li>BroadVision still powered our Online Stores </li></ul><ul><li>Perl still powered many of the simple information forms </li></ul><ul><li>Later that year we launched the Flash / ColdFusion Online Stores for Europe with BroadVision for non-Flash users </li></ul>
  9. 9. macromedia.com – CFMX 6.0 U3
  10. 10. macromedia.com – CFMX 6.1 <ul><li>We were running Red Sky just before launch (August 2003) </li></ul><ul><li>We adopted Mach II as the Web Team standard (2004) </li></ul><ul><li>We continued to write more applications (currently around 50 applications, a quarter are Mach II apps) </li></ul><ul><li>We launched HTML versions of our Online Stores and rolled them out worldwide (2003-2004) </li></ul><ul><li>BroadVision was finally gone </li></ul><ul><li>Some Perl forms remain (it ain't broke!) </li></ul>
  11. 11. macromedia.com – CFMX 6.1
  12. 12. Online Store Architecture I <ul><li>Tiered application architecture: </li></ul><ul><ul><li>Front end has both Flash & HTML versions </li></ul></ul><ul><ul><li>Business logic implemented with ColdFusion (using the same CFCs, and Mach II for HTML version) </li></ul></ul><ul><ul><li>Back end used Perl scripts to manage fulfilment and settlement functionality </li></ul></ul><ul><li>CSV (tab-delimited) files moved by FTP to ERP system </li></ul>
  13. 13. Online Store Architecture I
  14. 14. ERP – Oracle Applications <ul><li>Rolled out new ERP system (March 2004) </li></ul><ul><li>Used OAGIS 7.2.1 standard XML for order management file exchanges (instead of CSV) </li></ul><ul><li>Still FTP based batch jobs (since everything is file-based) </li></ul><ul><li>Some vendors (including OLS) still provided CSV </li></ul><ul><li>ColdFusion application written to manage all the XML and CSV file exchanges and automate the FTP processes </li></ul>
  15. 15. ERP – Oracle Applications
  16. 16. Breeze Live Online Sales <ul><li>2004 also saw Breeze Live become available for purchase online as well as hosted solution </li></ul><ul><li>Decided to leverage JMS rather than Online Store method </li></ul><ul><li>Sales orders transmitted as XML over JMS in near real time </li></ul><ul><li>Developed JMS event gateway for ColdFusion MX 7 </li></ul><ul><li>Uses exactly the same order processing CFC as batch files </li></ul>
  17. 17. Breeze Live Online Sales
  18. 18. salesforce.com (late 2004) <ul><li>Implemented sf.com for sales leads </li></ul><ul><li>Web site captures leads, publishes them using JMS </li></ul><ul><li>Web Service adapters (.NET) exchange data with sf.com </li></ul><ul><li>JMS used to exchange data between adapters and other systems: web site, support, marketing, analytics </li></ul>
  19. 19. salesforce.com (spring 2005) <ul><li>We rewrote all of the .NET adapters in ColdFusion (.NET libraries from the JMS vendor were unreliable) </li></ul><ul><ul><li>Rough guesstimate: building adapters in CF is between four and eight times easier than either Java or .NET based on development times (Java and .NET are about par) </li></ul></ul><ul><li>Leverage the CFMX 7 JMS event gateway </li></ul><ul><li>Leverage improved web service support in CFMX 7 </li></ul>
  20. 20. Internal Order Management <ul><li>Several internal applications also capture manual orders </li></ul><ul><li>Already written in ColdFusion </li></ul><ul><li>Generated orders as CSV files </li></ul><ul><li>Rewrote file generation custom tag to produce XML </li></ul><ul><li>Could easily change to use JMS now! </li></ul>
  21. 21. Online Store Architecture II <ul><li>Replace Perl back end </li></ul><ul><ul><li>Use same engine as Breeze Live Online Sales </li></ul></ul><ul><ul><li>Send all orders as XML over JMS </li></ul></ul><ul><li>ERP ColdFusion application does not change! </li></ul>
  22. 22. OLS Architecture II – Web Side
  23. 23. OLS Architecture II – ERP Side
  24. 24. New Order Management <ul><li>Real time communication between OLS and ERP </li></ul><ul><ul><li>Sales orders </li></ul></ul><ul><ul><li>Order status </li></ul></ul><ul><ul><li>Ship confirmation </li></ul></ul><ul><li>Inside Oracle we publish data in real time </li></ul><ul><ul><li>On triggers / workflow events, we publish recordsets as XML to Oracle AQ queues </li></ul></ul><ul><ul><li>Oracle AQ event gateway (Java) consumes and republishes to JMS using JMS event gateway </li></ul></ul>
  25. 25. New Order Management (cont) <ul><li>Large attachments processed in the background </li></ul><ul><ul><li>Sends URL to async CFML gateway </li></ul></ul><ul><ul><li>Async task fetches document and stores in Oracle </li></ul></ul><ul><li>Real time communication between ERP & CRM </li></ul><ul><ul><li>Customer details & entitlements published to a single Oracle queue as XML rowsets </li></ul></ul><ul><ul><li>Oracle AQ event gateway consumes, reformats and publishes to two separate JMS topics </li></ul></ul><ul><ul><li>JMS event gateway consumes , parses and stores customer details & entitlements in CRM </li></ul></ul>
  26. 26. The Big Picture
  27. 27. Future Plans <ul><li>Over time, replace complex custom Java adapters with CFMX 7 JMS event gateways </li></ul><ul><li>Consider replacing scheduled tasks that scan directories for files with the built-in CFMX 7 DirectoryWatcher </li></ul><ul><li>Enhanced JMS event gateway – supports authentication, per-topic cached publishers, additional “initial context properties” </li></ul>
  28. 28. Conclusion <ul><li>XML provides a human-readable, self-validating, structured format for complex data – and it's easy to process in CF! </li></ul><ul><ul><li>XML beats CSV hands down (duh!) </li></ul></ul><ul><li>JMS has reduced latency in data processing and improved the reliability of data transfers within the enterprise </li></ul><ul><li>A hub'n'spoke architecture makes it easier to add and replace systems without re-engineering everything else </li></ul>
  29. 29. Conclusion (continued) <ul><li>Building JMS-based applications can be a complex, time-consuming process (and unreliable on .NET!) </li></ul><ul><li>ColdFusion MX 7's event gateways make it easy to build maintainable, robust asynchronous applications </li></ul><ul><ul><li>JMS publish & subscribe </li></ul></ul><ul><ul><li>Oracle AQ receive </li></ul></ul><ul><ul><li>DirectoryWatcher </li></ul></ul><ul><ul><li>Asynchronous CFML </li></ul></ul>
  30. 30. Questions & Answers? <ul><ul><li>Sean A Corfield </li></ul></ul><ul><ul><li>Director of Architecture </li></ul></ul><ul><ul><li>Macromedia, Inc. </li></ul></ul><ul><ul><li>[email_address] </li></ul></ul><ul><ul><li>[email_address] </li></ul></ul>