Wednesday, February 10, 2010

Invoke Outbound Webservice

Almost a year back I posted a simple outbound webservice to invoke a program in .net and get the sum of two numbers. To parse the response XML I created a custom business service and that did work as expected. But I read about Lookup method on EAI Dispatch Service recently and thought it'd parse the XML better. To try this I removed custom business service step and added a new EAI Dispatch Service step. It worked great and can update the field for response value with no scritping. Ain't that neat!!


Here is the link for the workflow..

https://docs.google.com/leaf?id=0B190QnHiknnLYmVhZjVhZjgtMDU3YS00YzhiLWFiYmQtOGViYjQxNDcyODI0&hl=en

Later

Sunday, February 7, 2010

Explain plan basics

In recent times I've been writing sql queries frequently.Sometime adding a constrain or adding a join between the tables based on index would return the results much faster.But this is based on my knowledge in Siebel schema but was wondering how would a DBA analyze an executed sql stament to optmize performance. Then came across a powerful SQL command explain plan. I think going forward I'd use this command to optmize the sql..Here is what I did to start with Explain plan command

> Created a table for explain plan ( you can find the sql statement below $oracle_home\rdbms\admin\utlxplan)

create table PLAN_TABLE (
statement_id varchar2(30),
plan_id number,
timestamp date,
remarks varchar2(4000),
operation varchar2(30),
options varchar2(255),
object_node varchar2(128),
object_owner varchar2(30),
object_name varchar2(30),
object_alias varchar2(65),
object_instance numeric,
object_type varchar2(30),
optimizer varchar2(255),
search_columns number,
id numeric,
parent_id numeric,
depth numeric,
position numeric,
cost numeric,
cardinality numeric,
bytes numeric,
other_tag varchar2(255),
partition_start varchar2(255),
partition_stop varchar2(255),
partition_id numeric,
other long,
distribution varchar2(30),
cpu_cost numeric,
io_cost numeric,
temp_space numeric,
access_predicates varchar2(4000),
filter_predicates varchar2(4000),
projection varchar2(4000),
time numeric,
qblock_name varchar2(30),
other_xml clob
);

> Commit the above change
>Executed a simple sql statment on Siebel tables with explain plan command

explain plan for select * from siebel.s_org_ext accnt,
siebel.s_accnt_postn sap,siebel.s_postn postn
where sap.ou_ext_id = accnt.row_id
and sap.position_id = postn.row_id

> Next step is to see the result in the plan table and Oracle has a sample sql statment to view the plan_table @ $oracle_root\RDBMS\ADMIN\utlxpls

select plan_table_output from table(dbms_xplan.display('plan_table',null,'serial'));

Hurray I could see the results in the plan_table ..Now I just need to learn how to read the plan_table and optmize sql queries. To be Continued... :-)

Sunday, January 24, 2010

Respository Export

I've always been wondering how complicated is it to do a repository migration. To experience that I decided to do a repository migration myself in my system. To start with the repository export was pretty straight forward. Here are the steps

Enviroment:Windows XP, Oracle 10g ,Siebel
> Created a batch file with the following set of commands
c:cd "C:\sba80\siebsrvr\BIN"repimexp -a e -c siebel -u sadmin -p sadmin -d siebel -f c:\Repository.dat -l c:\repexpimp.log

-a e repository export
-c Database instance
-u sadmin userid
-p sadmin password

Save the file as batch file and click on it.The process will start and export a repository file Repository.dat to C:\ drive .Now the repository needs to be imported to the destination instance and will post the steps for the same in the next blog. L8r

Friday, January 22, 2010

Why Workflows ?

In the last couple of projects I have used more workflow than scripting.Probably scripting has all possible ways to customize siebel application but it's always not the best way to approach. Here are MY reasons why I would not prefer scripting as my first choice for customization.The points listed below are based on what I learnt from Good Siebel folks out there or from siebel knowledge base
> Scripting impacts performance.
Most of the scripting on Business components ,applets and Business service is to create new records or query for existing records to retireve data and all these can be done from the workflow as well. Workflow or workflow policy program would peform better for these..Invoking OOB Business service from workflow always perform better than invoking it from script.
> Deployment
Any change in server side scripting would require a srf deployment and this makes it hard whenever scripting is part of major release. Usually I have seen it take sometime to staibilize big customization or an upgrade. Since workflow is based on XML, it makes small changes deployment to other environment easy.
> Fusion future.
Saw that escripting will be obsolete in Siebel Fusion version and everything will be based on Java Programming. So if you are part of new implementation less scripting would make the client life much easier.

Cons of Workflow
There are few times that you would opt for scripting and here are few reasons to list atleast off the top of my head.
> Cannot retrive the calculated field value from workflow.
>Requirements that needs to create many to many associations. Siebel has the inbuilt PickRecord() method that would establish Many to Many relationship.Same is possible in wokflow as well by having a BC on intersection table and creating the aassociation. But this is not RECOMMENDED by Siebel.
>Some escript or string functions cannot be used on workflows


That's all for now.Rest in next.. Cannot wait to watch the game this week..My favorite is Colts now that Cowboys are out..Let's see.

Friday, January 1, 2010

Siebel Essentials - 4

Wow! we are into year 2010 and was good to see that I have 14 posts in the last year. One of my resolutions for this year is to post more regularly . Let me list the resolutions for this year.
-Blog more regularly
-Less TV more books.Ok I hesitated before writing this but would be a hard one.
-Learn swimming
Ok that's a pretty short list , let me see if I keep up to my few resolutions. Getting back to basics in Siebel

There was a requirement to display My Teams view on home page. When queried on supportweb it was listed as Product enhancements. Spent sometime to see if I can find a workaround in tools.There is a visibility over ride property for applets on View Web Template Items. Changed this to Manager and that seems to work . When Sales rep logs in they see My View but when a Manager logs in they see My Team's view on the homepage. So far so good but if it did break some thing will update here for the same. L8r

Friday, December 25, 2009

Inbound Web service

Integration has always been fun and good that my exposure to integration has improved considerably in the last year. In my current project I had to create couple of inbound web services and was successful in finding a scriptless solution. Here is how I configured it,
1 .Create a workflow process with first step of EAI Integration Object Hierarchy to XML Hier Bus Service .Define a process property of type Integration Object and In (for In/Out)
2. Then use EAI Dispatch web service look up method to parse the XML .

For the EAI Dispatch service to process the XML define the xpath for the xml elements on Administration-Integration -> EAI Dispatch Service view.
The Key point in the workflow process , which I figured after a while, create a process property of type in and data type Integration Object. This would make sure that incoming message is received as Siebel Message and then process XML.

I'm planning to change the configuration I posted for Outbound webservice before with Integration-data-map and then EAI dispatch service. I bet that would be scriptless too and would perform better..Later.



Friday, December 18, 2009

Visibility for pick applet

Hi
Just configured something tricky today.Had to configure an account pick applet to show only My account. As always wanted to find a scriptless solution for this too and was successful. There is a set of class defined in the Siebel Security guide as well as on how to configure. Followed the instruction in the bookshelf to create a pick applet based on a special class and defined a applet user property and that's it I could see only My accounts on the pick applet.

I wish this was on the config apps bookshelf but later when I read through the configuration understood why Siebel has documented it in Security guide.Probably need to skim through the book to learn few more tricks on access control..Later...