SOA – What is it to a Layman

SOA is a buzz word these days…But what is SOA all about?
I wont go much into the technical aspects in this post, but will give you an idea on what SOA is all about.
What is SOA…
Is it a platform? Is it an Architecture? Is it a Pattern? Is it a product or a Solution?
SOA is basically an Architectural style of building business applications,
and by Business applications, I mean what makes sense to business.
And we normally hear SOA is all about Webservices…And its nottrue.
SOA is an architectural style, may be realized by WebServices, but SOA is not just about WebServices.
WebService is all about exposing the implementation in a standard way, whereas SOA is concerned about Integration.
It is neither a software, nor a product, but an approach to build business applications in an Enterprise, that offer agility. It basically aligns your IT infrastructure towards the changing trends in the business.
Let us look at a simple scenario.
Lets say, there is a company that had its IT infrastructure first developed in late 80’s, and was completely running on Mainframe.
And in late 90’s, business grew up in many new areas, and the business wanted their IT infrastructure to support all those. At this point, IT dept had many alternatives to Mainframe, and lets assume have leveraged those new technologies to provide new solutions. But as these new ones belong to the same old enterprise, they need an integration to the existing ones. But since they are of different technologies, they follow different protocols, and so the communication cannot happen directly, they need some sort of a layer in between that acts as a translator. And so, the IT department had to write the intercommunication layers to talk to the legacy code.
Everything went on well till a point when the competition in business grew up too much and is constantly increasing at a huge pace, s/w components in various technologies keep coming in to the enterprise, and the IT department suddenly realized the existing practice would not suffice their needs. This ultimately leads to a Business-IT Gap.
Adding to this, it had become even more difficult to integrate their existing systems with the new ones coming in as part of new acquisitions &mergers.
This created a real headache to integrate their existing system with a new ones coming as part of the acquisitions, which is(might have been) completely written in their native framework, which did not support extensibility at all!!!
All those cross-technology interactions had become too much to the IT department, both to develop as well as to maintain.
What’s the solution??
SOA.
Using SOA at core architecture of your IT, it would cater to such fast changing business needs, integrations between various technologies, and at the same time, with a greater ROI to the company in long run.
SOA is like a set of standards that have to be followed while building business applications, which enable applications to be easily extendable, flexible, and makes the overall application cost-effective.
SOA aims at a greater alignment between your business and IT infrastructure
It is aimed at businesses which change quite rapidly, and always want their IT infrastructure to align with them in the same rapid pace.
 SOA can help businesses respond more quickly and more cost-effectively to changing market conditions, govt regulations, customer tastes, technology changes, etc. This style of architecture promotes reuse at the macro level rather than micro level. By macro, I mean at a service level rather than at a class level. It can also simplify interconnection to – and usage of – existing IT (legacy) assets.
SOA proposes certain concepts which you need to incorporate in your IT so that it becomes a 100% SOA based application and cater all needs to the business, both in terms of technology and revenue.
SOA is basically an architectural style of building business applications, using loosely coupled services which act like black boxes, and can be orchestrated to achieve a specific functionality.
SOA would propose certain concepts to be followed  to have a better IT infrastructure, but how is it realized?
There are many solutions that implement SOA concepts, and one such solution is the Oracle SOA Suite.
Oracle SOA suite offers out-of-the-box components which can be used to build a 100% SOA based solution for the enterprise.
Please note that SOA involves huge investments to the company both in terms of the development and infrastructure.
Having SOA implemented in the enterprise is a trade-offbetween the
cost incurred(that would incur in its realization) versus the advantage(ROI) to the company

Hope this post gave you a basic understanding on Service Oriented Architecture. Please go through the next posts for a more detailed view on SOA.

Thanks for going through my post, feel free to provide a feedback!

Posted in soa in general, soa to a layman, what is soa | 5 Comments

Replace NameSpaces in XSLT

You may come across a situation where you want to replace one set of namespaces to another set. A typical example is that you have a pass-through OSB Service whose proxy is based on your Project’s namespaces and the underlying service is based on the out-of-the-box service namespaces.

In such cases, the following XSLT will search-replace the namespaces

For example, if your input xml looks like


..
..
..

..
..

..
..

..

..

and the response has to have a different set of namespaces,


..
..
..

..
..

..
..

..

..

The following XSLT works

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:myns1="http://www.w3.org/TR/html4/1"
xmlns:myns2="http://www.w3.org/TR/html4/2"
xmlns:myns3="http://www.w3.org/TR/html4/3"
xmlns:myns4="http://www.w3.org/TR/html4/4"
xmlns:myns5="http://www.w3schools.com/furniture"
xmlns:ns1="http://www.w3.org/TR/html4/1"
xmlns:ns2="http://www.w3.org/TR/html4/2"
xmlns:ns3="http://www.w3.org/TR/html4/3"
xmlns:ns4="http://www.w3.org/TR/html4/4"
xmlns:ns5="http://www.w3schools.com/furniture">

<xsl:template match="*">





<xsl:template match="ns2:*">
<xsl:element name="myns2:{local-name()}">




<xsl:template match="ns3:*">
<xsl:element name="myns3:{local-name()}">




<xsl:template match="ns4:*">
<xsl:element name="myns4:{local-name()}">



<xsl:template match="ns5:*">
<xsl:element name="myns5:{local-name()}">


Posted in Uncategorized | Leave a comment

SOA Domain Creation Issue – Schema test failed

If Schema test fails during domain creation, you need to update that particular record in the database table.

connect sys/welcome1 as sysdba;
grant DBA to DEV_MDS;
update schema_version_registry set version=’11.1.1.7.0′ where owner= ‘DEV_MDS’;
update schema_version_registry set version=’11.1.1.7.0′ where owner= ‘DEV_SOAINFRA’;
commit;

Hope this helps!

Posted in Uncategorized | Leave a comment

Change default OWSM policies in Workflow Services

Oracle SOA provides default policies on some of its Workflow Services. In most of the cases, the policies attached are demo policies, ex : oracle/wss10_saml_token_service_policy

This blog explains you how to change those default policies to an OWSM policy of your choice.

EM –> rt click on soa-infra –> Administration –> System MBean Browser
Navigate to the WebService of your choice as shown below

Change the value in the policyReferenceURI to the OWSM policy of your choice.
Restart the server, and the change comes into effect.

Posted in Uncategorized | Leave a comment

Business Rule Error :: Fact not found in the rule engine working memory, rule session execution failed

You may encounter the following error while working with Oracle Business Rules

Non Recoverable System Fault :
Fact not found in the rule engine working memory, rule session execution failed. The rule session 800009 failed because an instance of the fact org.example.xxx could not be found in the working memory of the rule session. This is most likely a rule modeling error. The xxx service interaction expects the fact instance to exist in the working memory of the rule session. Check the rule actions in rule designer and make sure that a fact of the expected type is being asserted. If the error persists, contact Oracle Support Services. 800009

The bolded variable, which in my case is the response variable, is the cause of the error in this case. This is coming because the none of the rules have passed and so the response object could not be asserted with a value. Since there is no instantiated response object, and the BusinessRule tries to reply with the response object, you end up with ‘Not Found’ error.

In such cases, make sure atleast one rule passes when you send an input. Otherwise, add a rule for ‘1=1’ which always passes.

Hope this helps.

Posted in Uncategorized | Leave a comment

Server Policy vs Clinet Policy

When you start working with security policies, during initial days, often you get confused with server policy vs client policy.

Every policy will have a client and a server version

Server Policy : This policy does the actual work.
For ex,
The OWSM policy oracle/wss_http_token_server_policy does the http basic authentication, i.e. checks the provided userid/pwd against the server’s LDAP/IDAM/watever…

Client Policy :: Adds the security information
On the other hand, the client policy appends the required security information to the SOAP HTTP header before sending the request out
For ex, OWSM policy oracle/wss_http_token_client_policy adds the security header with userid/pwd or csf-key to the outgoing request

So, a service policy will be applied to the service provider, whereas the client policy will be applied to the service consumer/caller

Without a client policy to the service caller, the security information cannot be provided to the service request and thus the service policy on the service rejects the message. So, a service caller will have the client version of the policy on the actual service

Posted in Uncategorized | Leave a comment

the exception reported is: java.lang.IllegalStateException: this is only a psuedo object

Sometimes, you may endup with the following error during deployment – the jar builds up fine, but error during deployment.

[11:04:54 PM] HTTP error code returned [500]
[11:04:54 PM] Error message from server:
There was an error deploying the composite on AdminServer: Deployment Failed: Error occurred during deployment of component: DetermineDeadline to service engine: implementation.bpel, for composite: Complaint_Decision: ORABPEL-05250

Error deploying BPEL suitcase.
error while attempting to deploy the BPEL component file “/oracle/fmwhome/user_projects/domains/dev_soa_osb/servers/AdminServer/dc/soa_1d83d7f5-1d65-4788-b497-f5ee15431311”; the exception reported is: java.lang.IllegalStateException: this is only a psuedo object

This error contained an exception thrown by the underlying deployment module.
Verify the exception trace in the log (with logging level set to debug mode).
.

[11:04:54 PM] Check server log for more details.
[11:04:54 PM] Error deploying archive sca_xxx_rev1.0.0.0.jar to partition “xxx” on server AdminServer [http://SOABPM-VM:7001] 
[11:04:54 PM] ####  Deployment incomplete.  ####

The same project that was deploying properly suddenly stops working. This may be because one or more wsdl’s/xsd’s used in the project are changed recently or the references have updated their wsdl’s. Just refresh the bindings, update the MDS(if you are using MDS), and that solves the issue.

Posted in Uncategorized | Leave a comment

Tokenize a CSV and do a for-each in XSLT 1.0

There are cases where you’ll have a csv and need to do a for-each on each of the tokens.
For ex, a CSV stored in a DVM has to be iterated and needs to be assigned to a target for each of the token

Here is how you can tokenize

<xsl:stylesheet version="1.0"
xmlns:xsl=”http://www.w3.org/1999/XSL/Transform”&gt;

And the result is

  a
  b
  c

Posted in Uncategorized | Leave a comment

OSB Proxy Service Error :: Two or more operations expect the same incoming message

When you create a proxy service in OSB, sometimes you may encounter the following desing time error

[OSB Kernel:398034]Two or more operations expect the same incoming message, you must use a selector different than message body xxx.proxy /xxx/business Unknown ALSB Conflict

This happens when your wsdl has multiple operations and the types of atleast two of these operations share a similar message type. Operations are selected based on a particular algorithm, so in this case, the default Operation Selection Algorithm ‘SOAP Body Type’ won’t work as the operation message types are not unique. In such cases, you need to specify a different selection algorithm like ‘SOAPAction Header’
Go to Operation tab –> select ‘SOAPAction Header’ – provided the operations in the wsdl define SOAPAction

Check my next blog if the wsdl doesn’t have or a blank SOAPHeader element

Posted in Uncategorized | Leave a comment

Unable to open application in EM :: javax.el.ELException: oracle.sysman.emSDK.app.exception.EMSystemException

Sometimes, opening a deployed application doesn’t appear in EM under soa-infra tree, but exists in the list when you click on the partition. And when you click on the project from the list, it gives an error with a pop-up with a similar error as below

ADF_FACES-60096:Server Exception during PPR, #5[[
javax.el.ELException: oracle.sysman.emSDK.app.exception.EMSystemException
        at javax.el.BeanELResolver.getValue(BeanELResolver.java:298)
        at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:173)
        at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:200)
        at com.sun.el.parser.AstValue.getValue(AstValue.java:138)
        at com.sun.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:206)
        at org.apache.myfaces.trinidad.bean.FacesBeanImpl.getProperty(FacesBeanImpl.java:68)
        at org.apache.myfaces.trinidad.component.FacesBeanWrapper.getProperty(FacesBeanWrapper.java:58)
        at org.apache.myfaces.trinidad.component.UIXTable$RowKeyFacesBeanWrapper.getProperty(UIXTable.java:630)
        at org.apache.myfaces.trinidad.component.UIXComponentBase.getProperty(UIXComponentBase.java:1353)
        at org.apache.myfaces.trinidad.component.UIXIterator.getValue(UIXIterator.java:722)
        at org.apache.myfaces.trinidad.component.UIXCollection.__flushCachedModel(UIXCollection.java:1438)

Solution :: Just go to console –> Deployments –> stop & start the ’em’ application
Now, you’ll see all the deployments in the EM soa-infra tree, as well as you’ll be able to open the project.
Posted in Uncategorized | Leave a comment