AD301: Introducing the Composite Application Container Framework - Lotusphere 2009

Embed Size (px)

Citation preview

1. Introducing the Composite ApplicationContainer Framework Bob Balfe | Senior Technical Staff Member Composite Applications |IBMAD301 Brian O'Gorman | Architect Composite Application Editor | IBM 2. Agenda Introduction to Containers Landmarks 101 Container Tooling The Browser Container The Notes Containers The Symphony Spreadsheet Container Building your own containers What's next? Q&A 3. Agenda Introduction to Containers Landmarks 101 Container Tooling The Browser Container The Notes Containers The Symphony Spreadsheet Container Building your own containers What's next? Q&A 4. Composite Application Background A role based application framework where decoupled componentscan communicate through declarative connections (wires) Primarily used to integrate heterogeneous technologies Lotus Notes to SWT, Web to Lotus Notes, SWT to ..., etc Target audience for application assembly is technically savvy linesof business users Was great on paper :) Provide a clear and consistent component model where allcomponents can communicate with well defined properties(outputs) and actions (inputs) The primary value add is using existing resources (applications) innew context and sharing data from those applications with eachother 5. Introduction to Containers Why a new component type? WSDL is very hard to understand Current component model does not work well for complexcontainers:Applications like web applications with more than one page or formHost based applications with many screensSpreadsheets with more than one sheet Creating new components is cumbersomeMust create new Java code, new WSDL, deploy feature and plugin 6. What is really wanted/needed The ability to define new components with no programming and noWSDL Have new components created from basic XML ie. extension points These new components need to be 100% compatible with existingcomponents Let low level assemblers create new components using plugin.xml Let higher level assemblers create new components with CAE. 7. What is a container? A container is a new type of view part that can display not only anapplication but applications with many pages (states) and pieces toit. For instance, we have a web browser container that exposed generalactions and properties. Setting the URL Setting the HTML text Publishing the URL Etc. These containers can define properties and actions at differentlandmarks within the contained content. For instance, define actions and properties across many pages in a webapplication 8. Agenda Introduction to Containers Landmarks 101 Container Tooling The Browser Container The Notes Containers The Symphony Spreadsheet Container Building your own containers What's next? Q&A 9. What is a landmark and a landmark identifier? The term landmark is taken from navigation. Think of what landmarks you know that tell where you are at For instance The statue of Liberty tells you are in New York City The landmarks here are the same concept They tell the container it is in a particular place in the containingapplication. 10. What is a landmark and a landmark identifier?(cont) A container definition states what its landmark identifier is. The landmark identifier tells the container what reference to use to identifydifferent states (or places) of the component. These states can then have actions applied to them by referencing the valuereturned from the container using the landmark identifier the returnedvalue is the landmark. The landmark is the value returned by the container using thelandmark identifier All landmark values are basic strings Regular expressions and wild-cards are also supported http://www.ibm.com/* 11. What is a landmark and a landmark identifier?(cont) A container definition states what its landmark identifier is. The landmark identifier tells the container what reference to use to identifydifferent states (or places) of the component. These states can then have actions applied to them by referencing the valuereturned from the container using the landmark identifier the returnedvalue is the landmark. The landmark is the value returned by the container using thelandmark identifier All landmark values are basic strings Regular expressions are also supportedLandmark 12. Property Name spaces for common containers The new framework introduces the concept of shared property spaces This enables multiple instances of a container type to share the valuesacross them You can optionally set the namespace for a specific component using theadvanced property - com.ibm.rcp.composite.container.namespace This name space will be used to store the and retrieve the property for the specificcomponent. By default the name space is the perspective ID, so all same types of componentsshare properties on a given screen 13. Agenda Introduction to Containers Landmarks 101 Container Tooling The Browser Container The Notes Containers The Symphony Spreadsheet Container Building your own containers What's next? Q&A 14. Container Tooling Generic Landmark Editor provider by Composite Application Editor Define landmarks & operations Landmark, operation, and field suggestions provided by container 15. Container Tooling Import / Export landmark definitionsExports the extension xml for the landmarks Automatically populated with pre-defined landmarks & operations from plugin.xmlConfigure and distribute a container with some baselandmarksApplication assemblers can extend this e.g. For differentregions 16. Agenda Introduction to Containers Landmarks 101 Container Tooling The Browser Container The Notes Containers The Symphony Spreadsheet Container Building your own containers What's next? Q&A 17. The Browser Container Included in Lotus Expeditor 6.2 & Lotus Notes 8.5 Easy component creation for complex web browser applications For instance: We have a web application where there are many pages and in those pagesare different forms that can be filled out.Page 1Page 2Page 3Expense FormTravel FormRequisition Form Each form is on a different page within the overall web application Lets say each form has a Name field on each page. We want to expose that Name field to be set from other components 18. The Browser Container There is a problem though: On Page 1 the field Name has the HTML name attribute set to nameField On Page 2 the field Name has the HTML name attribute set to Requester And on Page 3, it is not even a field, it is highlighted text in bold What we want to do is expose Name as a field that can be set by orqueried by other components (publish or receive) We can handle this by specifying the landmark identifier as the URLor the Title of the page This makes the landmark results unique so we can define how Name ishandled on the three different pages. 19. The Browser Container There is a problem though: On Page 1 the field Name has the HTML name attribute set to nameField On Page 2 the field Name has the HTML name attribute set to Requester And on Page 3, it is not even a field, it is highlighted text in bold What we want to do is expose Name as a field that can be set by orLandmarksqueried by other components (publish or receive) We can handle this by specifying the landmark identifier as the URLor the Title of the page This makes the landmark results unique so we can define how Name ishandled on the three different pages.Name Properties 20. The Browser Container sample extension xml 21. Demonstration time The Browser Container! 22. Agenda Introduction to Containers Landmarks 101 Container Tooling The Browser Container The Notes Containers The Symphony Spreadsheet Container Building your own containers What's next? Q&A 23. The Notes Containers Web Delivery Notes View Container & PIM View Container Extract data from Notes views as properties, right in CAENO WSDL!No database modifications Each property is published individually upon selection Multiple selections are delimited. 00 by defaultDelimiter can be overridden Hide the complexity of Landmarks and the underlying configuration 24. The Notes Containers Notes View Container Based on the re-parent technology Can contain any Notes View Formula is supported to extract information from view Uses Java back-end classes to access the data. Document is opened. 25. The Notes Containers Notes View Container Inline landmark configuration Define new properties to publish, right in the container in CAEType/Select PropertyNameField Type(only formula) Formula CreatePropertyCreate new wireSaveConfiguration 26. The Notes Containers PIM View Container Based on Notes Java views (CSI Views) Supports both Formula and Columns to extract data Formula uses Java back-end classes document is opened Columns use new Java view framework document not opened, data exists Supports 5 default configurations Inbox, Calendar, Contacts, Todo, Recent Collaborations 27. The Notes Containers PIM View Container Selecting a configuration generates a new landmark configuration i.e. Default set of properties to extract & publish 28. The Notes Containers PIM View Container Inline landmark configuration Define new properties to publish, right in the container in CAEType/Select PropertyNameField Type(formula/column) Formula CreatePropertyCreate new wireSaveConfiguration 29. Demonstration time The Notes Container! 30. Agenda Introduction to Containers Landmarks 101 Container Tooling The Browser Container The Notes Containers The Symphony Spreadsheet Container Building your own containers What's next? Q&A 31. The Symphony Spreadsheet Container Extra information from & publish information to spreadsheets Support cells and cell ranges (and named ranges)Publishing data froma web application tospreadsheet topopulate a chart! 32. The Symphony Spreadsheet Container Inline landmark configurationType/SelectProperty NameCellRangeCreateActionCreate new wireSaveConfigurationActionPublish/Receive Display Fields 33. ?? Demonstration time The Symphony Spreadsheet Container! ?? 34. Agenda Introduction to Containers Landmarks 101 Container Tooling The Browser Container The Notes Containers The Symphony Spreadsheet Container Building your own containers What's next? Q&A 35. Building your own containers You can build your own container using our new container API's Your container would extend our base abstract class com.ibm.rcp.composite.container.core.AppContainer The container is initialized in the createPartControl method container = new MyContainer(this); The container can tell the core what events it supports for landmarks: Override getAvailableEvents(), example: public Map getAvailableEvents() { Map map = new HashMap(); map.put("selection", "selection"); return map; } 36. Building your own containers (cont) Even the actions can be completely custom for your container Make them make sense for your container For instance, if you only support a Publish action then you could do this: public Map getSuggestedActions() { Map map = new HashMap(); map.put(AppContainer.PUBLISH, AppContainer.PUBLISH); return map; } 37. Building your own containers (cont) You can publish and receive data easily No Property Broker API's are needed You would implement the following two methods: public void publish(String name, String field, LandmarkEvent event,Object context) public void receive(String name, String field, LandmarkEvent event,Object context) You would then call the core containers publishProperty() method to publishthe data to the broker publishProperty(name, value.toString()); 38. Building your own containers (cont) Each area of the composite application editor can be customized byyour container Components can add their own tabs for editing configuration 39. Building your own containers (cont) Each area of the composite application editor can be customized byyour container Components can add their own tabs for editing configuration 40. Agenda Introduction to Containers Landmarks 101 Container Tooling The Browser Container The Notes Containers The Symphony Spreadsheet Container Building your own containers What's next? Q&A 41. What's next? Lotus Expeditor 6.2.1 Symphony Spreadsheet Container Host On Demand (HOD) Container Lotus Notes 8.5.1 (above plus...) Notes View Container PIM View Container Notes Document Container Building your own Ability to provide your own Landmark Editor tab in CAE Ability to provide your own inline landmark configuration UI 42. Agenda Introduction to Containers Landmarks 101 Container Tooling The Browser Container The Notes Containers The Symphony Spreadsheet Container Building your own containers What's next? Q&A 43. Further resources IBM Composite Applications wikihttp://www-10.lotus.com/ldd/compappwiki.nsf Lotus Expeditor Infocenterhttp://publib.boulder.ibm.com/infocenter/ledoc/v6r2 Bob's Bloghttp://blog.balfes.net IBM Lotus developerWorkshttp://www.ibm.com/developerworks/lotus IBM Lotus Application Development Overviewhttp://www.ibm.com/software/lotus/appdev/ Questions?Thank you for joining us, and please remember to fill out the feedback forms.For more demos and information come see us in the Meet The Developers lab. 44. Legal disclaimer Please delete all instructions (text in red) and insert this information at the end ofexternal publications. IBM Corporation 2008. All Rights Reserved.The information contained in this publication is provided for informational purposes only. While efforts were made to verify the completeness and accuracy of the information contained in this publication, it isprovided AS IS without warranty of any kind, express or implied. In addition, this information is based on IBMs current product plans and strategy, which are subject to change by IBM without notice. IBM shallnot be responsible for any damages arising out of the use of, or otherwise related to, this publication or any other materials. Nothing contained in this publication is intended to, nor shall have the effect of,creating any warranties or representations from IBM or its suppliers or licensors, or altering the terms and conditions of the applicable license agreement governing the use of IBM software.References in this presentation to IBM products, programs, or services do not imply that they will be available in all countries in which IBM operates. Product release dates and/or capabilities referenced inthis presentation may change at any time at IBMs sole discretion based on market opportunities or other factors, and are not intended to be a commitment to future product or feature availability in any way.Nothing contained in these materials is intended to, nor shall have the effect of, stating or implying that any activities undertaken by you will result in any specific sales, revenue growth or other results.If the text contains performance statistics or references to benchmarks, insert the following language; otherwise delete:Performance is based on measurements and projections using standard IBM benchmarks in a controlled environment. The actual throughput or performance that any user will experience will vary dependingupon many factors, including considerations such as the amount of multiprogramming in the user's job stream, the I/O configuration, the storage configuration, and the workload processed. Therefore, noassurance can be given that an individual user will achieve results similar to those stated here.If the text includes any customer examples, please confirm we have prior written approval from such customer and insert the following language; otherwise delete:All customer examples described are presented as illustrations of how those customers have used IBM products and the results they may have achieved. Actual environmental costs and performancecharacteristics may vary by customer.Please review text for proper trademark attribution of IBM products. At first use, each product name must be the full name and include appropriate trademark symbols (e.g., IBM Lotus SametimeUnyte). Subsequent references can drop IBM but should include the proper branding (e.g., Lotus Sametime Gateway, or WebSphere Application Server). Please refer tohttp://www.ibm.com/legal/copytrade.shtml for guidance on which trademarks require the or symbol. Do not use abbreviations for IBM product names in your presentation. All product names must beused as adjectives rather than nouns. Please list all of the trademarks that you use in your presentation as follows; delete any not included in your presentation.IBM, the IBM logo, Lotus, Lotus Notes, Notes, Domino, Quickr, Sametime, WebSphere, UC2, PartnerWorld and Lotusphere are trademarks of International Business Machines Corporation in the UnitedStates, other countries, or both. Unyte is a trademark of WebDialogs, Inc., in the United States, other countries, or both.If you reference Adobe in the text, please mark the first use and include the following; otherwise delete:Adobe, the Adobe logo, PostScript, and the PostScript logo are either registered trademarks or trademarks of Adobe Systems Incorporated in the United States, and/or other countries.If you reference Java in the text, please mark the first use and include the following; otherwise delete:Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.If you reference Microsoft and/or Windows in the text, please mark the first use and include the following, as applicable; otherwise delete:Microsoft and Windows are trademarks of Microsoft Corporation in the United States, other countries, or both.If you reference Intel and/or any of the following Intel products in the text, please mark the first use and include those that you use as follows; otherwise delete:Intel, Intel Centrino, Celeron, Intel Xeon, Intel SpeedStep, Itanium, and Pentium are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States and other countries.If you reference UNIX in the text, please mark the first use and include the following; otherwise delete:UNIX is a registered trademark of The Open Group in the United States and other countries.If you reference Linux in your presentation, please mark the first use and include the following; otherwise delete:Linux is a registered trademark of Linus Torvalds in the United States, other countries, or both.Other company, product, or service names may be trademarks or service marks of others.If the text/graphics include screenshots, no actual IBM employee names may be used (even your own), if your screenshots include fictitious company names (e.g., Renovations, Zeta Bank, Acme) pleaseupdate and insert the following; otherwise delete:All references to [insert fictitious company name] refer to a fictitious company and are used for illustration purposes only.