Monday, January 07, 2013

Siebel Open UI Architecture (Updated)

Welcome back to the Siebel Essentials blog and to a hopefully wonderful New Year!

So, how many of you have spent the holiday season hunched over your laptops fiddling around with the latest gadget in the Siebel department? I know I have ;-). In what can only be called splendid seasonal timing, Oracle released Siebel CRM patch set 8.1.1.9 (and 8.2.2.2) just before Christmas to please the Siebel geeks around the globe.

I believe (and hope), many Siebelians have so far mastered the challenge of locating, downloading, extracting, installing and applying the patch so they can marvel at the new browser independent Open UI as an alternative to Siebel's own somewhat grown old ActiveX-based High Interactivity UI.


It sure looks good, but how does it work?

Today, I would like to open the hood and dive a little bit deeper into the architecture of Siebel Open UI.

1. Web Templates

Let's start with a look at a typical applet definition in Siebel Tools. The interesting bit is that you will not see anything new or changed at the applet level. Neither at the View or even the Web Templates object definitions can we spot any difference to previous versions. That is quite good news but...

...where's the change?

The answer is that there is now a new folder named OUIWEBTEMPL within the WEBTEMPL directory. When the magic object manager parameter EnableOpenUI is set to True, then the application will load the web template files from the OUIWEBTEMPL folder instead of the original folder.

At first inspection the two versions of web templates, for instance the CCAppletList_B_EL.swt file are strikingly similar, albeit with a few differences mainly in the Open UI file for the new connected mobile applications.

Customizing web templates is still possible. However, we must now copy the file to the CUSTOM subfolder and modify the custom copy. The application simply looks into the CUSTOM folder first and falls back to the parent folder if it doesn't find the file.

2. The Client Framework

The following diagram is taken from the official Oracle documentation:

The Siebel Open UI framework. Source: Siebel Bookshelf - Configuring Open UI Guide

The Open UI framework is completely based on the traditional Siebel metadata, so there are no changes whatsoever to the underlying business component or applet definitions in the repository / SRF file. This is of course important for the upgrade assessment. Every customization on the repository level (including browser scripts) will remain functional notwithstanding the one or other oddity (make sure you include My Oracle Support in your research when you encounter problems).

What the Siebel engineering team has created is a JavaScript framework which we can find in the PUBLIC/_language_/_build_/SCRIPTS/siebel folder. Together with JavaScript files in the /SCRIPTS/3rdParty folder (obviously hosting files provided by third parties - most prominently jQuery) this forms the Open UI client framework per se.

The Client Proxy, Presentation Model and  Physical Renderer sections in the above diagram represent this part of the framework.

Let's have a closer look at this triplet:

The proxy objects represent the server-side repository objects such as business components or applets in the thin client. As such they provide access to the data and methods as well as the scripting API but cannot be modified themselves.

The presentation model is a single file or set of files which capture and control the logic and client interaction (such as field value changes or method invocations). For customization purposes, we can create our own presentation model files and bind them to the proxy objects. More on how to actually do that will be demonstrated in a future post, so stay tuned. You can (and should) take a look at the Configuring Open UI Guide to learn how a presentation model file looks like.

The physical renderer is implemented in JavaScript as well and - as the name suggests - responsible to render the information from the presentation model into a nice and friendly user interface. Naturally, there is a lot of customization possible, which involves creating your own physical renderer files similar to the example in the official documentation.

Finally, there are CSS style sheets which reside in the usual folder on the web server. As we will explore in a future post, Open UI is very handsome in creating your own skins and allowing the user (or a script) to switch styles.

Summary

Based on pure JavaScript provided by Oracle or third party engines such as jQuery, Siebel Open UI has a truly open architecture. The UI rendering framework is an alternative to existing frameworks such as HI or SI and does not change the underlying classic Siebel business logic and UI architecture.

More Information

The good people at Oracle University spent extra hours in the office on new year's eve to publish some brand-new and completely free(!) tutorials on Siebel 8.1.1.9 and 8.2.2.2. You can find these tutorials here.

Update

For those who want to learn about Open UI directly from the lips of Siebel engineering, check out the brand new Siebel Open UI blog straight from the Open UI development team.


have a nice day

@lex

4 comments:

Anonymous said...

Very nice summary Alex. We in the Siebel Open UI development team at Oracle have started a blog. I will not link to it here without your permission, but just wanted to drop the word. Let me know if you want the link ;) .

Alexander Hansal said...

Hi all,

thanks for your comment and the great contribution to Siebel's immediate future!

good to see your blog. I have added it to the blog roll (Siebel section). Please keep up the good work and keep bloggin' ;-)

have a nice day

@lex

eproo said...

Hmm... I'm a little bit confused. JavaScript! How does this works, as for whole time I was thinking that browser scripts is JavaScripts, so how JavaScript can be something new? Or does this is something different?

Alexander Hansal said...

Hi eproo,

of course, browser scripts are written in JavaScript as well. The difference is that they are associated to objects in the Siebel Repository.

When you extend Open UI with JavaScript, there is no repository object directly associated with the script.

But still, both types of script work in Open UI and are executed by the browser.

have a nice day

@lex