Creating your own dynamic variable resolver

Just as Chuck introduced the new variable substitution support in composite applications in this article, you can also create your own variable resolver just as Notes and Expeditor have.  At the base of this technology is actually a core Eclipse extension point, the id is “org.eclipse.core.variables.dynamicVariables“.  The Lotus Expeditor platform has defined “ECLIPSE” as the tag for Eclipse preference resolver we introduce in Notes 8.5.1 as described in the article.  Further more, Karsten also commented on that article for a future enhancement to the plaform to support things like Notes.ini variables.

The beauty of this is anyone can do this and create new extensions to pull values from any system they choose.  I was kind of thinking about this and another idea might also be interesting.  Create a “POLICY” tag where it would support specifying the policy type and a field and the value would be retrieved from the Domino Policy cache on the client for that value.  This would basically give instant policy based values for component, page, and application data.  You could use this for all kinds of things like colors, formatting, geographical differences, etc.  Basically anything that is supported by Policies could be used to drive your components.  Then inside of the resolver code we would just call GetUserPolicySettings.

notesDocument = notesSession.GetUserPolicySettings( “” , name , type)

The extension point definition would look something like this:

<extension point=”org.eclipse.core.variables.dynamicVariables”>

<variable
description=”Resolves variables for Notes Policy.  The argument is of the format {$POLICY:&lt;policyType&gt;/&lt;field&gt;}.”
name=”POLICY”
resolver=”acme.notes.PolicyResolver”
supportsArgument=”true”>

</variable>

</extension>

4 thoughts on “Creating your own dynamic variable resolver

  1. As far as I know, those dynamic variables are only support for some of the CA component properties, aren’t they?

    I would like to have full dynamic variable support for all CA component properties. That way, we could make our CA’s completely dynamic, e.g. dynamically display a different view in a view component depending on the policy settings.

    Something different: I just tried to insert a view container into a CA and mark the property “com.ibm.notes.notesurl” as wireable. My intention was to change the displayed Notes view at runtime via a CA action (e.g. from my own outline component). But the view container unfortunately does not seem to detect/support property changes for this property.
    Any workaround for this?

    Like

  2. Most, if not all properties support the dynamic values. And if you use the ComponentData class to access your variables with your own Java views then you will also get it “for free”.

    As for changing the view’s URL – no there is no real work around today. If you use a Notes outline you could do this with the Navigator view – similar to the way Mail works.

    Like

  3. Pingback: e mail works

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s