Wednesday, February 18, 2009

Memoirs of a SOA Oracle Fusion Project [bpel]

Currently our company uses SOA architecture to integrate applications like
1. Oracle Apps 11i
2. Siebel On Demand v15(hoisted)
3. Siebel 8.1 ( On Premises)
4. Amdocs ClarifyCRM 12.5
5. Oracle Fusion Middleware , BPEL for Integration
6. Informatica
7. OBIEE - Analytics
8. Hyperion - Reporting
9. SFDC - SalesForce.com
I had the unique opportunity of getting associated with most of these applications as a development lead. I will try to briefly step through each applications and talk about my experience in using them both functionally and technically. I will also try to put in technical aspects of dealing with tese applications as i progress throug this blog in the days to come.

How to clear the clutter in the Dehydration Store for SOA , BPEL Application Server
*******************************************************************************
Guideline for using this code:
1. Don't run this script until you are very much sure of deleting all the instances from the dehydration store.
2. First stop the BPEL instance via Enterprise manager then run this script.

truncate table cube_instance;truncate table cube_scope;truncate table work_item;truncate table wi_exception;truncate table document_ci_ref;truncate table document_dlv_msg_ref;truncate table scope_activation;truncate table dlv_subscription;truncate table audit_trail;truncate table audit_details;truncate table sync_trail;truncate table sync_store;truncate table dlv_message;truncate table invoke_message;truncate table ci_indexes;

alter table cube_instance deallocate unused;alter table cube_scope deallocate unused;alter table work_item deallocate unused;alter table wi_exception deallocate unused;alter table document_ci_ref deallocate unused;alter table document_dlv_msg_ref deallocate unused;alter table scope_activation deallocate unused;alter table dlv_subscription deallocate unused;alter table audit_trail deallocate unused;alter table audit_details deallocate unused;alter table sync_trail deallocate unused;alter table sync_store deallocate unused;alter table dlv_message deallocate unused;alter table invoke_message deallocate unused;alter table ci_indexes deallocate unused;alter table cube_scope enable row movement;alter table cube_scope shrink space compact;alter table cube_scope shrink space;alter table cube_scope disable row movement;alter table cube_instance enable row movement;alter table cube_instance shrink space compact;alter table cube_instance shrink space;alter table cube_instance disable row movement;
exec dbms_utility.analyze_schema('ORABPEL', 'Compute');




SOA::Oracle Fusion :: BPEL - ESB : Differences
************************************************

ESB (Enterprise Service Bus) implement messaging to enable services to be integrated in a message-based paradigm: both synchronous and asynchronous styles. Oracle BPEL Process Manager provides a comprehensive, standards-based and easy touse solution for creating, deploying, and managing cross-application businessprocesses with both automated and human workflow steps

ESB is good for routing messages to multiple destinations. It is also good for doing transformations that have little to no business rules. The footprint is much smaller and incurs minimal overhead therefore the performance is much better. BPEL is used for bringing together multiple services. There is much more functionality and allows implementation of complex business logic

Oracle BPEL can be used for integration code but its not designed/optimised for it.. Oracle BPEL is a Business Process Execution Language and as such its optimised for managing and coding business processes, whereas an ESB is quite simply a highly efficient intergration product. Its principle objective is to join two different services together quickly, efficiently and bi-directional. Specifically an ESB moves data via Connects services via different adaptors (WebServices, FTP,File,JDBC etc) and protocols (HTTP,JMS)Enriches and transform data using XSL & domain value mapping lookups Routes messages based on data in the message payload and/or header and finally and often overlooked feature is that an ESB Virtualises services, quite simply adds a facade layer to your infrastructure...Its also worth noting that doing integration work with Oracle ESB is not only quicker to "build" but its also quicker in its execution. I've been told by some collegues in the US that an integration process in ESB product is approx twice the speed of same process in Oracle BPEL.. So to recap Use ESB when You want a really low cost solution Only need connectivity, simple transformations and routing Use BPEL+ESB when You need to code complex business logicIntegration with WorkflowComplex transforms potentially involving the database Have Long running processes which may or may not be stateful.
The best practices around using BPEL and ESB together are as follows: - BPEL takes care of the stateful, long running, orchestration steps BPEL operates on the canonical definitions of your business objects - such that your BPEL process is clean (minimal transformations, assigns) with the focus on the basic business logic and related compensatory error-handling logic whereas,- ESB virtualizes endpoints that BPEL is orchestrating ESB does the heavy lifting of transformations to and from the canonical definition to endpoint definitions of the business objects With an appropriately layered SOA architecture, one would look at ESB as a repository of services that BPEL orchestrates. At deployment time, this layeredapproach provides you the flexibility to dedicate servers to individual tiers (BPEL and ESB) and thereby maximize the resource usage for your particular use case

BPEL data transformations enrich and perform complex changes whereas ESB can perform only simple transformations.• Exception handling can be done in BPEL.• ESB does not have the Sensors which can be used to monitor the activities that can send actions to Business Activity Monitoring (BAM) or database/jms.• BPEL can use Business rules, Human Workflow and Notifications.• Primarily BPEL is used for Orchestration, data enrichment and also for Human interaction whereas ESB is used for Store and forward transport of data


Siebel 8.1 EAI/ASI / Business Service Webservice call from Bpel
--------------------------------------------------------------------------------
1. 301 Permanently moved Error
This can happen if the redirection on the server does not happen. Check the followinga) EnableFQDN=True on eapps.cfg fileand restart IIS serverb) ensure the wsdl location has login credentials and remove WSSOAP=1 (only for enabling session)c) ensure eapps.cfg file parameter [App Server name] is configured correctly
You can use this neat tool to test webservice SOAPUI http://www.soapui.org/

Connection Update not reflecting while running bpel
-----------------------------------------------------
/d01/oracle/product/10.1.3.1/OracleAS_1/j2ee/oc4j_soa/application-deployments/default/DbAdapter/oc4j-ra.xmlcorruption in the adapter name , a space was introduced.It was using the default connection which was pointing to old one.

Actual server log
-bash-3.00$ tail -10 /d01/oracle/product/10.1.3.1/OracleAS_1/opmn/logs/default_group~oc4j_soa~default_group~1.log<2009-03-06> file:/d01/oracle/product/10.1.3.1/OracleAS_1/bpel/domains/default/tmp/.bpel_SFAAccountUpsertSTGTOSOPAsync_1.0_92bbc675d9158e442a4e1c435fcc81c4.tmp/BPELErrorLogService.wsdl [ BPELErrorLogService_ptt::insert(XxvsSodBpelErrorsCollection) ] - Using JCA Connection Pool - max size = <2009-03-06> file:/d01/oracle/product/10.1.3.1/OracleAS_1/bpel/domains/default/tmp/.bpel_SFAAccountUpsertSTGTOSOPAsync_1.0_92bbc675d9158e442a4e1c435fcc81c4.tmp/BPELErrorLogService.wsdl [ BPELErrorLogService_ptt::insert(XxvsSodBpelErrorsCollection) ] - JNDI lookup of 'eis/DB/errorAdminCRP' failed due to: eis/DB/errorAdminCRP not found<2009-03-06> Since unable to locate the JCA Resource Adapter deployed at 'eis/DB/errorAdminCRP', will then attempt to instantiate ManagedConnectionFactory

Based on this did a vi /d01/oracle/product/10.1.3.1/OracleAS_1/bpel/domains/default/tmp/.bpel_SFAAccountUpsertSTGTOSOPAsync_1.0_92bbc675d9158e442a4e1c435fcc81c4.tmp/BPELErrorLogService.wsdl
This gave information on how the defaulting will be done.
[ ] Based on this defaulting was happening and we ,looked at the oc4j-ra.xml and found that Database Connection name was having a space.

No comments:

Post a Comment