EAI Siebel Adapter and Configuration – A case study.

With EAI first word that comes to mind is integration. But domain of EAI is not limited to just integration with external application. It can help us in configuration also when used properly. The most common used EAI business Service is EAI Siebel Adapter which is used at lot of places. Recently it helped me to improve performance of code by 50%. Here is how?

Requirement:

For Document Generation over 190 fields fetched from over 10 different BC’s were to be set on Service Agreement BC.
This was being done through business service which used to query all the BC’s and store values in global variable and then in the end these global variables were used in function to set the field values of Service Agreement BC.

Problem:

Because of large number of SetFieldValue statements (over 190 🙁 ) this business service used to take 15-20 seconds to complete.

Solution:

Instead of using SetFieldValue we created a Siebel Message in the form of Property Set and used EAI Siebel Adapters Update method to do the bulk update and improve on performance.

Example code to that is given below:

// The property set that we created

<SiebelMessage IntObjectName = “ServiceAgreementIO” IntObjectFormat =”Hierarchical” MessageType = “Integration Object”>
<ListOfServiceAgreementIO>
<ServiceAgreement Field1=”Value1” Field2=”Value2”>
</ServiceAgreement>
</ListOfServiceAgreementIO>
</SiebelMessage>

The Code to create the above the Property Set is as following

//Create 3 Property Sets
var AgreePS = TheApplication().NewPropertySet();
var ListAgreePS = TheApplication().NewPropertySet();
var AgreeDataPS = TheApplication().NewPropertySet();

//Make this of Type Siebel Message 

AgreePS.SetType(“SiebelMessage”);

//Set Necessary Properties
AgreePS.SetProperty(“MessageType”,”Integration Object”);
AgreePS.SetProperty(“IntObjectName”,”AutoAgreementIO”);
AgreePS.SetProperty(“IntObjectFormat”,”Siebel Hierarchical”);

ListAgreePS.SetType(“ListOfServiceAgreementIO”);
AgreePS.SetProperty(“IntegrationObject”,”ServiceAgreementIO”);

//Add List as Child of Siebel Message
AgreePS.AddChild(ListAgreePS);

//Add data to property set
AgreeDataPS.SetType(“ServiceAgreement”);
AgreeDataPS.SetProperty(“Field1”, golbalvariable1);
AgreeDataPS.SetProperty(“Field1”,golbalvariable2);

//Finally Add Data to List
ListAgreePS.AddChild(AgreeDataPS);

After we have created our complete property set with all the values then we use EAI Siebel Adapter business service to update our BC in one shot, here is the code to do it

var inpSet = TheApplication().NewPropertySet();
var outSet = TheApplication().NewPropertySet();

var svc = TheApplication().GetService(“EAI Siebel Adapter”);
inpSet.AddChild(AgreePS);
inpSet.SetProperty(“PrimaryRowId”,RowId);
svc.InvokeMethod(“Update”,inpSet,outset);

And we are done Instead of taking 20 seconds to complete this code now takes just 10 seconds to complete. EAI Siebel Adapter has come again to our saviour 🙂

11 Responses to EAI Siebel Adapter and Configuration – A case study.

  1. Hi,
    Just a thought.. on eliminating scripting to prepare the SiebelMessage.
    It is possible to further cutdown on time, if the 10 different BCs that you’ve mentioned can be put under a single BO, and create a IO for doing the query to prepare the SiebelMessage.

  2. Hi,
    Just a thought.. on eliminating scripting to prepare the SiebelMessage.
    It is possible to further cutdown on time, if the 10 different BCs that you’ve mentioned can be put under a single BO, and create a IO for doing the query to prepare the SiebelMessage.

  3. Hi soumen,

    But again it will not be a siebel message that I can use for insert. To have my data in it I will have to mainuplate it using eScript so that means that I will have to query first and then put my data in that message and then insert.

    here i have to prepare message and insert, so the query and manipulation part is not there.

  4. Hi soumen,

    But again it will not be a siebel message that I can use for insert. To have my data in it I will have to mainuplate it using eScript so that means that I will have to query first and then put my data in that message and then insert.

    here i have to prepare message and insert, so the query and manipulation part is not there.

  5. Don’t you think it is going to be additional calls to the Business service which would be sent to the EAI component for execution and it again depends where the component is running…

    May I know the method you adpoted to compute the response time?
    Thanks

  6. Don’t you think it is going to be additional calls to the Business service which would be sent to the EAI component for execution and it again depends where the component is running…

    May I know the method you adpoted to compute the response time?
    Thanks

  7. I used my watch to compute the response time 🙂
    as I mentioned that time was reduced from 20 to 10 seconds after the change.

    No, It is not going to give a additional call as EAI Siebel Adapte is BS and BS code resides in SRF and it is executed just like any other BS by object manager not by some other component.

  8. I used my watch to compute the response time 🙂
    as I mentioned that time was reduced from 20 to 10 seconds after the change.

    No, It is not going to give a additional call as EAI Siebel Adapte is BS and BS code resides in SRF and it is executed just like any other BS by object manager not by some other component.

  9. Some great recommendations on this post…also note that GMT v1.8.5 can help you proactively monitor 24×7, the performance of your EAI, Workflow, Web Services and other back-end transactions once they all are deployed onto production (http://www.germainsoftware.com)

Leave a Reply

Contribute