Thursday, March 15, 2007

Setting up the backend and moving on!

My tryst with SOA

I had a brief stint with Service Oriented Architecture solution provided my Oracle. I did my part in struggling to understand what is what in the application stack. Yes Oracle did provide documentation on each and every component provided. I intend to give an overview of the SOA offering with respect to JDE. I had just implemented the backend of the system and this article might be useful until then, i.e. implementing it.

SOA - Why do we need it?

This is what I understand as the need for SOA. No ERP product is perfect; they have their own strong and weak points. Some might be strong in Distribution & Logistics, some in HRMS etc. So what organizations do is have multiple products running to maintain different modules. Now the problem comes in, with multiple databases incompatible with each other. You might have employee data maintained by one application while the Logistics by another, which also means that they are in separate databases. So the organization have the so called islands of information i.e., related required data disconnected from each other.

So the SOA solution is to let the respective application work on its own area and pass on the next task to the next application. I am not strong on the functional side of it, but I will try to recollect an example scenario for this. Ok you wan to generate a purchase order or so, you have the D&L data on JDE while the customer information on Peoplesoft. So you type in the order in JDE, which now invokes an event to Peoplesoft system to fetch the customer details, after which an event is passed on to JDE for realization of the order, i.e. an order is given for manufacturing and delivering the product. Ok, the example is pretty vague, but I guess it serves the purpose of giving the general idea as to the use of the SOA concept.

Components

  • Oracle application server 10g, (Middle tier & Infrastructure, for storing meta data)
  • Oracle BPEL process manager server to deploy the services.
  • Oracle BPEL designer, client side to design process.
  • Oracle application integration adapters, for connectivity between the applications.

This is where you expose the services of the applications and provide the connectivity.

The applications stack (Rather, the architecture).

Coming tot eh architecture part, I am going in the order of installation.

OAS infrastructure: Here you get Oracle database 10g lite edition. This is basically used for storing metadata for the BPEL server. i.e, the server will process several requests, and it is required to store the state related information of each process. So here we use the database to store the metadata related to the process.

OAS Middletier: This acts as the middle tier in the stack. The BPEL and adapters are deployed in the OC4J container of this.

BPEL Process manager server: This is deployed on the middle tier. The designed processes are deployed here. The events are invoked by this.

Oracle Application Integration Adapters: This is what connects and talks to the application. We have an option to directly connect to the database and even legacy systems. I have connected to ERP systems as well as to databases, performed fetch, update etc.

Moving on..

After the installation as per the manual, we do need to configure the adapters so as to connect and talk to the application. This is predominantly copying the .jar files to the library, selecting the type of connectivity etc. One main step pertaining to JDE connectivity is generating the JAVA repository. Use GenJava supplied with JDE installation to get this done. It by default generates to the default location. Better to generate to a specified folder and then copy it to the machine where you have the application stack installed.

By the way, if you are following the manual, stop hunting for the jcatransport.properties file, coz you will never find such a file. You also need to copy a couple of more .jar files than specified in the manual (log4a.jar, jdeutil.jar etc). See the BPEL FAQ, it gives a better idea.

Now after the ground work is done, connect to the JDE system, providing the required login credentials (again, this is mentioned in the manual). It is needed to publish the services by JDE, and for this we need to generate WSDL(Web Services Description Language) files.

There are two types of events. 1. Inbound events and 2. Outbound events.

Outbound is for the events invoked by JDE/other applications. Here JDE talks to the adapters and get the required job done. The other type of event is Inbound events. In this, the adapters talk to JDE system. Both the type of events requires their own type of WSDL file for each service it needs from JDE.

In my scenario, I was able to generate the outbound WSDL. For the generation of inbound WSDL, it requires the starting up of a channel and then generating via command line. The channel never starts up if we follow the steps in the manual.

The WSDL we generate is used to compose the services into business flows. Use the BPEL designer to orchestrate the services, and then they are deployed to the BPEL server and used.

Will post more when I get to work with this again.