Here is an article from Pierre Carlson that describes where to get the XPD toolkit and how to set it up to be used with Notes 8.
[update of this entry][Read More]
Here is an article from Pierre Carlson that describes where to get the XPD toolkit and how to set it up to be used with Notes 8.
[update of this entry][Read More]
I think there are different things being discussed in the blog entry from Bob yesterday that we need to separate.
In Notes 8.0 we have a so called built in property (http://www.ibm.com/developerworks/blogs/page/CompApps?entry=built_in_actions_provided_by). This built in property publishes the Notes URL of the currently selected Notes document.
In 8.0 there is also a built in action (http://www.ibm.com/developerworks/blogs/page/CompApps?entry=built_in_property_to_publish) that allows filtering the current UI view by a key.
I did these two features in 8.0 to show the direction I'd like to take. There are many more things we could out of the box but as always we had to stage it in.
In 8.0.1 my team added one more built in action which is an action to perform a full text search on a database with a certain key.
The major extension in 8.0.1 is that you can use to one built in property and the two built in actions WITHOUT chaning the already deployed databases. You don't have to put a WSDL in there anymore.
HOWEVER the testing couldn't be contained for this feature. We tried to be creative and are still trying to get it officially in 8.0.1. Pls speak up if these features are critical for 8.0.1 (I think they are) since it would make it easier for us to get them in.
Update after initial blog entry (10/31 7:30 AM EST): I just learned that we got the ok in the meantime to put this feature in 8.0.1. Great !
The JSON discussion is pretty separate to the built in property and built in actions. It is a way to handle complex datatypes even though our system only supports single value strings. At this point it is only a design recommendation for component developers. There is no more support planned for 8.0.1 but we are looking in providing more in 8.5 (e.g. a LotusScript JSON API).
Component developers can use JSON to handle their own complex datatypes. What Bob wrote yesterday is an extension of this where we could just take an object that represents a Notes view entry and pass it to other components in a JSON serialized form. That is a convenience functionality so that component developers don't have to do this for this standard scenario where you want to publish data from a Notes view entry to other components.
Hope that helps clarifying things.
One of the current limitations to property broker and Notes components is the support for complex properties. This even exists for portlets that do not have access to the class on the portal server but may be available on the XPD/Notes clients. Using JSON gives us the ability to have complex objects that use the Java Bean interfaces to properties. You can get sample code and API"s from http://json.org. There is a java page that shows how easy the API's are to use and of course a LotusScript version available on OpenNTF. Below is a screen shot that shows how I wrote a plugin that converts all Eclipse Workbench selections to JSON. I use the mail views to show how much more information you get when using JSON.
The JSON string can then be re-assebled in the portlet or LotusScript action for use. Below is a formatted version of a sample selected document from my inbox. This is a lot more information than say the "from" field or the "subject". While this example may not be entirely useful it does show that if selection objects in your Eclipse plugin use the bean pattern they can expose an aweful lot when used in this JSON pattern.
"\n\t\tColumn: 0\n\t\tColumn Type: text\n\t\tColumn Value: 0",
"\n\t\tColumn: 1\n\t\tColumn Type: text\n\t\tColumn Value: index:colicon1:210",
"\n\t\tColumn: 2\n\t\tColumn Type: text\n\t\tColumn Value: ",
"\n\t\tColumn: 3\n\t\tColumn Type: text\n\t\tColumn Value: XXXXXXXXXXGermany/IBM",
"\n\t\tColumn: 4\n\t\tColumn Type: text\n\t\tColumn Value: XXXXX XXXXXX",
"\n\t\tColumn: 5\n\t\tColumn Type: text\n\t\tColumn Value: XXXXXX XXXXXX",
"\n\t\tColumn: 6\n\t\tColumn Type: text\n\t\tColumn Value: ",
"\n\t\tColumn: 7\n\t\tColumn Type: text\n\t\tColumn Value: Re: Community Presentation",
"\n\t\tColumn: 8\n\t\tColumn Type: text\n\t\tColumn Value: 10/25/2007 10:23 AM",
"\n\t\tColumn: 9\n\t\tColumn Type: text\n\t\tColumn Value: 97K",
"\n\t\tColumn: 10\n\t\tColumn Type: text\n\t\tColumn Value: index:colicon1:184",
"\n\t\tColumn: 11\n\t\tColumn Type: text\n\t\tColumn Value: index:colicon1:9998",
"\n\t\tColumn: 12\n\t\tColumn Type: text\n\t\tColumn Value: "],
Here is another example where I used the Sametime sample "Teammates" view I used in the dashboard and sent out the JSON object for a Sametime person selection. As you can see, it contains a lot of nice information on the currently selection person (formatted for your viewing pleasure):
Here is an updated tutorial for Notes 8.0 (basically update of this one).Read More]
Starting in Lotus Expeditor version 6.1.2 and Lotus Notes version 8.0.1 composite application assemblers will have the ability to add existing Eclipse perspectives to their composite applications. What is meant by static perspectives are any perspectives which are predefined using the org.eclipse.ui.perspectives extension point. These perspectives are created at design time rather than a conventional composite application page which is created at runtime using either the Portal layout admin tools or the Composite Application Editor (CAE). If you are familiar with some of the inner workings of how composite applications work in Notes and Expeditor, you are aware that the TopologyHandler component reads in a portion of the composite application xml and builds a model for the application which is used to determine how the user interface for that application and its components should be rendered. Composite application pages and components each contain important meta data which affects the rendering of the composite app. This can be anything from a page title to a boolean value determining if a title bar should be visible for a component view. In order to use an existing perspective within your composite application you can simply add a parameter to a page object. Below you can see a composite application opened in the Composite Application Editor tool in which I have added a new page called Static Browser Page. When adding the page, uncheck the box that states the page can have components:
If I edit the properties of the page, I can click on the advanced button and enter in any custom meta data. To make this page a static page using a pre-existing perspective, I simply add the following:
com.ibm.rcp.staticPerspective = <some perspective id>
When finished editing the app I can close the CAE and now my static page is integrated into my composite application page hierarchy. This shows the page in the custom navigator which is implemented for this application:
When I click on the Static Browser Page item in the list it opens the perspective within my composite application:
Using a White List to manage updates sites in CAE
Another new feature coming along in CAE for 8.0.1 is the ability to pickup on provisioning white-list settings from your organisationspolicies. The whitelist can be defined as a Lotus Domino or WebSpherePortal policy.
Setting Whitelist Policy for Lotus Domino
Launch Domino Administrator Client.
Setting Whitelist Policy for WebSphere Portal
Log into Portal as an administrator.
Options in Composite Application Editor
When you select Add Components from Updatesite from the palette conetext menu there are three possible variations to the UI depending on the settings set in the policy.
As we always say composite applications are all about integrations of different component types. We've primarily talked about NSF components, Eclipse components and portlets so far but it doesn't stop there. Integrations of arbitrary web applications and integrations of native applications are also possible and I'd like to provide more out of the box capabilities to do this in future releases.
Sorry for doing this but it is much easier to post an entry on my site with so many pictures then this site. You can find the second part of this saga here.
Edit: After realizing I have an amazing tool at my disposal (the productivity editors in Notes 8) I decided to cut and paste the two blog entries and images into a single document. I saved the document as a PDF so you can easily download them and read them. Click here for the PDF.
Attached is a draft of a document that describes in greater detail how to install and use the Lotus Expeditor 6.1.1 toolkit with Lotus Notes 8 and Sametime 7.5.1 and information on how you can more easily get the prerequisite software. If you have comments on the document, please let us know with responses to this blog entry . Additional information on the Lotus Expeditor 6.1.1 toolkit can be found at http://www.ibm.com/developerworks/downloads/ls/lxpd/learn.html.
You can download the PDF here.
Another new feature coming along in CAE for 8.0.1 is the ability to Undo changes you've made to your applicaton.
For 8.0.1, this feature is only available for NSF based applications. We hope to extend this to Portal based applications in the future.
There are two aspects to this new feature:
1. When you close CAE, you are asked if you want to keep your changes. Selecting "No" will revert the application back to it's original state... when you opened CAE.
2. Edit->Undo. This will undo the last operation performed. Operations are things like: add component, add page, remove component, remove page, modify wiring, modify component properties, etc.
This is going to be in a two post series because I realizedthe first posting is just too darn long!
With the integration of Eclipse and Expeditor into LotusNotes 8 you get a whole new set of deployment options for consideration whendeploying your composite applications. The Lotus Expeditor introduced the manageability of Eclipse features andplug-ins by allowing the administrator or application assembler to identifywhat features need to be installed when a composite application is opened. Each component in an application can specifywhat Eclipse based features (if any) are needed for this component to beproperly rendered in the client. Likethe portal managed side, the Lotus Notes side has the same capability using theComposite Application Editor. LotusNotes also adds a new twist to the equation – the NSF based update sites! With this powerful tool you can now packageand deploy your features and plug-ins in whole new ways – but there are somethings you need to consider before taking the leap.
Let’s step back a little and walk through the way Eclipseupdate sites work and how features get installed into the system. Then we willapply this to composite applications and then introduce some patterns that canbe used with the NSF based update sites.
When you bundle your plug-ins they are contained within afeature. Each of these artifacts hastheir own version attached to them. Thisis important to remember because the eclipse provisioning system will onlyinstall new or compatible features and plug-ins. Generally, if you have a feature with asingle plug-in or even several plug-ins you might want to keep the version ofthe feature and its plug-ins the same. This will make problem resolution easy down the road. If your feature happens to include otherplug-ins, then the Eclipse provisioning system will look at it in layers. First it sees if the version of the featureis already installed – if so, it will not continue to look into theplug-ins. This means, if you deployedyour feature once, then added a plug-in to it you must increment theversion number before deploying again, otherwise the new plug-ins will not getinstalled on existing systems.
Now let’s look at Composite Applications and how it handlesdownloading plug-ins and features. Composite apps only reference features in their descriptor (the ca xml). Meaning, you must adhere to the featureresolution logic in eclipse in order to have its plug-ins deployedproperly. If you change the feature, youmust increment the version. If youchange a plug-in you must change its version number and one of its containingfeatures in order for it to be deployed. Composite applications also add another level of complexity – forperformance reasons. CAI (CompositeApplication Infrastructure) only looks at applications definitions (ca xml)that have changed- we cache the last time and date stamp of the file. So if your application has not changed, CAIdoes not even crack open the file to install features. So the change dependencytree looks like this:
---ca xml - time and date change
---------feature -version change
-------------plug-in -version change
So in order for a new plug-in to be installed, all three ofthose logic points must be passed.
Now let’s talk about how the new NSF based update site canbe used in your organization and explain some of the scenarios you may want toconsider when using this new technology. The first thing we need to understand is why this technology wascreated. Here are some high levelbullets of why this is so cool:
So we need to consider the deployment scenarios and thecaveats each one presents. Let’s startwith what we should consider an enterprise preferred method and go down fromthere.
Preferred Method 1 – Centralized Update Site
Recommended – Company with not alot of features and plug-ins from various vendors
Centralize your update site into a single NSF based updatesite. This means you use one replica of an update site and maybe put it on morethan one server. Using the options inthe database it easily allows you to import existing plug-ins and features frommany different sources. This also meansyour composite applications will all be pointing to a single Notes replica toget their features and plug-ins from.
Preferred Method 2 – Shared update sites
You could also have several update sites where features arestill “central” but bundled by application, feature, or function. Meaning, you may want all features referencedby finance organizations in one site or all features from third parties in onesite and all internal features in another site.
Caveat – This may be less expensive than the firstbut you would still have to change rep id’s to feature if any of the “central”site databases changed its replica id. Anytime this happens you need to update the applications that referencethe changed site.
Preferred Method 3 – Application based update sites
Recommended – Small Company withsilo based applications
This is really for applications that have features that willmost likely stay specific to its self. Hopefully all shared features are put onsome kind of central site but in this case this is an easy way for applicationsto get pushed around on servers or as attachments. By having the applicationself contained in a single file it makes prototyping and testing veryeasy. If you intend on deploying in alarge enterprise you may want to consider moving the features to a shared site.
The next part will walk you through creating an NSF based update site and then also creating a composite application that houses the NSF Based update site inside of it.
Craig Wolpert and Jo Grant from the ISV enablement team have published another article on developerworks. This one describes some techniques to design components that have helped them when implementing their first composite application.Designing composite applications: Component design
Stanislav Maksimov from the CAE team implemented another nice sample that allows generating audio files from mails that you can listen to for example on your way to work. The entry below is from Stas.
The idea for this demo was to create a component that could take different Notes documents and produce an audio file - a podcast - using text-to-speech technology. The implementation of PodSmart Demo component was very simple - it had to accept drag and drop from Notes, then using the Notes Java API get all necessary textual data from each document and then feed all this text into the text-to-speech engine. However, to be easy to use, it had to be really part of the Notes Mail database; this was easy enough to do with Composite Applications Editor, by placing the component on each page of the Mail database. It was concluded that the best place for the component would be in the bottom left, underneath Notes Mail Navigator.
The result looks like this:
So in this Notes Mail database it is now possible to drop emails, meeting notes, todos, paste doclinks for other documents, and also drop MP3 files into the PodSmart Demo component by dragging them from the Windows Explorer. Once the list is created it can be rearranged if needed, and then with just one click of a button - the podcast is created, which can be loaded to an audio player like iPod where user will be able to listen to their mails or other documents while travelling.
Websphere Portal has a feature called personlization where you can modify a screen or part of an application that only you can see. Currently in Notes and Expeditor we do not have such a capability - we also expect the person to use CAE (Composite Application Editor) or Portal to make any changes to UI, however those changes would end up being reflected for all users of that application.
So the questions are:
Any input is greatly appreciated,
I wrote about the various sessions and times I am presenting next week on my personal blog. I will be showing some good presentations my colleagues and I have put together and more importantly some great demos that show applications with XPD, Portal and Notes components in them and communicating together. I am also going to cover some of our tools and demonstrate how Portlets can be taken off line.
Michael Taylor and Robert Loredo are also presenting "Building Composite Applications and Mash-ups using Websphere Portal" on Tuesday at 8:30 and then again at 10:15.