Showing posts with label Siebel EAI. Show all posts
Showing posts with label Siebel EAI. Show all posts

Fetching value of Oracle Sequence from External DB

Fetching value of external Oracle Sequence in Siebel is one of the typical business requirement in integration of Siebel applications. In case of windows environment solution is quite straight forward, we just need to create ADODB object in script and execute sql on external database.

But in case of Unix environment this is not possible as ADODB is not supported in Unix.

Generate Random Number (Cont..)

In continuation of my earlier post , I am sharing another way of generating random number in siebel using  vanilla SIS OM PC Service.

SIS OM PC Service is a vanilla service which provides a method to get new system generated row id as output.
The output can be utilised to generate random number by calling RowIdToRowIdNum() in expression.


Step 1 : Service :SIS OM PC Service Method: Get Next RowId
Output: Next Row Id

Step 2: Service: Workflow Utilities
Output : Random Num [Type Expression] : RowIdToRowIdNum([&Next Row Id])

Thanks to Sebestian for sharing this.

In-process reentrance is NOT supported for JMS, MSMQ and MQ Series transports

Process re-entrance refers to calling of same method of the business service again before the first call has not been completed.

Get Workflow Instance Id from the process property value!

Workflow Instance monitor is one of the best out of the box debugging techniques available in Siebel. But this also lacks in some aspects.

As most of developer would know that there is no way in instance monitor view to identify the workflow instance for specific object id or process property value.

Alternate use of List Of Values

Most common use of list of values comes in implementation of multilingual siebel applications. But its global presence all over the applications objects makes them extremely useful for writing switches in codes/workflows. I saw one great use in creating the stubs for the real time interfaces in Siebel EAI.

Siebel Message Property Set

The Next buzz word that we hear in Siebel EAI is Siebel Message or IO Hierarchy. It appears to be very similar to XML hierarchy, but it is not!

Siebel Message or IO Hierarchy is an instance of an Integration Object in form of property set. It is mostly used in EAI workflows, but it can also be very useful in scripting and business processes.

What is Integration Object? : It is an structure that defines the Siebel Data that is needed to be integrated with Other applications.

An IO defines Business Object whose data will be integrated, BC whose fields will be updated, and the fields that will be used.

What is Integration Object Instance? :
When an Integration Object is used to query siebel database it results in an property set that contains the data in the structure represented in the Integration Object.
This output property set is called Siebel Message.

How Siebel Message is different from a Property Set?
Siebel Message is actually a property set whose type is set to "SiebelMessage".Most common method to create a Siebel Message is by calling Query Method of EAI Siebel Adapter Service.
This service creates the properties with Name specified in the Integration Components Fields.

On the other hand XML Hierarchy contains property name from the Integration Component XML Tag.

Mapping between Siebel Property Set and XML

I think first problem that we face in EAI is understanding the mapping between the Siebel Property Set and the XML. But once this mapping is clear Siebel EAI becomes lot more easier module to work on.

XML as we all know is the structured data trasfer language, and property set is set of variables contain values in form of string name value pairs. There are lots of vanilla services available in siebel tools that converts the property set in to an XML or write the property set to a file.

Let see how the property set is converted into an XML.
A Property set contains four parts which we can get and set by eScript methods.

Note : A property set can contain child elements , which can themselves be a Property Set, and can have Type , Property and a Value.

Similarly an XML contains:

Siebel converts
Type of property set to XML Element ,
Properties are added as Attrbutes,
Value is kept as Value of the Element
and child properties are added as child elements in XML.

This can be demonstrated by following code:

It will produce an XML output like this:

Workflow Revision Failed : SBL-DAT-00393: An end of file error has occurred.

Recently I faced a strange bug in my Siebel Tools. Whenever i tried to revise an workflow, i was getting this error :

An end of file error has occurred. Please continue or ask your system administrator to check your application configuration if the problem persists. (SBL-DAT-00393).

And after i press Ok button, tools hangs and every time i have to restart the tools.

Even when i tried to connect directly to the database server the error was re-occurring. And this was happening with a specific workflow only. I was very much bugged up at that time.

I searched support web but still couldn't find any reason behind this in Siebel Tools.

Then one of colleague suggested me to delete excess versions of workflows in tools to get it done.
At first i thought it wouldn't help, but yes it worked!!

I must say, Siebel has got mind of his own! Thanks to Manuj, who helped me to get this thing done.

Receiving messages from JMS server

In JMS Integration, External System and Siebel doesn't send messages directly to each other. First the messages are placed on queues of the JMS Server, receiver system queries these queues for new messages when required.

For such and implementation siebel provides out of the box receiver server components, that are needed to be configured according to our requirements.

This receiver component executes the ReceiveDispatch or ReceiveDispatchSend method of EAI JMS Transport business service to get new message from queue.

These methods queries the JMS Server and checks in the queue for any new messages. If any message is found, this component invokes a workflow specified, and passes the received XML as input argument.
The name of the workflow is specified in the Data handling subsystem which is of type EAITransportDataHandlingSubsys.

Queue information is stored in Receiver Connection Subsystem that includes the queue name and the credentials.
Wrap up:
Receicver component (Type Enterprise Application Integration Receiver) requires:
1. Receiver Method Name (ReceiveDispatch/ReceiveDispatchSend)
2. Receiver Service Name (EAI JMS Transport)
3. Receiver Connection Subsystem (Contains queue name and credentials)
4. Receiver Data Handling Subsyst (Contains reveive workflow name.)

Setting up Siebel and JMS Integration!

Recently i attended a knowledge transfer session of EAI.  I learn few thing, that i think are worth sharing. In this project all the interfaces were built on JMS queues, provided by TIBCO.

One must not get confused with TIBCO Integration platform and JMS. TIBCO is a provider that have two products, one with JMS queues and other with TIBCO propriety protocol.

I am listing the tasks that are required to setup JMS queues so that your workflow can send /receive messages from the JMS server.

Steps required for sending asynchronous messages
1. Install JRE on all the siebel servers that runs object mangers and policy components.
2. Collect Api in from or jar files from the provider of JMS and place it in a shared location
3. JNDI properties file (this file contains the location and credentials of the JMS sever)

typical JNDI file will look like:

java.naming.provider.url=tcp://ipaddress:port,tcp://fallback-ip address:port

4. Java Named subsystem (type JVMSubSys)this information provides link between Siebel and the Java installed in the system.

Thus it requires information of the Java API that is java.dll. Which was installed as a part of Step 1.  And the location of the the jar files in the CLASSPATH parameter.Additionally for debugging purposses we can provide the log file path in VMOPTIONS parameter. 

After this much configuration in siebel you can use the EAI JMS Trasport business service only to send  messages accross the JMS server.(Dont forget to send queue information and credentials as arguments)

Coming up! Receiving messages from JMS server

Other Siebel Blogs

siebel-admin-l @ IT - toolbox

siebel-dev-l @ IT - toolbox