Extracting a sub string from a lengthy string in Siebel. What is the best solution you can think up for this typical problem? I know, I know, you and you colleagues have done this thousands of times before. But, have you ever successfully done it without using a single line of scripting?!!
Now, it becomes interesting!
We discussed about fetching the values from the active view in my post yesterday.
However, I also felt that it was a very crude way of doing it. We can only get the information we need, by writing a small script for it. Moreover, the information was very limited.
RefreshRecord() does not work in all cases, does it?
This is a very common requirement I have seen in almost all Siebel EAI implementations. We have data flowing IN and OUT of the Siebel CRM system. It is updated in the Database alright, but, how do we update the user on the UI. I am assuming a quick data interchange in Real-time using a VBC or a Web Service or something similar. Whenever we update the Database using a Workflow or a script here, the UI will not refresh automatically, and though the process would end successfully (I hope it does), the user would never come to know about the successful updation until he manually does a Query + Go on the Applet, or uses the famed Alt+Enter Hotkey.
This is a follow-up post on the post, Siebel – Looping Multiple Records – III. We are looking at possibly more conventional methods to loop through multiple records in Siebel, than the SIA BC Utility Service.
We will make use of EAI Siebel Adapter’s QueryPage method to achieve the same. Knowledge of Siebel Workflow processes is essential to understanding this post.
The QueryPage method allows us to input an additional parameter, NumOutputObjects, to define the number of records that we want to output. Why not set this value to ’1′?
Following is an outline of the Dummy Workflow I used to achieve this.
Looping through multiple records is a requirement we come across multiple times in almost all Siebel Implementations. And, I can’t recall how many times I have seen dirty scripts to achieve the objective.
I call this Part III, as we have already covered this before on GeeksBlogging@dotCOM, in the articles,
Siebel – Looping multiple records – Query and Process
Siebel – SIA BC Utility Service – Loop multiple records
“Extracting values from a tag deep down in the Hierarchy.” How many times have you come across this problem, and how many times have you wished that Siebel has an OOB method to help you extract these values?
Well, here it is. The “FINS Industry XML Query Service” in Siebel does just that. I am covering this here because of lack of documentation on the same by Oracle, and the immense use that this can be put to. This BS can save you a lot of headache of writing custom scripts to parse the entire XML Hierarchy in Siebel eScript, which can be a real pain in the neck.
This blog post will target the detailed usage of the BS, “FINS Industry XML Query Service” in Siebel CRM. This BS can be used directly in a Siebel Workflow, since this is vanilla. No scripting is needed which is as per the recommendations of Siebel Best Practices.
There are a number of HTML controls available in Siebel. One such control is the Textbox, or the Textarea. This is generally displayed as a big box on the screen having a height spanning multiple rows.
There was a requirement from my client to modify the number of rows being displayes on the Textbox. He wanted this textarea on the Applet to be 6 rows tall, such that most of the text is directly visible to the Customer Support guy using this view. I will discuss the solution that we implemented to this problem here.
In Siebel Application, whenever you navigate to a screen, the default focus of the cursor is set to the first editable field. You may have a requirement to instead set the default focus to a more commonly used field. So, whenever you navigate to that screen, the curson focus will be on the client required field first up, and the user will have to navigate to reach some other field in the applet.
This can be done easily by using a Siebel vanilla Applet level User Property called, DefaultFocus.
I had discussed about the vanilla Business Service, “SIA BC Utility Service”, method “Next Record” in my previous post. Today, I will discuss the other method that this BS supports, “Invoke Method”.
This method provides the functionality of invoking a particular method of the specified Business Component i.e. a method of that particular BC for which this business service is used for can be called using this method. This method requires two input arguments for the same:
This is a vanilla business service which provides an extensive functionality that can be used at the BC level for performing the tasks like querying and invoking a BC method. It is very useful as it provides many powerful features that can not be done through Siebel operation. One of the methods it supports is, “BCNextRecord”.
This method is used to query the records in the BC. Unlike Siebel Operation, this method provides the feature of searching the records sequentially in the queried records. It has the following arguments:
We often come across a requirement where we need to loop through multiple records satisfying a certain search spec on a particular BC.
Let’s assume a simple search spec, for eg. to update the Status of all Sales Orders to Submitted which have their Account as “Nitin Test Account”.
I had introduced the Siebel EAI Queue and its usage in my last articles. Though Siebel EAI Queue is a very good Siebel feature, there are some serious shortcomings as well. An architect would, thus, need to critically evaluate all the pros and cons before deciding to implement the OOB EAI Queue or a custom solution in a Siebel EAI project.
First let’s look at all the areas where Siebel EAI Queues stand strong.
1) No customisation needed
This is an OOB fucntionality. So, no custom coding is necessary. The vanilla BS can directly be called from the WF to help operate the EAI Queues. Custom code comes with its own sets of problems – dedicated human resources, architecting, implementing, testing, debugging, performance, scalability, expandability, robustness.