Doorgaan naar hoofdcontent

Do not use generated database webservices in Cordys

Introduction

Cordys BOP4 has the great option (just like all other respected EAI tool) to generate webservices on top of your databases.
In fact you can even generate a GUI on top of it, so that you can adapt data within your database through a GUI.
Sounds great or not !?

Watch out, because there can be a catch and this all has to do with a good SOA design!

Using webservices

In a project I work in, there has been decided to use generated webservices within the BPM processes.
This can easily be done by generating the MetaData of the database and then generate webservices for it, or even customized webservices by
using you own SQL statements.
This all works fine, but ..
1) You have to catch exceptions within all the BPM processes that use these webservices
2) The data within the databases can change (types, extra data elements, data elements removed, partitioning of data, primary key changes)
3) This will impact all the BPM processes that use these generated webservices

Define Data Services

The advise I want to give is to encapsulate the generated database webservices in Data Services (sub processes).
This way:
* Define the interface of the Data Service within a WSDL and use Contract By Design
* Call the generated database webservices within the Data Service
* Handle all technical errors within the Data Service, or expose when needed
* Use this Data Service within the other BPM processes

This way the changes of the database are encapsulated within the Data Service.

Conclusion

By using Service Oriented Principles within the Cordys BOP4 product it will increase the maintainability and usability.

Principles:
* Abstraction (by using Contract By Design pattern and Data Service)
* Loose Coupling (by adding just an extra layer on top of your generated database services, so that database changes can be handled better)

So actually use the generate webservices feature of Cordys !
But use it with care and keep the SOA principles in mind!

Reacties

Populaire posts van deze blog

Microservices mindmap

"The tree" - See also   my photo page When you are fairly new within the Microservices land, there are a lot of terms fired at you. So also for my own understanding i have made a mindmap. I think it has a good status now, so that i can share it with you. As always feedback is very welcome ! You can download the mindmap here .

OSB 10gR3 and SWA and MTOM

This blog is about using soap with attachments and the use of MTOM within the OSB (10gR3). A service is created that accepts a soap with attachment (DocumentService) and translates it to a service that accepts a binary element. MTOM is used for performance reasons for the second. Some notes: * For the use of attachments you need RPC-style document instead of the usual document-style. This due to the fact that the document-style limits a message to a single . * A service can not have both SWA and MTOM within OSB. First a WSDL is setup for the DocumentService: The $attachments variable holds the attachments and the body holds the attachment data. Also other data is stored within the attachment element (see h

Installing Oracle SOA Suite/JDeveloper 11g

This post guides you through the installation of the Oracle SOA Suite 11g with JDeveloper 11 with the use of Oracle XE database (for Windows). Note: It is assumed that Oracle XE database is already installed. Required downloads Oracle Weblogic Server 10.3.1   SOA Suite   Repository Creation Utility JDeveloper Studio The detailed steps are nicely described here . The next picture gives a nice overview of the directory structure created. Step1 -  Create Schemas for Oracle SOA Suite and Oracle BAM (RCU) Unzip the files Run bin/rcu.bat At the Database Connection Details fill in the XE details. If you encounter the next fault you have probably not started the XE database.   Ignore all warnings Click OK Select all components I ran into the following problem: When you click Ok you see the following error: And this is about the Processes DB Init parameter that is wrong. To fix this goto the Database Home page, Sql Editor and execute the following statements: a