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
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
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?