Do you have trouble finding out what wires are in your application?
There is a new feature coming in CAE in Notes 8.0.1 to help you with this.... View All Wires.
It will be launched from a button in the Wiring UI:
When you click the button, it will bring up a new window that contains a tabular view of all wires in the application.......
By hovering over a row in the table, you can get more information about the wire....
Or you can choose to include extra information in the table itself...
Some other features:
- Can sort on any column, in either direction
- Can re-order the columns
- Delete wires from using the table
- Double click on a wire to close the dialog, and display that wire in the main Wiring UI
In this sample we show a Notes view wired to the embedded browser using Notes Formula to calculate a URL to determine what to show in the Browser:
#1 Is a notes frameset with the view and document.
#2 Is a component showing a Notes Page containing the banner graphic
#3 Is the set of Tabs, one showing the Navigation UI "Notes Frameset" and each of the other three containing a Managed Browser component.
The Notes View contains three hidden columns, each using a formula to construct a URL to be sent to the browser components:
"http://buy.ebay.com/" + ItemName
"http://en.wikipedia.org/wiki/" + ItemName
"http://www.amazon.com/s/ref=nb_ss_gw/002-6186749-2013614?initialSearch=1&url=search-alias%3Daps&field-keywords=" + ItemName + "&Go.x=13&Go.y=13&Go=Go"
Each of the hidden columns expose their values as "InURLType" the property type expected by the Managed browser
The view columns are wired up to the browsers using the CAE wiring tool.
Selecting an item in the view updates each of the browsers to show the selected item.
Composite applications are all about reuse of components and mix & match of components. In order to prove this model we're working on several components that can be used in custom applications. In 8.0.1 we've planned to ship a new 'recent collaborations component' and a 'side calendar view component'. Qian Liang is a technical lead in the Notes PIM team and Hui BJ Li is a developer in his team. They've implemented this feature and wrote the text below.
We add two new PIM components in Notes 8.0.1: Notes Recent Collaborations View and Notes SideCalendar View. You can find them in component palette in CAE:
1. Notes Recent Collaborations View:
Recent Collaborations View is a view that show recent collaborations with someone, it searches recent collaborations history according to collaborator name.
You can set collaborator name through two way:
1. Set component property (com.ibm.rcp.csiviews.viewpart.collaboratorname) in CAE, when view is opening, view will read this property and search recent collaborations by value of this property;
2. Recent collaboration view listening the property changed event, the value of property is the collaborator name. User can fire a property changed event to recent collaborations view, if recent collaboration view received a property changed event, it will search recent collaborations according to value of the property.
The collaborator name's format should be one of following:
a. A common name, such as "**** ***"
b. An email address, such as "*****@***"
c. Canonical name, such as "CN=***/OU=***/O=***"
d. Notes ID name, "***/***/***"
Recent Collaborations View providers one input action:
Integrating Notes Recent Collaborations View and Notes Contacts View as the example to show how to use this component: a. Create a new Composite application and edit in CAE. Drag the Notes Contacts Views and Notes Recent Collaborations View components into application: b. Right click on Notes Contacts View to wire properties: c. Close CAE, open this application: Notes Recent Collaborations View provides two new component properties:
|Action Name ||Input property name. ||data type |
|SetCollaboratorName ||CollaboratorName ||xsd:string |
You can set the value of component property "com.ibm.notes.ui.recentcollaborations.viewpart.isshowbusinesscard" to set whether show business or not. If the value is ture, then show business card, otherwise not show. You can set the value property "com.ibm.notes.ui.recentcollaborations.viewpart.collaboratorname" to set the default value of collaborator name: 2. Notes SideCalendar View: In Notes 8.0, SideCalendar is only in sidebar pane. In Notes 8.0.1, we will provide SideCalendar view as a component that can be configurable in CAE. How to use Notes SideCalendar View component: a. Create a new Composite application and edit it in CAE, you will find the new component Notes SideCalendar View in component palette. b. Drag the Notes SideCalendar View component into application. c. Open the application: Notes SideCalendar View provides one new component property:
|Name ||Value |
|com.ibm.notes.ui.recentcollaborations.viewpart.collaboratorname ||Any String |
|com.ibm.notes.ui.recentcollaborations.viewpart.isshowbusinesscard ||Should be true or false |
You can change the value of property "com.ibm.rcp.csiviews.viewpart.folderstyle" to set folder style, folder style has two types for calendar view:"LIST" and "CALENDAR". If folder style is LIST, sidecalendar view will show as summary mode when open it at first time, if folderstyle is CALENDAR, view will show as calendar mode when open it at first time.
|Name ||Value |
|com.ibm.rcp.csiviews.viewpart.folderstyle ||Should be "List" or "CALENDAR" |
I know, it's not the Force
or the Swartz
for that matter but the power CAE brings to the Notes client and its community is something that has never been in the Notes client before. While many developers and techies alike claim
"I could do that already in Notes
" is not entirely true when you look at the composite application demos presented. The fact that CAE can be launched in the Notes client (not Designer), the normal, casual user can now re-arrange or create from scratch - a composite application. Like I stated in the "Simple but effective Sample
" a few days ago, 90% of that application was done in CAE alone - no coding, no designer, no programming expertise.
In 8.0.1 we are extending this even further to support wiring to existing
notes components - views, etc. Meaning you can have interaction with legacy Notes databases that will not require design changes.
Pranav Kuber and Nizar Lethif are developers in the CSI and PIM teams. They've implemented an interesting prototype that shows how to run and integrate with XUL applications in Notes 8 (with some additional plugin from Sametime). They've also planned to write a developerworks article with more information about how exactly they've implemented this. The description below is from Pranav and Nizar.
This article discusses how existing applications written in XUL (XML User-interface Language) can participate in the Composite Application Infrastructure. As an effort to address this, we implemented a new container which should be generic enough to embed any application which can be rendered in a browser. So far, we have implemented this container framework to support XUL. The Implementation:
Some useful XUL links:
The container creates an instance of the com.ibm.swt.xulrunner.browser.SWTXULRunnerBrowser browser and registers the properties with the Property Broker.
The com.ibm.swt.xulrunner.browser.SWTXULRunnerBrowser plug-in is available as a part of Sametime 7.5.1.
The Sametime installable will be available at http://www.ibm.com/developerworks/downloads/ls/lst
Currently, the com.ibm.swt.xulrunner.browser.SWTXULRunnerBrowser is not part of the Notes 8.0 plug-ins.
The developer of the CA specifies the following:
In order to demonstrate a working implementation, we created a XUL application which uses the ThinkPlace APIs to extract ideas and display them in a table.
ThinkPlace is a collaborative tool that allows IBM employees to surface opportunities to grow our business, identify solutions to critical client business needs and offer ideas for process improvements that will enhance IBM's culture or make us more competitive in the marketplace.
The APIs exposed by ThinkPlace are REST APIs.
More information on REST APIs: http://en.wikipedia.org/wiki/Representational_State_Transfer
(Refer to the screen shot below).
The Composite Application is created with one of the components as the XUL application above and the other, a notes database. When we click on the “Search ThinkPlace” button, a property event is fired (search).
Refer to the screen shots of the application
1. The application, onload.
2. After clicking on the "Search ThinkPlace" button.
As of now, this container supports property event subscription only. We are still working on a generic solution for property event publish.
Nizar Lethif (firstname.lastname@example.org)
Pranav Kuber (email@example.com)
More specific implementation details will be made available in the Developer Works article.
Kannepalli Sreekanth from the Notes composite application development team has implemented with some other developers a new feature for Notes 8.0.1. This allows opening Notes documents in composite application pages together with other components. In 8.0.1 you could put forms on pages, but there was no way to open multiple documents at the same time. The text below is from Sreekanth.
In Notes 8, when you double click on a Notes Document it opens up in a new page which just the document opened in it. With this new feature in 8.0.1 you will be able to open Notes Documents in a page within a Composite Application. What does it mean to the end user ? The new page can again be a composite page which has wires to other components. Opening a document can lead to a few actions being fired which can show composite information on the page which was unavailable earlier.
How to use the feature ?
Let us use the Sales Lead Application for demonstrating this feature.
Create a new Composite Application and place the Sales Lead Core->Company View
The main idea behind this feature is that each Document is associated with a Form. A new page is created in CA associating it with a single form. When a document associated with such a form is opened the respective Page will be opened.
Note the form name associated with a Document from the Infobox. In the below e.g. The form name is equivalent to “CompanyForm”. Note: Form alias is used always.
Create a new page in the CA with any name. In the Page Properties->Advanced tab set a new property by the name “com.ibm.rcp.alias” and value equal to the form alias name. This property will be used to identify a page associated with a form. You may hide the page in the navigator also.
In the new page it is now important that we create a Notes Component that will act as a Placeholder component. This component will serve as a location markup as to where a document should be opened. Only one placeholder component can exist in a page. A Component is designated as a placeholder component using the property com.ibm.notes.isDocumentPlaceholder=true
NOTE: It is necessary to point the URL of the Notes Component to the Form from the database.
Note the new property com.ibm.notes.isDocumentPlaceholder
Add two other components and wire them as needed. This will demonstrate the composite nature of the page. For demonstration i have added the Closed and Pending Leads views and wired them as shown below. Also my Document's form is written to do a Publish of CompanyName property in the PostOpen event.
Now you are ready to try it out.
Open the CA and navigate to the first page. Double-Click any document to open the document within the Placeholder component in a new page along with other Components.
Documents belonging to a particular form always open in the same page bringing uniformity in the CA
Different target pages can be created for Documents using different forms
Document is still within the context of the Composite Application
We have all heard many things about Composite Applications - a lot of theory, many small samples, etc. Now that Notes 8.0 is available you should start to see more and more uses for composite applications. The application I am going to walk you through today is a very basic dashboard
concept for my Expeditor team. It is made to centrally bring in all of the important databases, Wiki's, and people to the same screen. It makes our lives easier because the application is essentially a bunch of links to many other 'places'.
To start, here is a screen shot of the application with some numbers that we will identify below.
- This is the normal composite application page navigator which resides in the left side bar – Yes! You can put stuff in a LEFT side bar also! This is just as flexible as the right one. The good thing about using the left side bar in your application is you can have views stay on the screen throughout all of the pages of your application.
- This is the Team view component. I literally created this in about 3 hours modifying the samples that ship with Sametime 7.5.1. The interesting thing about this component is the list is different for every application. Meaning, I used the CAI (Composite Application Infrastructure) API's to figure out what application I am in and store the entries for each application in separate files. By setting up a CAI listener I know when applications are opened and closed. The view is installed and can be enabled in any composite application by specifying the dashboard activity for the applications pages. CAI does all of the work of hiding/showing it. I also modified the view to support full drag and drop of ST People and Groups so populating it is a snap.
- These are the different core applications our project management team uses. We have our team room for the meeting documents, the problem report database – which is linked to a special view, and the requirements database for triage meetings.
Next, the database uses the Eclipse Update Site template as its base. This means, you can put your Eclipse features and plugins right into the database and have them provisioned from the same database file when the app is opened. This makes packaging the application with Eclipse features just like any other Notes database. When you deploy the composite application you simply send a link, the file, or deploy replicas.
Here is a screen shot of the Administration page where you can manipulate the Eclipse features that are in the application:
If you use Portal to manage your composite applications you get a portlet which provides a nice set of properties for deploying a managed browser page to your clients. One cool thing about this component is you can completely control the look and feel it (the browser window). Here is a basic screen shot of a composite application where I have shortcuts to common pages in the navigator on the left to web pages. The browser control has all of the extra UI widgets hidden (toolbar, status, etc).
The problem is, this component ships with Lotus Notes 8 but will not be in any component catalog in CAE (composite application editor). You can drop ANY component on the screen and override these property names and values to show an embedded browser. By replacing the viewID with the managed browser ID you are telling CAI to basically use a different component.Property Name Valuecom.ibm.rcp.extensionType SIMPLE VIEWcom.ibm.rcp.viewId com.ibm.rcp.ui.browser.portal.PAABrowserViewcom.ibm.rcp.showTitle falsecom.ibm.rcp.visible trueuseBrowserHome falseallowScripts trueenableApplet trueinitialURL http://www.ibm.comshowURLEntry falseshowHistory falseshowToolbar false
* the WSDL location allows you to create Wires from other components - to drive the browser window.
As promised, you can download Lotus Expeditor 6.1.1 Tookit from here
. This means you can begin to build XPD based applications (portlets, jsp's, SWT, composite applications) today!
Santosh Kumar is the lead developer of a Lotus Component Designer team. He has implemented a great sample composite application. It shows how you can re-use an existing Eclipse component in a composite application in Lotus Notes 8.0. The Eclipse reporting component he is using allows displaying Notes data graphically. The description below is from Santosh. He is also trying to publish more information about this on developerworks.
Using open standards-based Eclipse technology, Notes 8 is brining new ways of creating composite application by combing different services and application. Notes 8 is making it easier to integrate line of business solutions and data in new type of applications. The Reporting Composite Application one such sample application providing ability to create graphical reports over domino databases in Notes environment using Eclipse based open source reporting system.
This application leverages composite application infrastructure to create graphical and analytical reports over Domino and present in single context for the end user. It reuses the existing established and well know Eclipse open source project BIRT http://www.eclipse.org/birt/phoenix/
for reporting solution and creates capability to create reports as composite application in Notes.
Users can visualize Domino data in different type of charts (ex Pie chart, bar charts ) , aggregate, and filter information resulting in getting more value from domino data. They can highlight results in report tables matching some specified criteria and drill down to specific notes document. Also users can configure to use different report template to visualize compelling reports. The screenshot
shows that sales lead report for selected company “De Vlaming Inc”. The Eclipse component at bottom shows report appearing for different types of leads the company is engaged in. The table has filtered results for selected company and highlights the leads whose “Revenue is greater than 200 units”. The charts on right hand side show distribution of total revenue from each type of leads.
In the above snapshot, highlighting enables to identify “new” lead with certain amount of revenue and selecting that row will open that specific Notes document. This enables users to quickly find information and collaborate effectively in context of operation. One can also specify particular domino database on which report can be generated and contextually drive from different database, like sales discussion database.
The solution involved creation of Domino connectors for Eclipse Reporting solution ( BIRT) ,using its run time engine to visualize report and leveraging composite application infrastructure to enable it as composite component in Notes. The solution is extensible to create report on any domino database, provide better analytics of information by specifying filtering, grouping and graphical visualization of domino data all in context of user operation.[Read More
In the soon to be released version of the Property Broker Monitor tool
(for Notes 8.0) you will see a new Emulation tab.
The emulation tab allows you to "spoof" a property change and watch it execute through the broker to receiving components. There are two ways you can emulate a property change - one, calling the action directly and two, using an active wire.Calling the action directly
When you call an action directly the monitor will be taking in the text value and attempt to convert it to the correct property type. Here is a screen shot with some explanation of how to call an action directly by explaining the key parts of the tab.
- Select the "Call an action directly" option
- Find the action from the appropriate owner you want to call. In this case I selected the SetSelectedDate action from my Notes Calendar.
- Type in the value you want to send to the actions input parameter. (see the next bullet for a cool tip).
- If the type of the parameter is known to the monitor it will attempt to show you the text format you must use. In this case it is an xsd:dateTime.
- The next list of name value pairs is the information for what the source property must look like in order for the action to take in the property change.
Using an active Wire
The only difference between this option and calling the action directly is the monitor will construct the property change and send the value to the broker using the from owner ID specified in the wire. This will truly emulate execution flow of a production property change.
Tracing a property allows you to see debugging information about that property when it is passed into the broker in the changedProperties call. By tracing a property you can see where it fails or succeeds in the delivery of the property change event to the receiving actions. You can trace a property by going to the Current Page tab, finding the interesting parameter on a given action you want to trace, right clicking and selecting the "Trace" option.
During normal execution, the flow of a property change that is being traced might look like the screen below. I have annotated some of the key findings and output messages to better help you understand how to debug them.
- The changedProperties() call was made on the broker
- While iterating through all of the active Wires the broker found a problem when matching against the changed property. *Depending on how many wires are enabled, you may see a lot of failures up front.
- The property change got through the wire evaluation and was added to the processing queue.
- This event (PRE_ACTION_CALLED) is called just prior to calling the handler of the property change action.
- The final event is when the broker gets passed back execution rights once the action has been called by the handler.
If you would like to include the embedded browser in your application, and wire your components to it, you need to define properties that use the same types as the embedded browser component. However, you do not need to define these types from scratch, you can import the types from an existing WSDL file and then define your properties to use those types.Note:
In the Beta version of Notes8, when you choose to "Add locally installed components" from the palette in CAE you are presented with a number of "Browser" components. You should choose the one titled: Managed Browser
. This is the browser component that supports wiring. (In the Notes 8.0 release, you will not be see the multiple browser components, just the Managed Browser one.)
You can download the WSDL for the Embedded Browser here: eb.wsdl
(Please ignore the .jpg
extension. Save file locally as eb.wsdl
To import the types:
- In Domino Designer open your database, and navigate to Composite Applications\Wiring Properties
- Click the New Wiring Properties button and enter a name for your new WSDL file.
- Click Open File to launch the Property Broker Editor
- When Property Broker Editor opens, switch to the Types tab
- Click Import Types and browse to the eb.wsdl file from above.
- Select the types you want to import & click OK.
You can now select these types from the drop-down list when creating a new property.
I've been pointed recently to some other blogs where discussions about composite applications in Notes occur. I wish these discussions would happen in this blog but as long as someone points me to these other blogs that's fine too.
In these discussions I've partly seen some statements about composite applications that are just not true and it surprised me a lot that these wrong statements are still floating around. It seems we haven't made the best job so far to sell composite applications to our development community. Let me try to clarify a couple of points.
In order to use composite applications you do not need a portal server. There are NSF based composite applications that allow aggregations of different components and wiring between them.
In order to implement composite applications you do not need necessarily an Eclipse IDE. You can create NSF components in Domino Designer as previously and comp apps can be created and modified with Notes and the CAE (Composite Application Editor) which is part of Notes.
The Eclipse IDE can be used to launch Notes from the IDE in which you can implement Eclipse components and then directly debug from there. The setup instructions are not easy right now, but the plan for Notes 8.0 GA is to give developers access to the Expeditor toolkit which is an extension to the Eclipse IDE. This toolkit will allow much easier to start Notes from the Eclipse IDE by basically only pointing to the Notes install directory. We've tried to make this available already as part of the public betas but different non technical reasons prevented this unfortunately.
Not every Notes developer has to learn Eclipse. If you are happy with the Notes 7 capabilities, you'll be happy with Notes 8 as well since we do not remove any capabilities. Composite applications are not a revolution of the programming model, but an evolution/extension. When we added LotusScript or web features, you could still use @Formulas. Same here, just another set of capabilities.
With Eclipse components we give new options to build Notes applications. These new options can be used to build platform independent applications and applications with rather sophisticated user interfaces. I'm not saying you couldn't do these things differently as well, but we give a new option based on an open source platform with a big community around it including samples, re-usable components, doc etc.
I understand not every Notes developer wants to learn Eclipse, but again not everyone has to. I compare this with writing C extensions to Notes/Domino. I know that we have BPs who have specialized on this since many customers want to use the extensions but don't have the skills and time to use them.
And as I wrote about in another entry the biggest benefit of composite applications are re-usable components. We want to establish a model in which people can contribute components to a public catalog so that other people can reuse them from there. The people who will re-use these components don't have to worry about Eclipse either. They just reuse Eclipse components and don't even have to know that these are not NSF components.
Granted, at this point (8.0) you can use certain extensibility and customizability features only when writing Eclipse components. We are however already planning how to expose these features to Notes developers who don't want to leave their well known Domino Designer environment. As always we'd like to get your input as to what and how exactly you want to leverage the new Notes 8.0 "Eclipse" features in a more typical way for Notes developers. I don't want to force every Notes developer to learn Eclipse but we had to start in 8.0 to add new capabilities and now have the chance to make them more convenient to use.
Stephen Auriemma is one of the key composite application developers in the Notes team. Below he describes an important new feature that we're trying to get in 8.0.1 and that he implemented. This feature allows refering to different NSFs from composite applications in different environments as I blogged about some time ago. While the tooling aspect might not be optimal yet (e.g. we could have @Formula editor in CAE), the new capability is very powerful at runtime.
The links to the NSF components (the Notes:// URLs) in a composite application (CA) typically change between development environment and production environment. As a result the CA breaks when the CA is deployed to production environment. In addition there are time when a dynamic NotesURL can be used to customize a CA at runtime based on the role or rights of the user. For Notes 8.01 we we plan to add two new preferences CA XML com.ibm.notes.ComputedNotesURL and com.ibm.notes.ProcessOnlyOnUpdate described below.
1. The preference com.ibm.notes.ComputedNotesURL can be set in the advance tab of CAE to a value that is a macro of @functions that resolves to a Notes URL that will be added as a notesurl preference to the cached CA XML.
The following preference:
Would result in the addition of this preference to the cache:
A better example:
The following preference demonstrates how access a profile document:
*The examples are the raw CA XML and contain encoding. The Advanced Component Properties dialog in CAE will encode the characters ("e;&) for you.
2. This preference com.ibm.notes.ProcessOnlyOnUpdate can be set in the advance tab of CAE to a value of true or false.
A value of true (default) would indicate that the CA XML cache will be recomputed only when the CA XML design note is updated. A value of false would indicate that the CA XML cache will be recomputed each time it is requested. By default CA XML cache is only updated when the CA XML design note is modified. It is worth noting, that moving the Composite Application CA to a new location (such as to deploy the CA) will result in a new CA XML cache for the user.
The preference 'page level access' will override the preference com.ibm.notes.ProcessOnlyOnUpdate. For example if 'pagelevel access' is turned on we always return the CA XML even if the setting com.ibm.notes.ProcessOnlyOnUpdate is set to true.
Would result in the CA XML cache getting recomputed and updated each time a request for the CA XML was made.