Powered By Blogger

Tuesday, July 2, 2013

Cannot deploy OSB 11.1.1.7 project to 11.1.1.5

Problem:

An OSB project is developed under Oracle Service Bus 11.1.1.7. When you export the JAR file and try importing it to Oracle Service Bus 11.1.1.5, you get the following error:

Invalid configuration file java.lang.IllegalArgumentException: The jar that is being imported is an unsupported version of the product. The version was 11.1.1.7. Supported versions are: 10.3.0.0.dev2, 2.6.0, 3.0.dev2, 2.6.1, 3.0.dev1, 3.0.0, 3.0, 2.6.dev5, 10.3.0.0, 2.6, 2.6.dev4, 2.6.dev3, 2.6.dev2, 2.6.dev1, 11.1.1.2, 11.1.1.3, 11.1.1.6, 11.1.1.4, 11.1.1.5, 10.3.2.0.dev.1, 10.3.2.0.dev.2, 10.3.1.0, 10.3.2.0.dev.3, 3.2.dev1, 3.2.dev2, 11.1.1.2.dev.1, 11.1.1.2.dev.2, 

 Even though downgrading it this way from 11.1.1.5 to 11.1.1.4 is certified, it still does not work.


Solution:

1. Assuming you have WinZip (or equivalent) installed, double-click the JAR file on your desktop.

2. If you are using WinZip, click on the file ExportInfo and edit it by clicking View (or equivalent).

 3. Replace the following entry:

OLD: <imp:property name="productversion" value="11.1.1.5"/>
NEW: <imp:property name="productversion" value="11.1.1.4"/>
 4. Save the file and update the archive.
 
5. Try again and you should be good!

Friday, June 28, 2013

SOA 11g - Set/Get Preference Property and change it on runtime from Oracle EM

Deployment descriptors are BPEL process service component properties used at runtime by Oracle WebLogic Server, Oracle Enterprise Manager, or both. Basically it is like a variable whose value we can change from EM console without doing any code change.



Set Preference property in Composite.xml: First of all you need to define Preference property in Composite.xml file.
  •      Open Composite.xml file in source mode.
  • ·         Add Preference property in inside Component section. Here I am using it for Email so my property name is "bpel.preference.Email", you can give it any name as per your requirement.

                 bpel.preference.{CustomName}

 <component name="CustomerNotification">
        <implementation.bpel src=" CustomerNotification.bpel"/>
        <property name="bpel.config.transaction">required</property>
        <property name="bpel.config.oneWayDeliveryPolicy">sync</property>
        <property name="bpel.preference.Email">test@test.com</property>
    </component>

Set Preference property in Composite.xml: Use this preference property inside BPEL.

  • To use this property inside BPEL you need to use ora:getPrefernce("CustomName") function.

                              ora:getPreference('Email')

Change
Preference property from EM: Update preference property value in EM console.
  • We can update this property from MBean Browser inside EM console.
  •   Go to EM console (http://host:7001/em)
  •   Navigate to "Farm_base_domain" -> "Weblogic Domain" folder -> Right click on your domain -> "System MBean Browser"


  • Go to "oracle.soa.config" -> "soa-server" -> "SCAComposite" -> Choose your composite
  • Then navigate to "SCAComposite.SCAComponent" -> your component name -> Click on "properties"
  •  Now you can see all the preference properties that you defined in your composite. You can change preference property value here.

Click apply to take effect.


Thursday, June 27, 2013

Resume VMware virtual machine

Sometimes after suspending the virtual machine in VMWare it cannot resume and gives the following error


VMware Player unrecoverable error: (vmx)
Exception 0xc0000006 (disk error while paging) has occurred.
A log file is available in "__A folder Path__".  A core file is available in "__A folder Path__".  Please request support and include the contents of the log file and core file.  
To collect data to submit to VMware support, run "vm-support".
We will respond on the basis of your support entitlement.

and to fix that do the following:


  1. If you do not need that virtual machine you can delete it and setup a new one
  2. If you need that virtual machine you can erase the suspended state and return to you virtual machine as if you did not suspend it, to do so follow these steps:


  • Go to the folder contains the virtual machine..
  • Search for the the file with extension .vmem and have the name as same as the name of the virtual machine.
  • Delete the .vmem file and the go the VMware workstation and run you virtual machine from it.
  • And error message will appear just press OK.
  • When you asked about you virtual machine select I copied it.
  • You will be asked whether to take the ownership for this virtual machine or not, and you have to take the ownership.
  • When you are asked whether to discard the suspend state or not, you have to discard it.

Now your virtual machine will run normally as if you never suspended it.

Tuesday, June 18, 2013

BAM Email Configuration to Get Report on External email ID

Oracle BAM- Send the report to external email id’s through Alert

By default we can’t send the reports to an external email id’s from a BAM server, the reports only can be send to a users configured with Oracle BAM servers(through weblogic console).This document  will explain how to enable the BAM server to send the reports to the external email ids.

1.    Below screen show the details to change for the email drivers details .This should be configured in UMS (through em console)


2.    By default AlertActionAllowExternalEmail property in the BAMCommonConfig.xml file is set as false. Change the value of AlertActionAllowExternalEmail property to true in the BAMCommonConfig.xml file to enable the external email feature.

3.    The BAMCommonConfig.xml file can be located in the following location

/u00/app/fmw_desktop/Oracle/Middleware36/user_projects/domains/base_domain/config/fmwconfig/servers/bam_server1/applications/oracle-bam_11.1.1/config

Note: Change this as per convero environment.

Create an Alert to send the report to the External Email
1.    Login to the Architect window; select the Alert from the drop down list and click on Create New Alert.

2.    Click on Create New Rule

3.    Select the option as shown below (Change the action according to your requirement)

4.    Click on next and select the Action as shown below.


5.    Click on the select report link and select the report that need to be send to the external email when the alert is fired.


6.    Click on select user and enter the external email ids separated with semicolon as shown below


7.    The below is the email sent the external email is.



SOA Testing by QUASAR Testing tool

Quasar SOA Testing Tool

Quasar is a SOA testing tool. Allowing for easy monitoring and generation of SOA events.Quasar is the ideal light weight tool for unit testing a variety of SOA components. The Quasar is next generation tool for SOA testing to support varies component and protocols used with SOA implementation.

The most important support from Quasar testing tool are:

SOAP Client / Server
  •     Make SOAP requests (also available through command line interface)
  •     Reply to SOAP requests
  •     Unit test your SOAP services
  •     Regression test your SOAP services
  •     Stress / Performance test your SOAP components
JMS Client
  •    Publish JMS messages (also available through command line interface)
  •     Listen to JMS messages (also available through command line interface)
  •     Make JMS requests (also available through command line interface)
  •     Reply to JMS requests
  •     Browse JMS queues
  •     Unit test your JMS components
  •     Regression test your JMS components
  •     Stress / Performance test your JMS components
JMS Manager
  •     Create and Delete Users
  •     Create and Delete Groups
  •     Create and Delete Queues
  •     Create and Delete Topics
  •     Functionality is vendor dependent.
JDBC Client
  •     Insert records into tables
  •     Update records in tables
  •     Delete records from tables
  •     Browse database tables
For more information about tool ,you can http://www.integrationcentral.com/product.html

The tool interface looks like:

 
 Some sample of WebService and JMS testing is as follow:

Create SOAP Publisher Connection

User need to right click on SOAP under Publisher and Open WSDL Wizard:
 User need to pass the Webservice WSDL url:
 The tool will query the WSDL location,read WSDL contains and popuplate all meothds realted to Webservice:

Select all choices:


 You are done and now the Webservice points arr ready for Testing And it will also persisted by tool for next time use.


Redmine and BPEL Fault Integration

The support guys will work on daily fault conditions occurred with BPEL process due to any business fault or run time fault. Here I am showing how we can capture the raised fault from BPEL process and then call redmine web service to create the tickets for take action by production support guys.


Wednesday, May 29, 2013

Oracle BAM 11g Best Practices

Dashboard Design and Deployment
------------------------------------------------
  1. Ensure that a Dashboard is designed for a specific user group. Do not try to create an “all-purpose” dashboard.
  2. Allow the user to understand the health of the operations at a glance, and then provide drill hierarchies to perform root cause analysis.
  3. Limit a dashboard to 4-6 views per report. Because Oracle BAM is a push-based technology that streams updates to the dashboard, try to limit the number of views in the open report for optimum performance.
  4. Use Report prompts and parameters to filter data before report loading. This is especially useful when there is a large amount of information available that may not be relevant for the business user, e.g. a full month of data when all they want to see is last 2-5 days.
  5. Creating URLs with “Copy shortcuts” in Oracle BAM Active Studio can be used to save time in opening a dashboard.
  6. Make effective use of Action buttons and action forms to ensure the end user can take corrective action on the dashboard.
  7. Try to use summary /aggregate views such as bar charts, pie charts, collapsed lists. This way only the aggregates need to be maintained in the cache.
  8. List views can have a performance impact. Do not show too many lists on the report.
  9. Use lists with caution! Oracle BAM is used to providing a real-time status of the business. Listing hundreds/thousands of records in a list view will impact performance. If there is a lot of data for a list view, allow the user to provide filter criteria (using a prompt) for the list rather than display all records by default.
  10. Use the Oracle BAM Dashboard view to put together common reports that may be used by multiple user groups. For example, sales folks need two views while managers need the two common views plus a regional view. An Oracle BAM dashboard allows the user to bring in the common the two view report in both dashboards, while the manager dashboard will have an additional views.
  11. Oracle BAM Web applications cache lots of files on the browser, so it is recommended that the user does not clear the cache unless necessary.
  12. Oracle BAM Alerts are the convenient way to receive report snapshots as emails.
  13. Use recommended browser versions for better performance. (IE 7 and 8 for 11.1.1.2.0).
  14. Use BAM for operational monitoring where you want to take action in short term e.g. average time for processing over x amount of hrs or days/ faulted count of instances which could turn to xxx amount of orders that cannot be processed and need attention, orders in jeopardy since it hasn’t reached step 4 and only 2 days left from promised date.
BAM Schema
--------------------
  1. Oracle BAM is used for real-time monitoring needs by business managers. The Oracle BAM ADC should not replace the customer’s data warehouse needs. Oracle BAM should keep only recent data in the schema. If required, the customer can archive the granular data and only keep aggregate data in Oracle BAM for a specific period of time.
  2. Oracle BAM supports star schema design. It supports one level of lookups, i.e. from one table to another. However, it does not support snowflake designs.
  3.  It is recommended that Dimension and Fact tables (data objects) be separated. However, if your dimension table is growing at a fast pace, or at the same pace as the fact table, it is a good idea to not separate these two. For example, if Order table and Invoice table are growing at the same rate and have lookups from one to the other table it is better to keep this as a single table.
  4. It is better to handle calculated fields at data object level, rather than at the report level. For example, sales amount *1.2 could be an extra field in the data object rather than creating a calculated field in the report.
  5. Create indexes for key fields. For example if you are using BPEL sensors to do insert/upsert/update functions within a process, create the index on Oracle BAM schema on the keys. Create Keys with Integer format.
  6. BAM is a reporting tool -as with any other reporting tool, BAM should have its own DB instance
Data Archiving and Purging
-------------------------------------
  1. Keep only the necessary data in your Data Object. Any data that is relevant for real-time operational monitoring and taking actions is a candidate for storing in the data object for the reporting.
  2. Do not keep older data for historical purposes in the same data object
  3.  If you need the historical data available in Oracle BAM, try to either store aggregates in another Data object, or transfer the data to another data object that is only called upon for specific reporting.
  4. Oracle BAM has an alert configuration for purging data from the Data object. This can be scheduled for data older than a defined time period. It is recommended that the purge be scheduled at non-peak hours, e.g. nightly.
  5.  If it is a requirement to archive the data prior to purging, then use ODI with Oracle BAM 11g, or Enterprise Link Plans in Oracle BAM 10g, to extract the data from the Data Object and store it in the data warehouse/table. Oracle BAM allows external data sources for reporting purposes without bringing in the data into Oracle BAM.
  6. ODI should have its own server . However, it should be co-located with the BAM server.
Scalability and Performance
---------------------------
  1. Oracle BAM Server (ADC) is a singleton and available in Active /Passive Configuration. Oracle BAM Web can be deployed in Active-Active configuration. It is recommended that a sizing exercise is accomplished as part of the Oracle BAM design and system testing for a specific scenario.
  2. Oracle BAM deployment sizing guidelines are provided as a technical note on the Oracle BAM section of the Oracle Technology Network Web site.
  3. It is recommended that dedicated machines be used for Oracle BAM (separate Oracle BAM Server and database machines, and others based on install size) because Oracle BAM is a reporting tool. If the solution includes BPEL, use separate machines for BPEL and its storage to avoid contention.
  4.  For high availability solutions, make sure that your servers are on the same subnet.
  5. Ensure that the application context is the same for Oracle BAM Web services if the Web services interface is used for pushing data in Oracle BAM.
Real Time Data sources for Oracle BAM
-------------------------------------------------------
There are 4 ways to push data in Oracle BAM. Please note that we recommend that the DO should be updated via one common channel as this is the most efficient and optimized implementation for updating the DO. It is OK to update the DO from multiple projects as long as they are not writing to the same DO record concurrently. We strongly recommend against updating the same DO record via multiple sources (e.g. multiple EMS, or multiple BPEL projects etc.)
  1. Oracle BAM Adapter – JCA adapter available in 11g. This is also a first class citizen of SOA composite. This is the recommended approach for sending data to Oracle BAM for BPEL and other applications certified with this adapter.
i. The adapter supports RMI and SOAP (HTTP and HTTPS) protocols.
ii. BPEL 11g uses Oracle BAM Adapter to send data into Oracle BAM via the Oracle BAM sensor actions.
iii. This is not guaranteed messaging. All batches are stored in virtual memory. If there is a requirement for guaranteed messaging, please use JMS sensors in BPEL to send information to Oracle BAM via Enterprise Message Sources.
iv. Enable batching to keep the BPEL-Oracle BAM sensor action communication asynchronous. This also applies to the Oracle BAM Adapter use at the composite level. Oracle BAM 11g allows configuration of batch size, time-out, retry, etc.
v. Select the Monitor perspective in Oracle JDevelepor BPEL Designer (top right drop-down with BPEL as default) to create sensors /monitors to allow process monitoring.
2. Web services – Each data object is exposed as a Web service in Oracle BAM.
i. BPEL 10.1.3.x uses the Web services route for sending data into Oracle BAM using Oracle BAM sensor actions.
ii. This is not guaranteed messaging. All messages are stored in virtual memory. Enable batching in BPEL – Oracle BAM sensor communication to maintain asynchronous communication between the two applications.
iii. The Oracle BAM ICommand utility is available as a Web service.
3. JMS – Oracle BAM 11g has native JMS connectivity. It has the ability to listen to any JMS (1.1 or above) queue or topic. This also allows durable subscription. This is a recommended mode of communication for high volume messaging scenarios.
  • JMS supports XSLT transformations. Oracle BAM requires a flat schema where the XSLT can be used for nested messages. Please note the XSLT requires more resources for processing in high volume scenarios.
  • Enable EMS message batching: This groups the messages in one single payload and saves on network round trips. 
  • As the JMS message is pulled from the JMS topic, if the record cannot be processed, it will not be written back to the same topic automatically. There are error configurations in EMS (post 11.1.1.3.0) that should be taken advantage of to capture records that are rejected by the EMS.
  • Only 1 EMS should be used to write to 1 Data Object. This will sequence of updates as well as avoid any contention during the update of the same record via multiple sources. 
  • Recommend EMS to be configured with transactions disabled (11g) 
  • Do not recommend transformations on EMS especially in high volume scenarios. It is much better to transform the message in BPEL ( if that is being used) or the source system rather than overloading the reporting tool for transformation and then updating in real time.
  • If you send null values for a column value into BAM, it will overwrite the existing value. If you want to preserve the value for a column ,then do not send a null – infact suppress the null value tags in the message.
(4) Oracle Data Integrator (ODI) – Use ODI (10.1.3.5 recommended) to extract data from any compatible source and push it in Oracle BAM using the Oracle BAM Knowledge Modules. This tool also is used for archiving Oracle BAM data. Change Data Capture can be supported using ODI integration with Oracle BAM.

(5) Use Oracle BAM ICommand command line tool for exporting and importing Oracle BAM artifacts.

(6) Ensure that the Data Object field size is suitable to the payload size. Recommend field sizes less than 1000 characters, if possible

(7) If there are multiple BPEL processes /composite writing to Oracle BAM, it is a good practice to have all the various processes raise EDN events (or write to a JMS topic) and then have one single composite with BPEL process write to BAM.
Oracle BAM Data Control
------------------------------------
  1. Oracle BAM data control instance sharing is not supported. When two or more ADF Faces components must display the same data, and are bound to the same Oracle BAM data control definition, make sure to wrap each ADF Faces component in an ADF task flow, and set the Data Control Scope to isolated. See the Oracle Fusion Middleware Web User Interface Developer's Guide for Oracle Application Development Framework <http://download.oracle.com/docs/cd/E15523_01/web.1111/b31973/toc.htm> for more information.

Oracle BAM Migration

In the development life cycle, it is very common to build different environments(development, testing, UAT, and production) to meet your business needs. Thus, the capability of moving data from one environment to another, smoothly and effectively, becomes critical for your business.
Well some days back your team decided to write ANT script to deploy BAM artifices to export one environment ,check into SVN and then using ant script deploy it on another environment .
Here are the step by step details to write ANT script for BAM deployment:

Friday, March 8, 2013

Ftp Adapter with BPEL Process

There are lots many blog available on Internet which show the way to use ftp or file adapter under oracle BPEL 11g. Here I am focusing on some of the important aspect which require in special conditions:
Change the file name on run time using jca.ftp.FileName properties.
During process execution we can assign the file name using "Assign" activity.Like
We can create String variable which store the file name created on run time

Now on the Invoke activity before call the ftp adapter ,We can override the jca.ftp.FileName property with newly created file name variable"ftpFileNamePoUpdate".



Get the list of file on FTP server and if file exist then put file creation on wait :
We will create the ftp adapter which will list all the file from FTP server location.Mention the ftp adapter JNDI name during the creation of ftp adapter
Select the operation type as "Listfiles" and mention the operation name as per the choice.
Mention the ftp location from where we can wants to query all the files names:
We can query all the files on ftp server location with * or we can query the specific files name like *.xml ,A*.txt etc...
Here we are calling the same created ftp adapter using invoke acticvity.
In below mention invoke activity we will create the Input andout Parameters for ftp adapter call as below:
and out put parameter:
The if condation will check here with "ftpfilename" and output comes as a result of ftp file list are equal or not.
If any of the file name which BPEL trying to create on the server and filename on the server are equal thehn the flow will goes to wait time as assign here is 8 hrs.

Tuesday, November 13, 2012

Oracle BPEL 11g Best Practices



Oracle BPEL 11g Best Practices
  1. BPEL has to be primarily used for orchestrating the services. Do not add complex business logic here. It should belong to the service layer.
  2. Create scopes for each step of the flow in the process so as to make it modular.  This will help in creating local variables within that scope. Use Global variables when required(just like your java or C++ programming style). This will help in maintainability. Note : Adding too many scopes may affect the performance. In that case you may want top consider creating sequences.
  3. Adopt naming standards and comply to it. This should be part of the governance strategy. This looks trivial but is important if you want someone else to understand the code and make changes.
  4. It is good practice to have a Mediator in the Composite. Try to get most of the transformations done by the Mediator.
  5. Have all the business rules implemented by the Oracle Business Rules
  6. Handle all the exceptions
  7. Adopt test driven development. Create test cases with a tool like SoapUI for each process and make this part of your governance strategy.
  8. Instead of BPEL, you should consider implementing the process in BPM. This has the advantage of modeling it in BPMN so that it can be easily understood by the Business and also helps the model and implementation to be synchronized at all times. If you haven't considered it so far then it is time you take a look at 
  9. The flow of the BPEL process should be very intuitive.The reason enterprises are investing heavily in this to be agile to change. So, to make this happen , make the steps in the flow linear as much as possible so that a new step can be added/reordered easily by just drag and drop. I have seen very complex nested creation of the following flow which after refactoring looks as below.
  10. Use Assign activity instead of Transform Activity where ever possible since it take less memory.
  11. Do not import or add XSD files in a ZIP file into a BPEL project. Always extract the XSD files from a ZIP file before importing them.
  12. Do not include any special characters in the project name (such as periods). If you do include special characters, errors appear when you attempt to compile your project
  13. The bpel.xml file content is only read into memory when the file is opened. Therefore, if you change the content of bpel.xml after the file is opened, the changes are not made in memory. After changing the content of the BPEL file, close and reopen the file for the changes to take effect.
  14. Do not edit the bpel.xml file through a combination of Oracle JDeveloper and a text editor such as Notepad or Wordpad. Use only a single editing environment such as Oracle JDeveloper.
  15. Do not edit the bpel.xml file, BPEL files, and WSDL files while changing the
    design of the process. If you want to edit a file:
    Ensure that the BPEL files are not being edited in Oracle JDeveloper. If they are being edited (that is, a tab for that file is visible), close it and save changes as needed.
    2. Edit the required file and save the changes

  16. Oracle BPEL Process Manager does not support SOAP-encoded arrays.(soapenc:arrayType).
    Use one of the following workarounds:
    * Apache Axis supports document-literal style services. This means you can change the service to not use soapenc:arrayType.
    * A wrapper can be placed around the service (also using Apache Axis) so that the BPEL process talks to the document literal wrapper service, which in turn calls the underlying service with soapenc:arrayType.
    * Call a service with soapenc:arrayType from BPEL, but construct the XML message more manually in the BPEL code. This enables you to avoid changing or wrapping the service. However, each time you want to call that service from BPEL, you must take extra steps


  17. If you use large binary attachment files in SOAP messages with Oracle Database Lite, your BPEL process may not complete processing, which can cause you to run out of system memory. Oracle Database Lite is largely for testing purposes. To use large binary attachment files in SOAP messages, use an Oracle Database as your dehydration store


  18. Use TCP tunneling to view SOAP messages exchanged between the BPEL process flow and the Web service (including those containing the
    correlation ID). You can see the exact SOAP messages that are sent to, or received from, services with which a BPEL process flow communicates.

  19. Instead of manually entering an expression, you can press Ctrl and then the space bar in the Expression field. Scroll through the list of values that appears and double-click the value you want. Edit the value as necessary. As you enter information, a trailing slash can appear. This means you are being prompted for additional information. Either enter additional information, or press the Esc key and delete the trailing slash to complete the input of information.

  20. Do not copy and paste the expression syntax shown in this document into Oracle JDeveloper. This is because the single and double quotation marks are sometimes not compatible with Oracle JDeveloper. Instead, use the Expression Builder window or press Ctrl and then the space bar to use the XPath Building Assistant.

  21. When you deploy a process with the same name and version, you are prompted to overwrite the currently-deployed BPEL process or deploy to a new version number. The best practice is to always deploy to a new version (as described in this tutorial). Redeploying a process with the same version can have consequences, such as instances being marked as stale