MAX 2008: Build collaborative applications with Flex LCDS and Cairngorm

1,131 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,131
On SlideShare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • Find out how LiveCycle Data Services ES and Data Management Services enable the creation of highly collaborative multiuser applications that leverage data-push, synchronization, collaboration, and application-sharing features. Adobe Consulting will share examples and code for including collaboration functionality in rich Internet applications running on Adobe AIR. Come discover this innovative new breed of rich Internet applications.
  • Ali – 2 mins
  • Ali – 1 mins
  • Xavier – 3 minutes
  • Multiple Users/group working with the same data. Data push in order to make a decision. Notifications about other people Adobe technologies (LCDS, BlazeDS) will boost developer productivity
  • Ali –3 minutes Who here has used BlazeDS? Who has used any part of LiveCycle Data services that’s not available in BlazeDS Who understands the differences between the two?
  • Blaze is a fully functional open source messaging technology. It has two main areas, RPC services and messaging - RPC is probably used most, with RemoteObject, HTTP Service and Web Service It also has messaging services, include real time data push, pub sub and some real time collaboration features. These are all implemented over HTTP. - AMF – utilities like Charles
  • All of blaze ds plus… Data Sync – allows you to automatically synchronised your data between your server and any number of connected clients. No need to poll from the client. As well as requiring less code and therefore making your application development simpler, it also reduces network traffic as updates are pushed to connected clients - We know that AIR provides offline support via its embedded SQL-lite database and encrypted local store, but when tied to data management services, we also get additional features. If you use data management services to manage your data, and the user goes offline, then any changes can be automatically stored in AIRs client side SQL-lite database. Then, when the user next connects, those changes can be synchronised to the server. LCDS also has a data paging feature, to help you deal with large data sets. If you have thousands of records to be displayed in your client, LCDS can be used to only fetch the first, say, 100 records, display those to the user, and then fetch the other records in the background. Its incredibally flexibe, so, for example, if you provide the dataset as a data provider to a datagrid, scrolling the datagrid will cause on-demand request for the data if it hasn’t already been loaded. The other major feature in LCDS that’s not in Blaze is the ability to generate PDF documents, based on a template and a set of data. This is a sub-set of the features available in the full LC Enterprise Suite, but its good for simple pdf generation in smaller applications. LCDS also has other features, such as more in-build service adapters. More highly scalable protocol – HTTP/AMV v RTMP
  • Here’s a summary of the differences between the 2 products. Which one to choose is never an easy decision, and a number of factors are taking into account Buy versus build – will it take more to implement the features yourself? I’d say yes expected users – LCDS scales to 1000s of users per CPU whereas Blaze out of the box is 100s of users per CPU and the features I mentioned on the previous slide – do you need to use any of those
  • Back to Xavier
  • Application sharing between the retailer and the customer Chat between the users Video conference Export customer configuration to PDF through LCDS Store local changes while offline, and commit them when back online What is the application about?????????? Xavier – give overview of application before showing – 2 minutes
  • Xavier – give demo – 5-8 minutes
  • Xavier – 3 minutes
  • Xavier – 3 minutes
  • Are we using FMS? If so, can have a slide on it in technologies used Need Xaviers input once we have code Add diagram of client side architecture Front the glass: -         Air + WiiMote Between the glasses :) -         LCDS + FMS (for the one way visio conferencing) Behind the glass -         LCDS for PDF generation (car quote) -         Spring/Hivernate to store changes (maybe not necessary to store anything actually)
  • Are we using FMS? If so, can have a slide on it in technologies used Need to add voice to client side Some details on application code layout, how it all fits together, package structure, To add an architecture diagram here.
  • Ali– 3 minutes
  • Show how AIR was used in the application – any AIR specific code, what AIR brought to the table Offline – used to store all data, cant show because of single machine being used Encrypted local store – used to store any security information Toast alerts and custom chrome
  • Call out where LCDS is used in solution, what it added, what it would have taken had LCDS not been available Messaging for – chat and screen sharing using data management services Data management for pushing data to client and also synchronization of view Conflict resolution – if 2 users change color at same time, get notified and can programmatically decide what to do Offline support – using data management services, data is automatically stored in SQ lite when user goes offline, no need to write any code Adapter technology – assembler to fetch data Paging data – efficient fetching of large data sets Pdf generation – basic here but can extend using livecycle enterprise suite, offline signature via barcode, scan, start a workflow, add security via digital rights Each of these could be built by hand,and blazeds used, it’s a build versus buy decision Xavier will be going into more details on each of these, showing code examples
  • Better performance than papervision 3D, but not as feature rich – either platform could be used. We won’t be showing code in the deep dive, but can if we have time at the end
  • Wiimote is a bluetooth device, speaking to an activex control Need a description here Wiiflash has an AS3 API We won’t be showing code in the deep dive, but can if we have time at the end
  • Xavier – 3 minutes
  • Xavier to note challenges when building Xavier, can we show more challenges here and split over 2-3 slides?
  • Show how a presentation model is structured. How is it unit-tested? How does it work with DataService? DataModel pattern Xavier – 7-8 mins
  • How does it work
  • Show how a presentation model is structured. How is it unit-tested? How does it work with DataService? DataModel pattern Xavier – 7-8 mins
  • It is data-driven (not request-response paradigm) The user gesture/command pair does fit well here DataModel is responsible to talk to the DataService, and store the data retrieved from it Ability to bind to DataService attributes like commitRequired. How is it reset on logging off?
  • Ali – 1 minutes
  • Xavier and Ali
  • MAX 2008: Build collaborative applications with Flex LCDS and Cairngorm

    1. 1. Delivering Collaborative Applications with AIR and LiveCycle Data Services Alistair McLeod Xavier Agnetti
    2. 2. What we aim to cover in the next 45 minutes… <ul><li>Show how collaborative applications can be built with AIR and LCDS </li></ul><ul><li>Explain the challenges in building such applications </li></ul><ul><li>Provide some hints and tips for building your own collaborative applications </li></ul><ul><li>Show some of the features of Adobe AIR </li></ul><ul><li>Demonstrate the power of Data Management Services </li></ul><ul><li>Show how a Wiimote and speech recognition can be used to control an AIR application </li></ul>
    3. 3. Agenda <ul><li>Collaborative Applications </li></ul><ul><li>BlazeDS and LiveCycle Data Services </li></ul><ul><li>Application Demo </li></ul><ul><li>Building a Collaborative Application </li></ul><ul><li>Deep Dive into Application Code </li></ul><ul><li>Summary and Questions </li></ul>
    4. 4. Collaborative Applications
    5. 5. What do we mean by Collaborative Applications?
    6. 6. BlazeDS and LiveCycle Data Services
    7. 7. BlazeDS Overview <ul><li>Easily connects Flex & AIR applications to existing server logic </li></ul><ul><li>High performance data transfer for more responsive applications </li></ul><ul><li>Server push over standard HTTP </li></ul><ul><li>Full pub/sub messaging that extends existing messaging infrastructure </li></ul><ul><li>Free and open source </li></ul><ul><li>Publication of the Action Message Format (AMF3) binary data protocol specification </li></ul><ul><li>Certified builds, warranty protection and enterprise support subscriptions available </li></ul>BlazeDS is the remoting and HTTP-based messaging technology which Adobe is contributing to the community under LGPL BlazeDS Data Management RPC Services Messaging Service Adapters Data Synchronization Off-line Applications Data Paging Web Service HTTP Service Remote Object Service Publish & Subscribe Collaboration Real Time Data Push Proxy Service Web-tier Compiler Portal Deployment RIA-PDF Generation LiveCycle ColdFusion Hibernate SQL JMS Java Custom
    8. 8. LiveCycle Data Services ES Overview LiveCycle Data Services is a set of Java EE components and APIs used to: <ul><li>Create data-intensive RIAs with less code, less risk, and accelerated time to market due to an innovative client-server programming model </li></ul><ul><li>Integrate RIAs with existing applications, back-end data, and JEE infrastructure </li></ul><ul><li>Easily integrate RIAs with LiveCycle document and process services </li></ul><ul><li>Enable collaboration, offline AIR and real-time data streaming applications to be built in a scalable and reliable manner with robust publish and subscribe messaging </li></ul><ul><li>Generate PDF documents from RIAs that include graphical assets </li></ul>Service Adapters LiveCycle Data Services ES Data Management RPC Services Messaging Data Synchronization Off-line Applications Data Paging Web Service HTTP Service Remote Object Service Publish & Subscribe Collaboration Real Time Data Push Proxy Service Web-tier Compiler Portal Deployment RIA-PDF Generation LiveCycle ColdFusion Hibernate SQL JMS Java Custom
    9. 9. Feature Comparison Feature BlazeDS LiveCycle Data Services ES Java Remoting √ √ Web Proxy √ √ JMS Adapter √ √ AJAX Client Libraries √ √ Administrative Console √ √ Clustered Messaging √ √ Pub/Sub Messaging √ √ Web container-based messaging service (100’s of clients/CPU) √ √ Dedicated messaging service (1000’s of clients/CPU) √ Per-client Quality of Service √ Data Management Service √ Data Paging √ Flex-LiveCycle Integration √ RIA-to-PDF Generation √ Offline Data Synchronization (AIR) √ WSRP/Portal Integration √ SiteMinder Integration √
    10. 10. Application Demo
    11. 11. Application Features
    12. 12. Application Demonstration
    13. 13. Building a Collaborative Application <ul><li>Application Architecture </li></ul><ul><li>Technologies Used </li></ul><ul><li>Challenges </li></ul>
    14. 14. Building a Collaborative Application <ul><li>Application Architecture </li></ul><ul><li>Technologies Used </li></ul><ul><li>Challenges </li></ul>
    15. 15. Application Architecture
    16. 16. Application Structure Microphone Client Layer Adobe Integrated Runtime Adobe Cairngorm Alternativa 3D WiiMote Keyboard Application Layer FMS LCDS DMS Messaging Persistence Layer HSQL DB
    17. 17. Building a Collaborative Application <ul><li>Application Architecture </li></ul><ul><li>Technologies Used </li></ul><ul><li>Challenges </li></ul>
    18. 18. Use of Adobe AIR
    19. 19. Use of LiveCycle Data Services <ul><li>Chat between the retailer and customer </li></ul><ul><li>Data push to retailer application </li></ul><ul><li>Synchronization of views between the retailer and customer </li></ul><ul><li>Conflict resolution </li></ul><ul><li>Store local changes while offline, and commit them when back online </li></ul><ul><li>Adapter architecture </li></ul><ul><li>Paging large data sets </li></ul><ul><li>Generate customer configuration as PDF </li></ul>Service Adapters LiveCycle Data Services ES Data Management RPC Services Messaging Data Synchronization Off-line Applications Data Paging Web Service HTTP Service Remote Object Service Publish & Subscribe Collaboration Real Time Data Push Proxy Service Web-tier Compiler Portal Deployment RIA-PDF Generation LiveCycle ColdFusion Hibernate SQL JMS Java Custom
    20. 20. Use of Flash Media Server <ul><li>Audio and video conferencing </li></ul><ul><li>Very little development effort </li></ul><ul><ul><li>No server side code </li></ul></ul><ul><li>Alternative solution: use CoCoMo </li></ul><ul><ul><li>Hosted service </li></ul></ul><ul><ul><li>Public beta now available </li></ul></ul><ul><ul><li>See other Max sessions for details </li></ul></ul>
    21. 21. Displaying 3D model <ul><li>Straightforward API </li></ul><ul><li>Better performance than PaperVision 3D </li></ul><ul><li>Easier integration with 3DS MAX models </li></ul>
    22. 22. Using the Wii Remote as a Control Device <ul><li>Wiimote </li></ul><ul><li>WiiFlash server </li></ul><ul><li>WiiFlash AS3 API </li></ul>
    23. 23. Speech recognition on AIR <ul><li>Wiimote </li></ul><ul><li>WiiFlash server </li></ul><ul><li>WiiFlash AS3 API </li></ul>
    24. 24. Building a Collaborative Application <ul><li>Application Architecture </li></ul><ul><li>Technologies Used </li></ul><ul><li>Challenges </li></ul>
    25. 25. Challenges in Building Collaborative Applications
    26. 26. Deep Dive into Application Code <ul><li>Presentation Model </li></ul><ul><li>Data Management Services </li></ul><ul><li>Large Data Sets </li></ul><ul><li>Message Broker </li></ul>
    27. 27. Deep Dive into Application Code <ul><li>Presentation Model </li></ul><ul><li>Data Management Services </li></ul><ul><li>Large Data Sets </li></ul><ul><li>Message Broker </li></ul>
    28. 28. What is a Presentation Model? <ul><li>A class that contains the state and logic required by a view. </li></ul><ul><li>The general purpose of the Presentation Model is to separate concerns </li></ul><ul><li>The view is responsible for rendering the presentation model </li></ul><ul><li>The view hence holds a reference the presentation model </li></ul><ul><li>The presentation model does not know anything about its view </li></ul><ul><li>It can then be unit-tested in isolation </li></ul>
    29. 29. Cairngorm and the Presentation Model Domain Layer Integration Tier View Layer Presentation Layer Arthur [email_address] Ford- ford@perfect.com Zaphod – zaphod@email.com Arthur – arthur@dent.com Tricia– tricia@mcmillan.com Marvin = marvin@email.com Add a Contact Contact list Add a Contact Presentation Model + contacts : ContactDomain + addContact (name, email) CMD CMD ContactVO model.addContact (firstname, email) ContactVO ContactsDomain + contacts : List CMD Business Delegate ServiceLocator Cairngorm Event Service Service Service Service Service Service Service FrantController
    30. 30. Cairngorm and Presentation Models - Differences
    31. 31. Deep Dive into Application Code <ul><li>Presentation Model </li></ul><ul><li>Data Management Services </li></ul><ul><li>Large Data Sets </li></ul><ul><li>Message Broker </li></ul>
    32. 32. Data Management Services (DMS) <ul><li>DMS is data-driven (not request-response paradigm) </li></ul><ul><ul><li>The user gesture/command pair does fit well here </li></ul></ul><ul><ul><li>DataModel is responsible to talk to the DataService, and store the data retrieved from it </li></ul></ul><ul><ul><li>Ability to bind to DataService attributes like commitRequired. </li></ul></ul>
    33. 33. Cairngorm and Data Management Services Domain Layer Integration Tier View Layer Presentation Layer model.addContact (firstname, email) Data Model + contacts : List + addItem( item ) Presentation Model + contacts : ContactDataModel + addContact (name, email) Data Model + contacts : List + addItem( item ) Presentation Model + contacts : ContactDataModel + addContact (name, email) Arthur [email_address] Ford- ford@perfect.com Zaphod – zaphod@email.com Arthur – arthur@dent.com Tricia– tricia@mcmillan.com Marvin = marvin@email.com Add a Contact Contact list Add a Contact ServiceLocator Client DataServices Service Service Ford- ford@perfect.com Zaphod – zaphod@email.com Arthur – arthur@dent.com Tricia– tricia@mcmillan.com Marvin = marvin@email.com Add a Contact Contact list Add a Contact ServiceLocator Client DataServices Service Service Remote DataServices Service Service Ford- ford@perfect.com Zaphod – zaphod@email.com Tricia– tricia@mcmillan.com Marvin = marvin@email.com Add a Contact Contact list Add a Contact Arthur [email_address] Ford- ford@perfect.com Zaphod – zaphod@email.com Tricia– tricia@mcmillan.com Marvin = marvin@email.com Add a Contact Contact list Add a Contact
    34. 34. Deep Dive into Application Code <ul><li>Presentation Model </li></ul><ul><li>Data Management Services </li></ul><ul><li>Large Data Sets </li></ul><ul><li>Message Broker </li></ul>
    35. 35. How to deal with large dataset?
    36. 36. Deep Dive into Application Code <ul><li>Presentation Model </li></ul><ul><li>Data Management Services </li></ul><ul><li>Large Data Sets </li></ul><ul><li>Message Broker </li></ul>
    37. 37. Message Broker <ul><li>Listeners are registered in the Broker singleton </li></ul><ul><li>Whenever a listener sends a message, the broker calls its producer and waits for a response in the consumer. </li></ul><ul><li>Then every listener is notified that a message is ready to be consumed </li></ul>Local Producer Local Consumer Messaging Destination Listener / Producer Message Broker Listener Listener Listener
    38. 38. Miscellaneous tips <ul><li>Set different publisher names in order to launch several instances of the same AIR application </li></ul><ul><li>MessagePerformanceUtils built-in LCDS 2.6 helps optimizing network round-trip for your application </li></ul><ul><li>In Flex, in services-config.xml, the tokens are replaced by the app server </li></ul><ul><li><endpoint url= &quot;http://{server.name}:{server.port}/{context.root} </li></ul><ul><li>In AIR, either </li></ul><ul><ul><li>you replace it directly by </li></ul></ul><ul><li><endpoint url= &quot;http://myserver:8080/myContextRoot </li></ul><ul><ul><li>Or you create new channels set in the client code, loading the endpoint URLs from a local file </li></ul></ul>
    39. 39. Summary and Questions
    40. 40. Summary <ul><li>Show how collaborative applications can be built with AIR and LCDS </li></ul><ul><li>Explain the challenges in building such applications </li></ul><ul><li>Provide some hints and tips for building your own collaborative applications </li></ul><ul><li>Show some of the features of Adobe AIR </li></ul><ul><li>Demonstrate the power of Data Management Services </li></ul><ul><li>Show how a Wiimote and speech recognition can be used to control an AIR application </li></ul>
    41. 41. Any Questions Questions? (simple please)

    ×