Showing posts with label Siebel Configuration. Show all posts
Showing posts with label Siebel Configuration. Show all posts

Accessing Field in Siebel Browser Script

Accessing a field in browser script can a bit pain, for someone who is new to the browser scripting. There is no direct way to access the field in browser scripts that are not shown on the applet at run time.

This is because the browser script works on the DOM elements not the Siebel Objects. Siebel to support its syntax, publishes some of the objects and methods in the browser script.

There is a workaround to access field in the browser script:
1. Add a control in the applet with the required field.
2. Set the HTML Type of control to Hidden.
3. Add this control on the list applet as column or on the header (where buttons are placed) of the form applet.
4. Create usual script to GetFieldValue. Now you will be able to get the value inside the script.

There are also lots of restriction in the browser script as compared to Server Script, some of them being:
  • TheApplication() in eScript is converted to theApplication() in JavaScript.
  • We can not use theApplication().GetBusObject(), can only use theApplication().ActiveBusObject();
  • Cannot Get and Set Field values that are not shown on the UI.
  • Cannot use InvokeMethod("LookupValue") (this creates lots of troubles in developing multilingual prompts.)

Adding Button on Applet – Part 2

In part one of this post I have discussed how we can enable a button on applet and call workflow or service from it using scripting.
But Siebel user properties provides us the way to achieve the same behaviour without scripting. There are two or more solutions to it.

Solution 1 : Using CanInvokeMethod User Property
1. Create control on applet with method invoke property set to required method name.
2. Create an applet user property “CanInvokeMethod to activate this button conditionally.
3. Add an “NamedMethod” User Property on BusComp or Applet to invoke Business Service or Workflow of your choice.

Solution 2 : Using EventMethodMethodName User Property
1. Create Control applet with method invoke property as : EventMethodMethodName. Where Method Name is your orignal method.
2. Add “EventMethod Enabled” user property on Buscomp to conditionally activate the button.
3. Create a runtime event on PreInvoke of the Buscomp to invoke service or workflow.

Both of these solutions are suitable for our basic requirement of adding buttons on Siebel Applets. 

Please note that these user properties works on CSSBCBase BusComp class and CSSFrameListBase applet class. These are not defualt classes when you create new objects.

Siebel: Adding Button on Applet - Part 1

This is one of the basic thing that we do in our siebel application. And every developer prefer his own way of configuring it.

From my past experience there are two basic requirement for custom buttons :
1. It should invoke a Workflow or Business Service.
2. It should become Active/Inactive  based on certain condition.

Based on these requirements first solution that come to our mind is with a script in Pre_CanInvoke of applet, but there are lot more options available in Siebel for this requirement.

First lets see how a scripting can solve this problem

Solution1: Scripting Applet and BC
1. Create Control in Form or List Applet, Set its method invoke to name of the method.
2. Place it on the web layout of applet.
3. Write following script on applet pre can invoke event:

4. Write the actual code to call service or workflow in Applet pre invoke or BusComp PreInvoke.

This trick work always irrespective of the application or interactivity of the application or the applet type.

But there are options available in Siebel that can be used to  achieve this functionality without use of scripting. We will examine other options in my next post!

Other Siebel Blogs

siebel-admin-l @ IT - toolbox

siebel-dev-l @ IT - toolbox