Wednesday, July 21, 2010

Java Data Bean Performance

I'm not supposed to be working on Siebel anymore, but something keeps pulling me back to do odd jobs.

One of my coworkers was complaining about the slow performance when integrating with Siebel using the Siebel Java Data Bean. He was just creating some buscomp records and setting a bunch of field values along the way.

I'm not very familiar with the Siebel Java Data Bean, but my theory is that each buscomp operation (NewRecord, SetFieldValue, SetFieldValue, SetFieldValue, etc) was triggering a round trip to post changes to the server. There aren't a lot of hard rules in my book for improving performance, but avoiding the network is one of them (avoiding the database is another). [Can anyone confirm my theory that the Java Data Bean is heavy on posting changes?]

So how can we avoid the network in this case? Two ideas immediately come to mind. Without giving it away, one of them still uses the Siebel Java Data Bean, the other uses a different solution altogether. Either of them would allow you to create a bunch of new records all in a single round-trip.

Can you guess what I'm thinking of? Any additional ideas that may help here?

[We did a quick POC and were able to get a 90% reduction in execution time with one of these approaches]

2 comments:

  1. One of the solution that I can think of using EAI Siebel Adapter business service.

    Which means basically creating a propertyset in JDB and then using EAI Siebel Adapter Upsert/Insert method which allow data to be posted in one go.

    ReplyDelete
  2. Yup, Neel. The second option we considered is to use the EAI Siebel Adapter. The first one, which we successfully tested, was to create a business service and call the business service from the Siebel Java Data Bean. Setting values in a property set can call be done locally (in the Java program), and only one round-trip is needed to invoke the business service. I expect that the EAI Siebel Adapter would have had similar results, but is slightly more involved to implement.

    ReplyDelete