Search
Contribute
Navigation
- 8.5+
- actions
- advanced features
- advantages of composite applications
- API
- app dev
- basic NSF application
- basics
- benefits
- Best practices
- Best practices
- BIRT
- browser
- built-in actions
- built-in properties
- business value
- CAE
- CAI
- catalog
- changing page properties
- compatibility
- component
- component library
- component properties
- components
- Composite Application basics
- Composite Application basics
- composite application demonstration
- composite applications
- container
- container components
- context
- creating a sidebar
- creating wiring properties
- customer interests
- data model
- debugging
- demo
- demonstration
- deploying
- deploying applications
- deploying NSF components
- deployment
- drag and drop
- easy
- ECL settings
- Eclipse
- Eclipse API
- Eclipse basics
- Eclipse components
- Eclipse samples
- Eclipse tips
- editing properties
- education
- embedded browser
- enablement
- errors
- Expeditor
- Expeditor samples
- Expeditor toolkit
- extensions
- FAQ
- feature rules
- first application
- fundamentals of Eclipse
- general debugging tips
- generic container
- getting started
- glossary
- Greenhouse
- hod
- host on demand
- how to
- Java components
- lead manager
- live text
- local
- Lotus Expeditor
- Lotus Notes component advanced development
- Lotus Notes component development in Composite Applications
- Lotus Notes components
- Lotus Notes components
- Lotusphere
- LS09
- match rules
- my first wire
- navigation
- navigators
- new applications
- new user
- new users
- Notes
- Notes 8
- Notes components
- Notes View
- Notes @formulas
- Notes8_5
- NSF-based composite applications
- NSF components
- NSFs
- opening pages
- out-of-the-box components
- overview
- page navigation
- page properties
- pages
- passing context
- PIM components
- plugins
- Portal
- product information
- product wikis
- productivity tools
- properties
- property
- property broker
- property broker editor
- Property Broker Monitor tool
- property to property
- provisioning
- questions
- resources
- roadmap
- running in context
- sample composite application
- samples
- service oriented architecture
- setting component properties
- setting up
- sidebar
- skills
- SOA
- Symphony
- Symphony view component
- toolkit
- tools
- topology peek tool
- troubleshooting
- tutorial
- Tutorials
- uninstalling composite applications
- update site
- updates
- user interface planning
- video
- view
- web container
- web services
- widgets
- wires
- wiring
- wiring properties
- wiring tutorial
- WSDL
- .ca
- @formulas
Go elsewhere
Advanced application container features
Article information
![]() |
Advanced users
, Best practices
, Lotus Expeditor components
, Lotus Notes components
advanced features , Best practices , container components |
Erik Behrends 11/03/2008 |
Deanna Drschiwiski 01/14/2009 |
|

Introduction
The generic application container framework introduced in IBM Lotus Notes 8.5 and IBM Lotus Expeditor 6.2 includes some advanced features. This article shows how you can define custom delimiters for multiple valued data items to be published or received by containers. It also discusses the synchronization of landmark configurations for container components of the same type.Configurable Delimiter Values for Multiple Valued Data Items
You can use container components implementing the generic application container framework to publish data to and receive values from the composite application infrastructure - or, more specifically, from the property broker. Besides single data items to be published and received (for example a string or a numeric value), the container framework also supports multiple values. This means that lists of values (for example, several stock quotations represented as a list of floating-point numbers) can be published or received by container components through a single wireable property. You can also separate the values into multiple lines, each with multiple values. This allows you to provide range values to be used in a spreadsheet table. By default, the container framework uses the string "\0" to delimit the individual values in a row and the string "\0\0" to separate lines from each other. You can override these settings by editing the component's Advanced properties in the Composite Application Editor (CAE).Figure 1: Component properties editor in CAE, showing custom delimiter preferences
Example
For example, a Web page might contain an HTML table providing valuable information. The user wants to publish several values from the table by defining an appropriate landmark for the given Web page in a browser container component. Instead of extracting the values of a specific table row (or even the entire table) through individual published properties, you can use an XPath expression to address all values in a given table row. This list of values can then be published as a single property to the property broker.
Below is a simple example HTML table consisting of two rows and three columns.
| 1990 | 1991 | 1992 |
|---|---|---|
| 108 | 71 | 106 |
<html>
<body>
<table border=1>
<tr><th>1990</th><th>1991</th><th>1992</th></tr>
<tr><td>108</td><td>71</td><td>106</td></tr>
</table>
</body>
</html>
The XPath expression /html/body/table/tr[2]/td would select the values contained in the second row and yield 108, 71, and 106. In its default configuration, the browser container would publish this list as follows:
108\071\0108
In this case, the default value delimiter \0 is used to separate the values from each other.
If you set com.ibm.rcp.delimiter.value to \t, the result would have the following structure instead:
108\t 71\t108
This means that the values in the result list would be separated by tabulator characters.
Synchronization of Landmark Configurations for Container Instances
Consider the case where several instances of the same container component type are located on one composite application page. If the landmark configuration for one instance of these components changes, the generic application container framework automatically applies those changes to all container components based on the same type and located on the same application page. This makes it easy to maintain these container instances synchronously. The following sketched step-by-step example illustrates the process.1. In CAE, add a browser container component to a composite application.
2. Configure the component; that is add wired properties and landmark configurations in the component Properties dialog.
3. Add this component to the palette - (Right-click on the component to access the corresponding context menu in CAE.) - Now, you can reuse this preconfigured browser container component as a new component type.
4. Delete the original component from the application.
5. Add two component instances of the new preconfigured container component to the application. Make sure they are placed on the same application page.
6. Now, edit the landmark configuration for one of these two components and save the changes by closing the component Properties dialog.
Result: The changes will also be applied implicitly to the other container component
This feature is especially useful if many container components of the same type are located on one page. It is very easy to change the landmark configurations for all component instances that have been created from the same component on the palette.
Using Eclipse Preferences in Landmark Configurations
You can use strings from Eclipse preferences to substitute strings in certain places. For example, you can use the format ${plugin.id/PreferenceName} to identify where a preference value would be used for the value. This means that you can use any plug-in preference as a value whenever the ${} pattern is matched.The following attributes can use the Eclipse preference tag:
- landmarkIdentifier element, the expression attribute
- targetBuilder element, the expression attribute
- landmark element, the expression attribute
- actionref, publish and receive elements, the field attribute
- data element, the value attribute
Example
When container components are defined as pre-configured Eclipse plug-ins, their landmark configurations are usually specified in plugin.xml. For example, an Eclipse plug-in could have several extensions of the com.ibm.rcp.composite.container.core.containmentConfiguration extension point and thus provide several preconfigured instances of the browser container. During the development phase of a specific browser container component, we might want to test the component against a Web application running on a dedicated test server. Later, whenever an application using this component goes live in a production environment, it should then use the URL of the actual deployed Web application. This means that the URL used in the landmark configuration during development differs from the one used for deployment.
Using Eclipse preferences, you do not need to change the landmark configuration when you deploy the application. Instead, simply define an appropriate placeholder in the container component landmark configuration, as shown below.
Figure 2: Using an Eclipse preference for the landmark expression in CAE.
The placeholder ${com.ibm.rcp.composite.container.browser.sample/landmark.url} points to the landmark.url preference in the plug- in. You can for example define plug-in preferences in a preferences.ini file in the plug-in directory. Any preference in that file is defined as a key/value pair on a single line:
landmark.url=http://www.ibm.com/us/
When the plug-in is loaded at runtime, the Eclipse platform reads all preferences from that file. Hence, it is possible to change the URL used in the landmark expression in a straightforward way without modifying the landmark configuration.
Comments


