Thursday, July 31, 2014

Oracle BI 11g: I Don't Like Mondays

To be honest, I like Mondays. And it's Thursday. But it made such a catchy title ;-)

This article will show you how to hide Oracle BI 11g Presentation Layer objects on Mondays, hence the title.

Introduced in OBI 11.1.1.6.2 (or so), we can define a conditional expression to control whether a presentation layer object (Subject Area, Presentation Table, Presentation Column) should be visible to the end user or hidden.

The property is called Hide object if. As per the documentation, we can use the field in three ways.

  • Enter a constant: 0 (zero) will display the object. Any non-zero value will hide the object.
  • Use a variable: Initialize a (session) variable and use it in the expression. Again, if the variable value is 0 (zero), the object will be visible, otherwise it will be hidden.
  • Provide a comparison: You can use a limited set of functions and operators to evaluate conditions. For example, the following expression will be 'true' (or non-zero) when the current day is a Monday.

DayOfWeek(Current_Date) = 2

The Current_Date function returns the current date and the DayOfWeek function extracts the number of the weekday (starting at 1 for Sunday, hence 2 for Monday).


In the above screenshot, you can see that I entered the expression for the Products presentation table. It obviously was a Monday because in Answers (aka 'Analysis Editor') the table is actually not visible.

Summary

The Hide object if expression allows Oracle BI developers to construct conditional logic to hide presentation layer objects.

have a nice day

@lex

Monday, July 28, 2014

Siebel Nostalgia: 5 Years Ago

It has become a habit of mine to provide you with some 'blasts from the past' from time to time. This is not because I have grown lazy (believe me, there's a lot of writing these days ;-) but to serve the 'younger' generation of Siebel Essentials followers who might not have had the opportunity to read all the posts (does anyone ever scroll down that far to the blog archive?).


5 years can make a big difference in the IT world and there's much that becomes obsolete. But when I was looking for a nice article from July 2009, I had a hard time deciding which one I should elicit for a re-post.

So I thought I let you pick and choose from a list of well-ripened articles from the summer of 2009 and let you decide which you like best. I picked the ones which are still relevant today (most probably).
happy reading

@lex

Thursday, July 24, 2014

Asynchronous Business Service Invocation in Siebel Open UI

With Innovation Pack 2013, the Siebel Open UI API provides the possibility to invoke business service methods (and methods in general) asynchronously.



This is documented (here too) and my friend Neel from Siebel Unleashed was the first to blog about this exciting feature.

Today I would like to share with you how I put this new feature to good use. Do you remember the "Sortable Screen Tabs" series from last summer (has it really been one year already)?

Recently, I was revisiting the code and the way it invoked the business service which modifies the Tab Layout data. This is the "original" code to instantiate and invoke the service.

var oSvc = SiebelApp.S_App.GetService("AHA Tab Layout Service");
var inPS = SiebelApp.S_App.NewPropertySet();
var outPS = SiebelApp.S_App.NewPropertySet();
inPS.SetProperty("sTabs", tabarray.toString());
outPS = oSvc.InvokeMethod("SetTabLayout", inPS);

When I look at the above code today, I must confess it is pretty traditional. The code wouldn't be any different in a browser script from 2002, and even in eScript, the concept is the same albeit with some minor differences.

My latest code version looks like this:

var oSvc = SiebelApp.S_App.GetService("AHA Tab Layout Service");
var inPS = SiebelApp.S_App.NewPropertySet();
inPS.SetProperty("sTabs", arrTabs.toString());
//nothing new until here, but where's the output PS?
if(oSvc){
   var config = {async:true,scope:this,selfbusy:true};
   //wait a minute, what's this?
   oSvc.InvokeMethod("SetTabLayout", iPS, config); //but how?
}

Needless to say, it still works but the user can continue to work even while the business service is still running. The new and exciting stuff is the configuration object which we can use to pass runtime information to the Open UI proxy layer which sends the AJAX request to the server.

This config object has the following properties (Bookshelf documentation here):

  • async: this is the magic one. When set to true, the invocation will be done asynchronously, allowing us to continue with the remaining code immediately. When set to false, we will have to wait (synchronous invocation) until the service returns.
  • scope: set to 'this' always (so says bookshelf).
  • selfbusy: display the 'busy cursor' on the screen (false) or not (true).

As you can see I used the above properties in my code to invoke the business service method asynchronously without displaying a 'busy cursor' so end users do not notice anything.

Call Back Later

But the goodness does not stop here. My example business service does not return anything. But what if you have to pick up the output property set and process it? Clap your hands for the callback functions.

Let's have a look at the following config object:

var config = {};
config.async = true;
config.scope = this;
config.cb = function(){
   var outPS = arguments[2];
   if (outPS!== null){
      //parse output property set
}

The cb ('callback') property defines a function which will be invoked when the method invocation is complete. For business service method invocations we can pick the output property set from the arguments array (it's the third array item, hence the [2] index).

And there's even more...

For error handling, use the errcb property (similar to cb) to specify a function which will be invoked when the AJAX call fails.

The documentation also mentions an opdecode property but is pretty stumm about what it does exactly (decode or not decode the AJAX reply).

Finally, there's the mask property which (when selfbusy is set to false) allows us to control the screen masking during the method invocation.

Summary

Applet methods, business service methods, you name it. The Siebel Open UI framework is truly innovative and allows developers to gain complete control over what happens when.

have a nice day

@lex

Monday, July 21, 2014

BI Publisher Advanced RTF Techniques

Whenever I have the opportunity of teaching BI Publisher, be it the "stand-alone" BI Publisher Fundamentals class or the Siebel BI Publisher Reports class, I especially enjoy the chapters on RTF Templates.

As an extra service to my students (and now to the greater public), I have put together a simple RTF template which showcases more advanced RTF template techniques. This file and other hopefully useful examples are available here.

Ever wanted to have a BIP report with table of contents?

When you download the archive and open it, you might want to start with the BI Publisher Advanced Template Formatting.rtf file and open it in MS Word. If you have BI Publisher Desktop (aka Template Builder for Word) installed, you can load the sales.xml sample file and start generating previews (see the PDF output above).

The RTF file contains several examples and explanations such as:
  • Table of contents / bookmarks
  • Sub-templates for header and footer (uses the HeaderFooter.rtf file which must be reachable)
  • Working with shapes
  • Checkboxes
  • Conditional formatting
  • Page totals
  • Dynamic Excel output
  • Variables
The archive also contains example output files in case you don't have access to BI Publisher Desktop. In addition, you will find several other example files in the archive.

Make sure you also check out the splendid BI Publisher tutorials and other resources which I compiled here.

have a nice day

@lex

Thursday, July 17, 2014

Siebel Open UI Developer's Handbook - Announcement

It is not without some parental joy that we announce a new Siebel CRM book to be published this winter.

Together with three of the most distinguished Siebel Open UI experts, this humble writer is currently working on putting together useful information and case studies for the upcoming book:

In this book, you will:
  • Learn all about the Siebel Open UI Architecture
  • Learn to create custom Presentation Models and Physical Renderers
  • Learn advanced techniques for Open UI customization
  • Understand how to apply custom styles and themes
  • Customize and deploy Siebel Mobile Applications
  • Integrate Siebel Open UI with external applications
  • and more (see below)
As a frequent reader of this blog, you know that the book authors are truly committed to sharing information:
  • Duncan Ford
  • Alexander Hansal
  • Kirk Leibert
  • Jan Peterson
We expect the book to be published in Winter 2014/2015 and plan to align it with Siebel CRM Innovation Pack 2014. We are happy to announce as well that you can participate in shaping the book's content and get notified when it is available by filling in a simple form.

Please feel encouraged to grab this opportunity and create a book designed by and for the Siebel developer community.

have a nice day

@lex

Tuesday, July 15, 2014

Siebel CRM Patchset 9 is Available

Last Friday, Oracle has made Siebel Patchset 9 (8.1.1.11.9/8.2.2.4.9 - IP 2013) for July 2014 available on My Oracle Support.

The "Readme" document (Oracle Support login required) lists the bugs resolved which are/were in the following areas:
  • Open UI
  • Mobile Applications
  • Marketing
  • UCM
  • Others
Naturally, Open UI and Mobile Applications got a lot of attention from the good people at Oracle. So if you're missing some functionality or encounter bugs: Time to patch!

have a nice day

@lex

Monday, July 14, 2014

ec4u Releases Application Composer for Siebel Open UI

Earlier this year, I have been invited by ec4u expert consulting AG Germany to take part in a workshop. My job was to deliver Siebel Open UI training as well as discuss a new tool that ec4u planned to implement.

The tool should enable administrative users to quickly change the appearance of list and form applets in Siebel Open UI without having to use Siebel Tools. I was intrigued and inspired by the presentation of the tool during the workshop.

Just recently, ec4u has released the new tool, which now goes by the name 'Application Composer for Siebel Open UI'.


As we can learn from the fact sheet, the Application Composer provides an administrative view (and underlying data model) to store personalization/customization metadata for list and form applets.

Administrators can for example define which applet controls shall be hidden for certain responsibilities, positions, languages or organizations.

It is also possible to make fields mandatory, read-only or change the labels at runtime.

Form applet with changes made by ec4u Application Composer
ec4u makes the solution available to Siebel CRM customers and packages it with a deployment tool and consulting services.

For more information, please contact Markus Schneeweis.

have a nice day

@lex

Tuesday, July 1, 2014

Siebel UI Innovations

Here is some amazing OpenUI experiments. 

is it windows 8?? no its siebel 

1. 



2. 



3.


4. 


5. 


6.


7.