Debugging Siebel eScript - Write Property Set to file
How to see the SADMIN / SIEBEL password un-encrypted!
In-process reentrance is NOT supported for JMS, MSMQ and MQ Series transports
How to change default location of logs on Siebel Server !
Date functions in Siebel eScript
Here are some methods built in eScript that perform these operations.
Case Insensitive Query in Siebel by using LIKE operator !
Case insensitive query in Siebel means to query the database records using the LIKE operator in SQL. This type of SQL tends to be slow as they return more records than the equal (=) operator.
Get Workflow Instance Id from the process property value!
As most of developer would know that there is no way in instance monitor view to identify the workflow instance for specific object id or process property value.
Alternate use of List Of Values
How to generate random number in Siebel eScript?
Accessing Field in Siebel Browser Script
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.)
Siebel Message Property Set
On the other hand XML Hierarchy contains property name from the Integration Component XML Tag.
Mapping between Siebel Property Set and XML
XML as we all know is the structured data trasfer language, and property set is set of variables contain values in form of string name value pairs. There are lots of vanilla services available in siebel tools that converts the property set in to an XML or write the property set to a file.
Let see how the property set is converted into an XML.
Similarly an XML contains:
Siebel converts
Type of property set to XML Element ,
Properties are added as Attrbutes,
Value is kept as Value of the Element
and child properties are added as child elements in XML.
This can be demonstrated by following code:
It will produce an XML output like this:
Workflow Revision Failed : SBL-DAT-00393: An end of file error has occurred.
Extending Column in Siebel : Video Tutorial
Tom Siebel at Stanford University: Glory Days Long Gone for I.T.?
Have a look what he has to say to new entrepreneurs @ stanford.
Description
Tom Siebel, Chairman of First Virtual Group, paints a picture of the dramatic explosion of the dot-com boom; an era, he recalls, where "risk was a business problem, and not an anathema." With a 17 percent growth rate - an increase unprecedented before or since, says Siebel - the business opportunities of the 1980's era appeared to be unlimited. Changes in technology were total replacements, rather than incremental, meaning that every client had to buy and keep buying or find themselves lagging into obsolescence. He credits this free market flow with conjuring a revolution in computing and communications.
Description
Most of the promise of post-industrial society has been realized, says Tom Siebel, Chairman of First Virtual Group, and all of the great technological advances and development of great companies are behind us. The tech sector is hovering around a mere three percent annual growth rate, says Siebel; keeping it just on par with the rate of current economic growth.
Description
The globe's human population is currently around six-and-a-half billion, and it is slated to reach nine billion people in the next twenty years. Tom Siebel, Chairman of First Virtual Group, points out that this sharp increase will propel a worldwide demand for food, water, energy, and healthcare. And, he adds, the business opportunities in providing these essentials are unparalleled.
Description
Facing the likelihood of carbon reporting and carbon tracking that will be necessary with upcoming cap and trade legislation, Tom Siebel, First Virtual Group Chairman, announces a new initiative to help reduce the cost of reporting on an enterprise's carbon footprint - a tool that he foresees will serve a $3 trillion market in 2020.
Description
Forward-thinking entrepreneurs should consider government restrictions in their long-term business planning, says First Virtual Group's Chairman Tom Siebel. They should also be aware of the opportunities that exist through population growth and a growing demographic of the aged. And they should be thinking about solving the energy problem, and the provision of clean food and water for the planet.
Adding Button on Applet – Part 2
How to restrict length of an attribute - Part 2
Attribute selected is an event which gets triggered before any attribute's value is updated, this events sends the information of the attribute and the value as property set argument.
Now if this property set is available as argument then i think writing script to constrain its value is not a big task.
I have created this snippet, it worked in my case hope it works for others also.
function Cfg_AttributeSelected (SelectedAttribute) { var temp = SelectedAttribute.GetChild(0); var sStr = temp.GetProperty("NewVal"); TheApplication().RaiseErrorText("Error"); }
Siebel Product Configurator: How to restrict attribute length?
Read only Siebel Product Configurator.
Requirement is to make the Configurator session read only conditionally, so that user should not be able to edit the product configuration but he should be able to view the configuration inside the configurator.
Solution
This requirement can be implemented by editing vanilla/custom JavaScript libraries of the Product Configurator. The most of the work in showing the UI is done by cfgui.jsfile.
Cfgui.js is a javascript library that converts the swe tags to the HTML tags that shows up as UI in siebel application.
For Example:
Here is one code in the swe template :
< id="swe:IncPAId+853" cfgfieldname="AttValue" cfghtmltype="CfgTextBox" forcerefresh="Y" cfgjsshow="showTextBox" cfgjsupdateselection="updateSelectionInfoForAttribute" >
now in cfgui this swe code is converted in to HTML like this:
innerHTML = " < input type=\"teext\" " + "value=\"" + displayValue + "\" " + "id=\"GRPITEM" + _pipe + grpItemId + _underscore + "ATTTYPE" + _pipe + "TEXT" +"\"" + " onchange='processInput(\"GRPITEM" + _pipe + grpItemId + _underscore + "ATTTYPE" + _pipe + "TEXT" +"\", \"\", \"text\")' />";
now when you closely go through the code, you will create the following string at the output:
< type="”text”" value="”Somevalue" id="”generated" onchange="”processInput(“Some arguments") >
and that looks like very basic html snipet, which can be edited to make control read only by adding disabled=true in the js code tag.
To make it work conditionally, we can check for the some profile attribute inside the js file like this:
var readonly = top.theApplication().GetProfileAttr("ReadOnly"); top.theApplication().SetProfileAttr("ReadOnly","N"); if (readOnly == "Y") innerHTML = ""; else innerHTML = "";
Siebel: Adding Button on Applet - Part 1
Debugging Siebel - Creatng custom logs using Clib.fputs
When it comes to debugging Siebel application, no one beats the Siebel vanilla logs (events logs governed by environmental variables), but every developer use his own techniques to debug his configuration.
In this post I am discussing the way I debug my things.
I add following piece of code at every event that I want to monitor, and add my required parameters to it, and then just compile all the objects and run the scenario.
var date = new Date();
var fp = Clib.fopen("d:\\log.txt","a");
Clib.fputs("\n" + " BCPreInvokeMethod" + " " + date,fp);
Clib.fclose(fp);
In above code first line creates a date object that give the timestamp that will be written in the log file. Second line creates a file pointer that opens file/creates file in write mode. In next line Clib.fputs function writes string to the file.
We can now simply alter string according to our requirement, and get the exact output.
This way i get exact view of events and parameters in a flat file, that makes it really easy to understand the actual problem. If you are trying this code then you will get output something like :
PreInvokeMethod SetAspectSun Aug 02 2009 01:52:19
PreInvokeMethod SetAspectSun Aug 02 2009 01:52:19
PreInvokeMethod SetDefaultDurationSun Aug 02 2009 01:52:19
PreCanInvokeMethod DeleteRecordSun Aug 02 2009 01:52:19
PreCanInvokeMethod ShowQueryAssistantSun Aug 02 2009 01:52:19
PreCanInvokeMethod ToggleListRowCountSun Aug 02 2009 01:52:19
PreCanInvokeMethod ExecuteQuerySun Aug 02 2009 01:52:19
PreCanInvokeMethod GotoNextSetSun Aug 02 2009 01:52:19
PreCanInvokeMethod GotoPreviousSetSun Aug 02 2009 01:52:19
PreCanInvokeMethod NewQuerySun Aug 02 2009 01:52:19
PreCanInvokeMethod NewRecordSun Aug 02 2009 01:52:19
PreCanInvokeMethod PositionOnRowSun Aug 02 2009 01:52:19
PreCanInvokeMethod UndoQuerySun Aug 02 2009 01:52:19
PreCanInvokeMethod UndoRecordSun Aug 02 2009 01:52:19
PreCanInvokeMethod WriteRecordSun Aug 02 2009 01:52:19
PreCanInvokeMethod ShowPopupSun Aug 02 2009 01:52:19
PreCanInvokeMethod GetBookmarkURLSun Aug 02 2009 01:52:19
PreCanInvokeMethod FileSendMailSun Aug 02 2009 01:52:19
PreCanInvokeMethod FileSendFaxSun Aug 02 2009 01:52:19
PreCanInvokeMethod FileSendPageSun Aug 02 2009 01:52:19
It can be really helpful if you working on a new siebel application and doesn't know how things work.
Although it takes longer time to get the output, but it really helps when all other options fails.
Siebel Shortcuts!
Similarly for Web client we can have similat auto login. This way you can create mulple icons for multple dbf's .. These icons when clicked will take direclty tools or web client without any need to log in.
Usually most of developer adds thin client URL in IE's favourites. We can also customise this URL to take us direclty to the aplication without showing the loging screen.
Editing conflict page of Siebel Product Configurator
Rquirement:To remove proceed button from the conflict page of Siebel Product Configurator.
Removing vanilla buttons from the Product Configurator UI
<td nowrap>
<swe:control id="swe:Cancel" CfgUIControl="Cancel" CfgHtmlType="MiniButton" InvokeMethod="PrevView"/>
</td>
<swe:control id="swe:Save" CfgUIControl="Save" CfgHtmlType="MiniButton" InvokeMethod="SyncInstance"/>
</td>
Browser Script on fly!
3.
Receiving messages from JMS server
Setting up Siebel and JMS Integration!
Structure of Siebel Products
I have tried to depict it as a diagram. A product modelled in siebel is composed of Attributes (which are inherited from the product classes) and child products that have thier own set of attrbutes and can have their grand child products also.
This whole structure is created using products relationships and classes. Scripts and Constraints control the way the user can select the product and order it.
At first look it seems to be very simple. But it needs lots of configuration to show a product inside the configurator and enforce all the business rules in it.
I will take an example of an a dummy product and show how to configure it from modelling to Displaying it on UI in my coming posts.
Exploring Siebel Product Configurator
For those who are completely unaware of this new terminology should look at Neel’s Blog for a beautiful explanation. It is basically a tool that is built inside the Siebel that allows users to configure the product using graphical interface. It enables user to configure the products based on business rules and moreover the product compatibity rules.
For Example If a product is visible to a partner and hidden from other then it’s a business rule. But there are some rules specific to the products. For example if user is configuring a notebook computer then he must buy power supply compatible to the model selected, or if user have selected Windows Vista then computer must have at least 2 GB memory in it.
Product Configurator is closely coupled Siebel Pricing engine. It helps to show the price of the product inside the Configurator immediately on selection of any product in the Configurator.
Before going in to detail of configuration one can refer Neel’s blog part 2 on product configurator.
Few words of caution for new Product designers:
1. As divisions in Siebel, product are once created can’t be deleted in the Siebel although they can be made hidden in the application.
2. They are completely built inside the Siebel Client, not in Siebel tools.
3. They are migrated from one environment to other using Workspace import export utility.
4. To make any product visible in the system (visible in the pick applets), designer must release product once and end date of release should be valid.
5. There are several ways to make product hidden in the system, one of them being the orderable flag. If it is unchecked product won't be visible in the pick applet across the applications.
Next Post: How to create and configure products in Siebel?
Introduction to Siebel 8 Task Base UI
How to use output of Business Service Simulator?
But have you ever wondered that can we use the output arguments of the simulation again as input to the next simulation?! Even i didn't really thought about this earlier, until in Acceptance test of our project i needed to reproduce the behavior of one my workflow in controlled manner.
At that time one of my colleague suggested me to use Move to Input in built functionality of the Siebel Business Service Simulator.
Lets see how it is done:
1. Go to Administration Business Service Screen and Simulate the first service.
In my case I first simulated EAI Siebel Adapter Service Query Method to generate Siebel message..
2. You will then see a record created in the grandchild Applet containing the output properties of the business service. Now if you want to use this output as input to another business service then there is one way to copy and paste value into the input or to use Move to Input button!!!
This button copies the output property set record to the input, and then these can be used to simulate another business service.see screenshot:
This is becomes very useful if our service is expecting derived inputs. By use of this we can simulate certain steps of workflow on the run.
Please let me know if it helps anyone. :)
Other Siebel Blogs
-
How to create cookies from server side? - Yes, you read it correctly, you can create cookies in the browser from the server side, and get your browser script to access them. This is enabled via Web...4 years ago
-
Use Open UI to Dynamiclly Manipulate Detail Tabs - In a screen with many view tabs it may be useful for process automation to minimize clicking on detail tabs if user does not need to navigate there when no...5 years ago
-
Oracle Database 12c In‐memory feature for Siebel Reporting and MIS Queries Optimization - Siebel database is optimized all DML are working fine with awesome performance but still we receive complaints when we fetch reports (few columns but fetch...7 years ago
-
Elastic List Applets @ IP 2015 - Before you start wondering, I have not accidentally written 2016 as 2015 in the title. If you are following the Siebel Updates then you would by now know t...8 years ago
-
Auto Fix the Product structure in Quote/Order Line Items - There are situations when due to some business requirements you make changes in the existing Products/Promotions (configured in Administration – Products s...8 years ago
-
Asynchronous Workflow With Real User Login - *Background* A common requirement amongst many Siebel customers, is to have the ability to run an asynchronous workflow under the real user's login. T...9 years ago
-
Change delimiter in MS Excel on Windows 7 - Hi guyz, This post is not related to Siebel. So, if you are not interested, please feel free to walk off right now 😉 Data Migration is a very important as...9 years ago
-
Siebel Task UI (TBUI) - Lessons Learnt - Part 7 - This is my seventh article discussing lessons learnt during proof of concept of the new Siebel technology: Task UI (TBUI).13 years ago
-
-
-