יום ראשון, 26 בפברואר 2012

Error Messages in SI Mode


Time again to stimulate your grey cells. Architectural differences between SI and HI clients are well documented. Recently working with SI application we observed a strange thing. SI client handles processing of error/Validation messages from BC layer and UI layer in different ways.

While invoking RaiseErrorText from BC error message was displayed on the top view bar but while invoking the same from applet was taking to different error web page resulting in context loss. User has to click Back button to go to previous page.

Same holds true for DVM messages. While invoking from BC layer using run time events the error message is displayed on the same view but while invoking from UI layer error message is displayed in different error web page. I am not able to break this thing why it behaves differently on different layers. Any insight/thought on this would be of some help.

Happy Debugging!!



יום ראשון, 19 בפברואר 2012

Disabling button in SI Mode


Working with SI applications can be as good as playing with fire. Recently we faced an issue when some naughty users clicked button multiple times resulting in underline action getting executed multiple times. As in case of SI applications, if the method is taking time to execute then button is not disabled it remains active giving end user an impression of nothing-is-happening. So user may end up clicking the button multiple times.

The only way to prevent multiple clicks is to disable button as soon as it is clicked. Fortunately there is an article on support which provides solution to achieve the desired but a scripted one. Following piece of code can be used to disable button after click.

function WebApplet_ShowControl (ControlName, Property, Mode, &HTML)
{
    if(ControlName == "SubmitButton")
    {
      if(Property == "FormattedHtml")
      {
          var index = HTML.indexOf("onclick=");
          var start = HTML.substring(0,index+9);
          var end = HTML.substring(index+9);
          var func = 'setTimeout("a()",10);; ';
          var funcA = "<script>function a(){";
          funcA += "var c = document.getElementById('SUBMIT');";
          funcA += "c.outerHTML='';";
          funcA += "} <script>";
          HTML=start + func + end + funcA;
      }
    }
}
However, we wanted to implement the solution by configuration and yes, we were able to achieve by using following piece of code in "HTML Attributes" property of button.

onclick="function fn(){disabled=true;}setTimeout(fn, 100);"

The idea is to diable button once it is clicked and making a recursive call after 100 milliseconds by using setTimeout function so that it gives user an impression that button is disabled. There could be alternates to achieve this. Again piece of advice/comment is always welcome. 

Happy Crunching!!

יום שלישי, 7 בפברואר 2012

Cosmetic UI Changes


Cosmetics may be a weapon of women but it is always better to look over rather than over looked. Siebel OOB comes with a soothing look and feel but still it may not fit into coloring schemes. In this post we will discuss about some basic UI modifications.

Statutory Warning: Please take backup of existing files before you play around.

1 - Changing Oracle logo
This is the foremost change which should be done. lookout for the "CCFrameBanner.swt" template file and modify below code to suit your requirement.

<td align="right"><a href="http://www.oracle.com" target="_blank" ><swe:image name="POWERED_BY" category="HTML Control Icons"/></a></td>

Change this code to below code

<td align="right"><a href="http://YOURURL.com" TARGET="_blank"><img src = "images/YOURIMAGE.jpg" height ="30"></a></td>


2 - Changing login screen
In order to determine the positioning of the items on the login screen or change the graphics that appear on the login screen one has to modify web template file "SWELogin.swt". This web template file determines the layout of the web page items on the login screen.

3 - Changing Menubar color 
The menubar color can be changed by changing the jmenubar.js file.Background color of menubar is hard coded in the "jmenubar.js" file. Below attributes can be changed for desired appearance.
var MENUBAR_BGCOLOR = "#FF6633";
var MENUBAR_TEXTCOLOR = "#FFFFFF";
var MENUBAR_HIGHLIGHT_COLOR = "#FFFFFF";
var MENUBAR_SHADOW_COLOR = "yellow";

4 - Changing Screen Bar 
The screen tab are now implemented as java controls in Siebel 7.8. Their appearance is determined by the settings in the file jctrls.css. Below section controls the appearance of screen bar.
.clsScreenBar
{
   NC-TAB-BACKGROUND-COLOR: #333399;
   NC-TAB-BACKGROUND-COLOR-SELECTED: #F0F0F0;
   NC-TAB-BACKGROUND-COLOR-MOUSE: #F0F0F0;
   NC-TAB-FONT-COLOR: #FFFFFF;
   NC-TAB-FONT-COLOR-SELECTED: #333399;
   NC-TAB-FONT-FAMILY: Arial;
   NC-TAB-FONT-SIZE: 15;
   NC-LINK-FONT-FAMILY: Arial Black;
   NC-LINK-FONT-SIZE: 18;
   NC-LINK-FONT-COLOR: #333399;
   NC-LINK-FONT-COLOR-SELECTED: #333399;
}

5 - Changing view bar
Their appearance is determined by the settings in the file jctrls.css. Below section controls the appearance of view bar. 
.clsSubDetailView
{
   NC-TAB-BACKGROUND-COLOR: #466FB4;
   NC-TAB-BACKGROUND-COLOR-SELECTED: #F0F0F0;
   NC-TAB-BACKGROUND-COLOR-MOUSE: #000000;
   NC-TAB-FONT-COLOR: #FFFFFF;
   NC-TAB-FONT-COLOR-SELECTED: #333399;
   NC-TAB-FONT-FAMILY: Tahoma;
}

6 - Changing Background Color of selected row 
Again this could be easily achieved by changing settings in jctrls.css file. Below section controls it.
.clsJLCMain
{
JBACKGROUND-COLOR-ROW-ACTIVE: #FFFFFF;
}


One can definitely change applet and view layouts by changing underlying web templates.There is no second chance to create first impression so better have a good looking UI. 

Happy Beautification!!

יום חמישי, 2 בפברואר 2012

Distinct Property


Distinct clause is one of the powerful clause in SQL which helps to remove duplicates from the result set. In real time scenarios we are bound to have requirements which involves updates or removal of distinct records.



Siebel provides a,how-i-missed-type, "Distinct" property on business components that helps us to achieve just this. Business components in siebel 7.8 and higher have this property. Setting this property to TRUE allows the equivalent of a select distinct query as it suppresses system fields.This property enforces a "DISTINCT" clause on all fields present in the BC, which may lead to errors during execution. It is better to clone business component and include only fields which are required in distinct clause.

Document ID 867149.1 in support web explains this siebel virtue in detail.

Happy Crunching!!