We are not going to
discuss EAI Siebel Adapter methods. Lot of blogs have beautifully explained this
already.
We will highlight a few
key points which can tremendously improve performance of Siebel EAI Adapter.
Point 1
While sending messages
through EAI workflow, in most of the cases, the first step of workflow uses “EAI
Siebel Adapter Business Service” Query Method to retrieve the message that
needs to be sent.
There is a hidden input
argument which should be set for EAI Siebel Adapter BS to improve performance. Additionally,
several
times we have received the following error while fetching large number
of records using Siebel EAI Siebel Adapter
“SBL-DAT-00500: There
were more rows than could be returned. Please refine your query to bring back
fewer rows”
Setting up this input
argument overcomes this error. Define the input argument as specified:
Input Argument
|
Type
|
Value
|
ExecutionMode
|
Literal
|
ForwardOnly.
|
Note: But you need to be cautious while using this argument as
it will not allow cursor in backward mode. Hence when trying to update the
previous record, you might get “End of File Error “
Point 2
Continuing with the
above point, there can be a scenario where SearchSpec provided at EAI Siebel
Adapter Query method did not fetch any record and hence the output of Siebel
Adapter BS in an empty Siebel Message.
In case of an empty
message there is no point of executing further steps until and unless logic is
defined to populate Siebel message either through data map or other BS such as
workflow Utilities or PRM ANI Utility Service. (Check previous blog to check
how to do that).
So to avoid further
execution of steps we should be using output argument “NumOutputObjects”
of EAI Siebel Adapter along with the decision box.
NumOutputObjects is an
optional argument which provides the number of records fetched by the query. In
case no record is fetched it will be set to 0. Define the following in output
arguments of BS.
Ouput Argument
|
Type
|
Value
|
NoOfObjects
|
Output Argument
|
NumOutputObjects
|
Use decision box to validate
the value of NumOutputObjects is greater than 0 as shown below:
Point 3
Scenario – We are
using MQSeries transport to communicate with an external system. We need to
send thousands of contacts created in Siebel at end of day on daily basis to the
external system. But sending thousands of contacts in bulk as single message
using queue is not preferable as it hits the performance badly.
Hence to overcome this
problem we can use the QueryPage Method of EAI Siebel Adapter BS. In this
method you can define the number of records that should be fetched in single
page by defining the PageSize input argument of BS. Let say I want to send 10
contacts as a single message so I will be defining PageSize to 10.
To send complete
message we will be looping through multiple records. It has been effectively
explained the following blog:
Point 4
While dealing with complex
incoming messages where only part of message needs to be inserted, updated or
deleted in Siebel we can use Skipnode and Skiptree to skip the part that should
not be processed.
Usually all the
entities in messages are treated as per parent Node Operation.
Generally in EAI
Siebel Adapter, the child nodes will perform the Parent node operation. We can
set the operation as Skipnode in Parent and can perform insert, update and
delete in Child node(s).
Example:
<SiebelMessage xmlns="www.acrotrend.com"
MessageId="Test"
MessageType="Integration Object"
IntObjectName="ContactIO"
IntObjectFormat="Siebel Hierarchical" >
<ListofContacts>
<Contacts operation ="skipnode">
<ContactId>0078561</ContactId>
<ListOfActivities>
<Activity operation ="Insert"></Activity>
</ListOfActivities>
<ListOfAccounts>
<Account operation ="update"></Account>
</ListOfAccounts>
</Contact>
</ListofContacts>
</SiebelMessage>
Point 5
A few generic points
1) Use lighter Integration Object
definitions. Only add fields in Integration components which are useful from
integration perspective.
2) In case you need to fetch a single
record try providing row_id of the record in PrimaryRowId input argument of EAI
Siebel Adapter which improves the performance.
3) Avoid Integration Object user keys if
not needed while inserting or updating the records using EAI Siebel Adapter.
No comments:
Post a Comment