Archive for June, 2007

Navigating through the history thread

Quick question: how do you go about navigating ‘back’ or ‘forward’ in a Siebel 7 application?

Quick answer: use the JavaScript history object.

In Siebel 6 there was the ‘GoBack’ method, but that never made the journey across the thin client chasm. I’ve come across a couple of different methods for Siebel 7, but the history object is by far the most robust and reliable. It’s browser script only, because you’re accessing the native JavaScript object, but that drawback is far outweighed by its simplicity.

To navigate back one step in the history, the code might be:

function Applet_PreInvokeMethod (name, inputPropSet)

if( “GoBack” == name )

return (“CancelOperation”);

return (“ContinueOperation”);


June 26, 2007 at 6:21 pm 1 comment

More Siebel Web Resources

My referrer links turned up RectifiedSpirit from Stockholm, who links to a Siebel blogger I’d not come across: Graham, a Solution Architect for Oracle Consulting, who promises to write about Siebel and integration ‘stuff’. Sounds tailor-made for my current role.

Great to see someone on ‘the inside’ of Oracle writing publicly – although, as clearly disclaimed, independently.

June 15, 2007 at 9:48 am 1 comment

Implicit Joins

In a many-to-many relationship, it’s possible in the child business component to retrieve and set data on the current intersection record through an implicit join to the intersection table. In Siebel 7 you can see an example of this in action in the Opportunity: Contacts view: the Contact has a ‘Role’ on the Opportunity and this is displayed in the list of Contacts. Examining the config in Tools, this role actually sits on the intersection record between the Opportunity and Contact, yet there’s no S_OPTY_CON join defined for Contact. Unlike most joined fields, the UI also allows the Role field to be edited, automatically saving data back to the intersection. The joys of implicit joins.

This behaviour is supported everywhere there’s a many-to-many parent-child relationship. When defining a new field, the Join property is bound to the list of joins defined for the business component. So the trick is to create a basic join to the intersection table – no need to specify a join spec or any details – then you can define your new fields and, when you’re done, delete the join. Siebel will recognise it as an implicit join and pick up data from the intersection record used to retrieve the child.

June 14, 2007 at 9:17 am

URL Controls

There are a couple of options to display a hyperlink to an external site from Siebel 7. The simplest is to set the following properties on an applet control:

– HTML Type: URL
– HTML Display Mode: EncodeData

This will URL-encode the field and wrap it in an HTML link tag <a></a>. As long as your field contains a valid URL, you’ll have a working hyperlink. In the high-interactivity client the URL will by default open in a new browser window; to support the same behaviour in the standard interactivity client, set:

– HTML Attributes: target=’_blank’

This approach doesn’t allow you to change the link title, however, so if it’s a big ugly URL you’ll have a big ugly field displayed in your applet. As an alternative, you can hand-code the hyperlink. Set the calculated value on your field as follows:

“<a href=’‘ target=_blank>Your Link Text</a>”

(Note the enclosing double-quotes.) Then set up your applet control:

– HTML Type: Field
– HTML Display Mode: DontEncodeData
– Runtime: Y

This tells the Siebel UI to interpret the contents of the field as raw HTML – so you see your hyperlink exactly as constructed.

June 5, 2007 at 9:18 am 1 comment