Upload
trinhcong
View
215
Download
3
Embed Size (px)
Citation preview
®
© 2009 IBM Corporation
Working smarter with collaborative applications built on IBM Lotus Notes and Domino 8.5
Part 2: Notes Plug-in Development
July 1st, 2009
Michael MastersonProduct ManagerLotus App Dev
Pierre CarlsonSr. Software EngineerExpeditor Development
IBM Software Group | Lotus software
IBM Software Group | Lotus software
2
Agenda
Application Development on Lotus Notes
– Platform overview
– Widgets, LiveText, and Plug-ins
Java plug-in development
– Eclipse plug-in fundamentals
– Understanding the Development Environment
– Building a Plug-in
Packaging and Deployment
Q & A
Resources
IBM Software Group | Lotus software
IBM Software Group | Lotus software
3
Agenda
Application Development on Lotus Notes
– Platform overview
– Widgets, LiveText, and Plug-ins
Java plug-in development
– Eclipse plug-in fundamentals
– Understanding the Development Environment
– Building a Plug-in
Packaging and Deployment
Q & A
Resources
IBM Software Group | Lotus software
IBM Software Group | Lotus software
4
Investing in our strengths and leading new trends
Domino Development: investing in our base
– XPages, Domino Designer, JavaScript + LotusScript
– “I deploy it on Domino faster than I can architect it in Java or C”
Situational Application Development: user-driven innovation
– Widgets let users enrich their own workspace, LiveText creates insight from a business process into unstructured data and resources
– “In real-time I create solutions to solve my business problems”
Solution Development: optimizing workflow
– Composite Applications provide a building block paradigm, where loosely coupled component, widgets, and heterogenous technologies seamlessly interact together
– “We reduced our call handling time from 5 mins to 60 seconds”
IBM Software Group | Lotus software
IBM Software Group | Lotus software
5
Leading platform for client applicationsWith critical features integrated-in and not bolted-on
3-tier architecture integral to Lotus Notes and Domino 8.5
– Data model defined and updated quickly
• Access multiple NSF data sources or use external enterprise data stores• Relational database available in the client
– End-user view implemented by technology of choice
• Traditional Forms and Views, Java SWT and Swing, XPages, Portlets, Native, and more
– App control logic written in LotusScript, Java, @Formula
• Wired together with actions and properties
Core value to for end users, developers, and administrators
– Improve user efficiency and eliminate silos of information
– Unleash existing IT investments and augment with new capabilities
– Rapidly build the front end of enterprise Service Oriented Architecture
– Preserve robust security, deployment, and existing server infrastructure
IBM Software Group | Lotus software
IBM Software Group | Lotus software
6
Seamless integration into the user experience
Widgets and plug-ins
extend the Sidebar
Launch applications in a
new tab
Open menu integrates app
launch
LiveText recognizes text in documents and enables
“click to action”
Custom Toolbar enables icon
access across applications
Extend the default Search
domains
IBM Software Group | Lotus software
IBM Software Group | Lotus software
7
Widgets and Live Text
What do Notes Widgets do?
– Take the most common things our customers want to do in in application development and make it as easy as 3 clicks
– Make the 10% of things that 90% of the people need, really simple
– Wizard driven and without any coding
What does LiveText do?
– Use data that can recognized in a contextual manner
– Like a hyperlink, but much more powerful and dynamically generated
– Launch a web page with pre-populated data
– Initiate a search in a Notes application
How do I find them?
– Use any existing Google Gadget
– Domino Widget catalog provides drag-to-install into My Widgets sidebar
IBM Software Group | Lotus software
IBM Software Group | Lotus software
8
Widgets and Live Text
For the end user
– Customize Notes for personal productivity
– Streamline access to applications
For the administrator
– Provision a set of widgets based on user policies
– Restrict or enable end-user changes
– Leverage Widget deployment to install client Java plug-ins
Enhancements coming in 8.5.1
– My Widgets sidebar
• Simplified list view in addition to thumbnails
• Search and Categorize widgets
IBM Software Group | Lotus software
IBM Software Group | Lotus software
9
Demo of Widgets and Live Text
Agenda
Application Development on Lotus Notes
– Platform overview
– Widgets, LiveText, and Plug-ins
Java plug-in development
– Eclipse plug-in fundamentals
– Understanding the Development Environment
– Building a Plug-in
Packaging and Deployment
Q & A
Resources
Java Plug-ins in Notes Expeditor framework in Notes is a powerful programming
environment Programmatically extend the Notes user experience
– Extension points define areas and APIs that may be “extended” Customize menus, toolbars, and build custom sidebar mini-apps
– Integrate capabilities never before possible All without having to modify Notes templates
– Avoids costly template migrations– Plug-ins can even be deployed with a Notes Widget
Expeditor Toolkit for Java development Installs into the Eclipse IDE Provides workspace and project configuration One-click launch of Notes in debug mode
Enhancements coming in 8.5.1 Java APIs for the Notes Documents
Lotus Clients – Built on Eclipse
NotesSametime
Expeditor
Symphony
industry knowledge and experience
ecosystem of partners
open and extensible
Applications (ISV, Customer)
Collaborative Services
Integratedapplications
Portal Browser Desktop Mobile
Multiplatformsupport
ScalabilitySecurity
Eclipse Architecture
Workbench
JFace
SWT
Core ExtensionPoint Framework
Service Framework
Rich Client Platform
Plug-in
Plug-in
Extension Pt.
Plug-in
ExtensionPoint
ExtensionPoint
ExtensionPoint
A software component in
Eclipse
Extension Point declares contractto extend plug-in
functionality
Extension code extends this functionality
RCP allows you to build GUI apps on
multiple OS
SWT provides thinuniform UI API across multiple OS that calls OS UI API for native
look and feel
JFace provides components to make it
easier to write a GUI e.g. wizards, preference pages,
actions, dialogs
Workbench is desktop UI and customizable
Service Framework supports registration
and lifecycle management of
plug-ins
Windows® Vista Windows® XP Pro/Home Windows® XP Tablet Windows® 2003 Server RedHat RHEL WS SLED & Ubuntu
Java TM Virtual Machine (IBM J9 Technology for DEE or JavaSE 6.0)
Java TM Class Library (DEE or Java TM SE 6.0)
OSGi R4
MQTT
MicroBroker
MQeOSGi
ServicesEMFDB
LifecycleXSD SDO EMF
XML Parsing
JDBCDB2e/Cloudscape
Portlet Container(JSR 168)
Web ServicesSecurity (OASIS)
Web ServicesClient (JSR101)
Keystore Accounts
Web ServicesProvider WSRF WSRP JAAS SSO
JMS JNDI JWLWeb
ContainerWeb Services
Client (JSR172)OSGi
Event AdminPropertyBroker
NetworkAwareness
SyncML
Enterprise Management
Agent
ISync
Sync Manager
ManagedSettings
Workbench UIPersonalities
UI Mobile Extensions Toolbox Application LauncherPreference
PagesApplication Manager
Web ApplicationPerspective
EmbeddedBrowser
Rich Client Perspective
Rich Text Editor Spell CheckComposite Application
InfrastructurePortlet Viewer
Enterprise / ISV Applications
Expeditor Extensions
SupportedClients
Eclipse RCP 3.4
Desktop 6.2
JSF
Eclipse Core Extension Point Framework (Eclipse 3.4)
JFace SWT Eclipse UI Extensions Help System Draw2D GEF Provisioning
Demo Inventory Application in Lotus Notes
Agenda
Application Development on Lotus Notes
– Platform overview
– Widgets, LiveText, and Plug-ins
Java plug-in development
– Eclipse plug-in fundamentals
– Understanding the Development Environment
– Building a Plug-in
Packaging and Deployment
Q & A
Resources
Developing Java Plug-ins: The Basic Steps1 Install target client runtime
2 Install Lotus Expeditor 6.2 Toolkit into Integrated Development Environment (IDE)
3 Start IDE
4 Select Test Environment – Point to target client runtime
5 Create Client Services project
6 Develop code for project
7 Test & debug project
8 Package project
Lotus Expeditor Toolkit Provides a complete, integrated set of tools that allows you to
develop, debug, test, package and deploy Java plug-ins
RationalApplicationDeveloper
7.5
Eclipse 3.4
WTP* 3.0
Integrated Development Environment (IDE)
RationalSoftwareArchitect
7.5
* WTP = Eclipse Web Tools Platform
Eclipse Feature
optional
optionalLotus
ExpeditorToolkit 6.2
Microsoft WinXP SP2 & Vista SP1 SLED 10 FP2RedHat Linux 5.2
optional
Installing Lotus Expeditor Toolkit into Eclipse or RAD1 Download and unzip Lotus Expeditor Toolkit update site
2 Install Eclipse 3.4 + WTP 3.0 IDE or Rational Application Developer 7.5
3 Start IDE
4 Install Lotus Expeditor Toolkit into IDE via Update Managera Select Help > Software Updatesb Select Available Software tab > Add Site... > Local... > type path to toolkit update
site > OK > OKc Check Lotus Expeditor Toolkit > Install ... > Next > Select “I accept the terms in the
license agreements” > Finishd In Software Updates menu, select Yes to restart IDE
Configuring Lotus Expeditor Toolkit1 Start IDE
2 Select Test Environment Symphony Lotus Sametime Lotus Expeditor for Desktop Lotus Notes
3 Specify Target Location Point at local client runtime
4 Press OK
Result - Toolkit automatically configures Java buildpath & launch configuration in IDE to improve edit –compile – debug cycle when building Java plug-ins!
Demo Configure the toolkit
1 minute
Creating a Client Services Project File > New > Project...
> Client Services
Select Client Services Project for Eclipse Applications
Select Client Services Web Project for Web Applications
Select Client Services Portlet Project for Portlets
Select Convert Project to convert existing projects
Demo Create a sample project using a template
1 minute
Testing & Debugging Java Plug-ins1 Select Run > Run
Configurations... to test
Select Run > Debug Configurations... to debug
2 Right-click Client Services & click New
3 Specify Name & launch info
4 Click Apply & Run to testClick Apply & Debug to debug
5 IDE launches Test Environment
6 Test & debug your plug-ins!
Demo Create a launch configuration and run the sample project
1 minutes
Tour of a project Plug-ins are the base functional unit (declarations + code) of
software
Plug-ins define “extension points” to which other plug-ins can contribute (e.g., menu items, services)
Plug-ins can define extension points to allow other plug-ins to extend their functionality
Eclipse plug-in extension points are documented on eclipse.org
Lotus plug-in extension points for each client platform are documented in corresponding application developer guides
Plug-in = MANIFEST.MF (dependencies) + plugin.xml (extensions) + Java code
Demo Review the parts of a project in the IDE
Rich Client Sample
Plug-in perspective
Package Explorer
Project Source folder Plug-in Dependencies CPC META-INF/Manifest.MF plugin.xml build.properties plugin.properties
Agenda
Application Development on Lotus Notes
– Platform overview
– Widgets, LiveText, and Plug-ins
Java plug-in development
– Eclipse plug-in fundamentals
– Understanding the Development Environment
– Building a Plug-in
Packaging and Deployment
Q & A
Resources
29
User Interface Organization Title bar
Displays program title and icon
Menu bar Contains set of actions provided by either
default workbench or by other applications
Banner bar Optionally display a graphic and
application name
Launcher (open) Lists running applications, each as an icon,
from which users select applications
Main data area Primary data area, contains perspectives
and views for an application
Sidebar A view that displays vertically at the side
of workbench window
Toolbar / Coolbar Optionally displays icons for available
actions
Status bar Used by an application to display its status
Client Services Lotus Expeditor provides powerful client services that you can use
to build your Java plug-ins
Eclipse Rich Client Platform – Develop GUI with native look-and-feel SWT, JFace
Web – Build browser-based web applications on client JavaEE: Servlets, JSP, JSF, JSTL Apache Struts
Portlet – Develop portlet-based applications on client JSR 168 portlets
Database – Read/write relational data stored in local, secure client db JDBC + Local JDBC Provider (Derby or DB2e) Database sync between local and enterprise database (optional)
Client Services (cont.) Messaging – Perform secure, transactional messaging with MQ
JMS + Local JMS Provider (micro broker or MQe) Point-to-point and publish-subscribe messaging Peer-to-peer and MQ communications
Web Services – Access services and data in the 'Net and Enterprise Apache Axis (JSR 101) – Full web services Mobile (JSR 172) – Light weight, designed for mobile devices
Composite Application – Assemble independently-developed software components for critical business operations into an application Data entered by user in one component triggers action(s) in other component(s) Define CA interfaces for your components to enable others to connect via CAE
Important! The client services available for your Java plug-ins varies based on the Lotus client platform
Notes Demos Basic sidebar (Side note)
3 extension points - rcp view and actions
RCP Sample 7 extension points – perspective, launcher, action sets, associations, etc.
Reuse Swing example Display an existing swing panel in side bar – done in real time
Browser sample Manipulate the DOM of a web application from a plug-in
Swing demo steps Import the SimpleTextEditor sample
Run sample as Java application
Convert to client services project (or plugin project) Add Eclipse Rich Client Platform User Interface Components Generates the required plug-in artifacts Add .qualifier to version
Create a view (extends ViewPart) Add code for bridge Change visibility on getJContentPane
Add Extension points View Extension ShelfView extension
Agenda
Application Development on Lotus Notes
– Platform overview
– Widgets, LiveText, and Plug-ins
Java plug-in development
– Eclipse plug-in fundamentals
– Understanding the Development Environment
– Building a Plug-in
Packaging and Deployment
Q & A
Resources
Packaging Features
Top level project for features Package plugins and fragments into an installable unit feature.xml
Update site Group features into a location that site.xml describes contents of an update site
Demo Feature project Update site project Build process
Deploying Hosting update sites (primary for Notes)
HTTP server (or file server) NSF based
– ACLs, replication, and all the other Notes database features
Deploying URL based deployment via a widget
– User can drop and drop into sidebar– Can be pushed via policy
“Demand” loaded via Composite Applications– Pulled and installed when Application is opened
Install or update of plug-ins requires a restart of the Notes client
Agenda
Application Development on Lotus Notes
– Platform overview
– Widgets, LiveText, and Plug-ins
Java plug-in development
– Eclipse plug-in fundamentals
– Understanding the Development Environment
– Building a Plug-in
Packaging and Deployment
Q & A
Resources
Q & A
Agenda
Application Development on Lotus Notes
– Platform overview
– Widgets, LiveText, and Plug-ins
Java plug-in development
– Eclipse plug-in fundamentals
– Understanding the Development Environment
– Building a Plug-in
Packaging and Deployment
Q & A
Resources
Getting Started Eclipse 3.4 + WTP 3.0 - http://www.eclipse.org/
Eclipse learning resources - http://www.eclipse.org/users/
Lotus Expeditor 6.2 Toolkit - http://www.ibm.com/developerworks/lotus/downloads/toolkits.html
Lotus Expeditor developerWorks - http://www.ibm.com/developerworks/lotus/products/expeditor/
Symphony 1.2 SDK - http://symphony.lotus.com/software/lotus/symphony/developers.nsf/home
Sametime 8.0 SDK - http://www.ibm.com/developerworks/lotus/downloads/toolkits.html
Rational Application Developer - http://www.ibm.com/developerworks/downloads/r/rad/
Developer Resources Expeditor Wiki
http://www-10.lotus.com/ldd/lewiki.nsf
Expeditor 6.2 Info center (transitioning to wiki in 2009) http://publib.boulder.ibm.com/infocenter/ledoc/v6r2/index.jsp
Composite Applications Wiki http://www-10.lotus.com/ldd/compappwiki.nsf
IBM Lotus developerWorks http://www.ibm.com/developerworks/lotus
IBM Lotus Application Development Overview http://www.ibm.com/software/lotus/appdev/
Legal disclaimer © 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 is provided AS IS without warranty of any kind, express or implied. In addition, this information is based on IBM’s current product plans and strategy, which are subject to change by IBM without notice. IBM shall not 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 in this presentation may change at any time at IBM’s 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.
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 depending upon 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, no assurance can be given that an individual user will achieve results similar to those stated here.
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 performance characteristics may vary by customer.
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 United States, other countries, or both. Unyte is a trademark of WebDialogs, Inc., in the United States, other countries, or both.
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.
Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.
Microsoft and Windows are trademarks of Microsoft Corporation in the United States, other countries, or both.
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.
UNIX is a registered trademark of The Open Group in the United States and other countries.
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.
Backup
Why Eclipse matters
Eclipse
Technology Ecosystem
RTRCP
Tools
Committers932 from 75+ organizations
Solutionproviders
Users
190 Members22 Strategic Members
1 Million+ downloads per month
http://www.eclipse.org/org/foundation/membersminutes/20081117EuropeanMembersMeeting/MeetingAgendaNov17.php
45
190 members22 Strategic Members
Members of Eclipse
46