Wednesday, December 21, 2011

Note on changing BPM process outcome

Have you ever wondered how to effect changes performed to the human task definitions on the corresponding ADF task iterator bindings? - particularly at a later stage after generating the ADF forms.

I encountered similar requirement where the outcome of my human task activity was to be changed. One of the ways that I discovered is to right click on the corresponding 'Data Control' and choose 'Edit Definition'. This will prompt a message stating that the bindings would be refreshed as per the latest changes on the human task definition. On confirmation, you are now free to choose the 'modified' bindings in your ADF page.

Friday, December 9, 2011

Oracle BAM ICommand by-pass credential prompts

I came across a requirement where the BAM data object must be updated with new rows recursively. For this, I created the DO XML files containing the valid layout format and data. However, while calling the icommand import script recursively from a shell script, I faced credential issues as the username/password cannot be provided dynamically everytime.

In order to overcome this issue, Oracle BAM provides a feature to configure the default credentials in the config file;

<Oracle_Middleware_Home>/Oracle_SOA1/bam/config/BAMICommandConfig.xml

Open this file and add the following entries;

<ICommand_Default_User_Name>weblogic</ICommand_Default_User_Name>
<ICommand_Default_Password>your password</ICommand_Default_Password>

This would ensure that every time the icommand script is invoked, the default credentials are picked up. Happy scripting :)

Sunday, November 20, 2011

ADF 11g JBO-25002: Definition "VO" of type View Definition is not found Error

Generally this is an error encountered at run-time when you try to 'recreate' a VO (view object) in an ADF application. The reason is that, even though the old VO is deleted from the ADF model project, the traces are still left out under the APP Module configuration.

This usually happens when the view objects are associated to the model project App module during VO creation.

To resolve this error, open the App module XML file and remove the reference.

Redeploy the application and you are good to go.

Saturday, November 19, 2011

FMW 11g PS4 (11.1.1.5) upgrade with Feature Pack on Windows 7 and Linux

With the Oracle Feature Pack for BPM being released just under 2 months ago which provides a variety of new BPM features and bug fixes, I have tried to provide a quick reference guide through this post.

Some new features (not exhaustive) below;

  • Enhanced BPM Process Composer
  • Report generation
  • Instance Patching (Make your in-flight instances follow a new BPM definition)
  • Manage attachments and documents by integrating with Oracle ECM
  • Ability to generate simulation reports based on run-time data
  • BPM workspace look & feel customization

For a exhaustive list of features refer to What's New in BPM Suite 11.1.1.5 Feature Pack

If you are currently on PS3 (11.1.1.4), then download the following patches to upgrade to PS4 (11.1.1.5) first before applying the feature pack;

Oracle SOA Suite  : 12395090
Oracle OSB          : 12395134
Oracle ECM Suite : 12395130
Oracle WebCenter : 12395099

(Note: These patches can be downloaded from My Oracle Support for customers)

Refer to Oracle® Fusion Middleware Patching Guide 11g Release 1 (11.1.1.5.0) for installation instructions. This should be straight forward.


Now, time to upgrade your SOA/BPM PS4 with Feature Pack. Download the following Oracle patch from My Oracle Support;

12413651

This bundles the following patches/bug fixes;

12413651 - soa bpm 11.1.1.5.0 features pack
12319055 - soa bpm 11.1.1.5.0 features pack - em support
12614083 - policy binding getting removed from jrf policy cache on undeploy

Also contains the JDeveloper extensions for SOA and BPM PS4 (11.1.1.5) Feature Pack.

Few important things to note while applying Feature Pack.

1. Ensure that you religiously follow the readme document. For example, if the document requires you to create a folder to unzip 3 zip files into the PATCH_TOP folder, then don't try to unzip other patch files into this folder or keep other stuff. Consequence will result in failure of OPatch.

2. At the end of the installation, Feature Pack requires you to execute the psa (patch set assistant) to update the schemas. New features on 'Advanced Replication' is being introduced in this release which will not work if you are running Oracle XE 11g database as 'Advanced Replication' is not supported in express editions. However, this will still work on Oracle XE 10 release but not recommended as you may violate the license restrictions. Warning: Check your license terms.

Note: This is not a 'loss' of functionality/feature in Oracle XE 11g. Oracle has just ensured that the license restrictions are reinforced at the product level starting with 11 release.

Oracle documentation recommends use of a Oracle database enterprise edition

Instructions to apply feature pack on Windows: (For linux, the instructions are pretty straight forward and clear in the patch read me. Hence not reproducing it here.)

Pre-Requisites:

1. Stop all servers
2. Important: Back up your database and middleware home

Patching oracle_common:

1. Set ORACLE_HOME environment variable to $MW_HOME/oracle_common
2. Create a folder 'Patch_Top' in the file system
3. Copy p12413651_ORACOMMON_111150_Generic.zip, p12319055_111150_Generic.zip and p12614083_111150_Generic.zip into the 'Patch_Top' folder and extract them using a recommended unzip utility (for example: 7-zip)
4. Start the command prompt ('cmd') as an 'Administrator'. You can do this by right-click on cmd and select 'Run As Administrator'. This step if not performed would result in 'OPatch' failure.
5. change to the 'Patch_Top' directory and execute the following opatch command;

%ORACLE_HOME%\OPatch\opatch napply

6. Follow the on-screen instructions and wait till the message 'OPatch Completed Successfully'.

Patching Oracle_SOA1:

1. Set ORACLE_HOME environment variable to $MW_HOME/Oracle_SOA1
2. Create a folder 'Patch_Top_SOA' in the file system
3. Copy p12413651_SOA_111150_Generic.zip into the 'Patch_Top_SOA' folder and extract using a recommended unzip utility (for example: 7-zip)
4. Start the command prompt ('cmd') as an 'Administrator'. You can do this by right-click on cmd and select 'Run As Administrator'. This step if not performed would result in 'OPatch' failure.
5. change to the 'Patch_Top_SOA' directory and execute the following opatch command;


%ORACLE_HOME%\OPatch\opatch napply


6. Follow the on-screen instructions and wait till the message 'OPatch Completed Successfully'.

Updating the schemas using PSA:

1. Set ORACLE_HOME environment variable to $MW_HOME/Oracle_SOA1
2. Start the command prompt ('cmd') as an 'Administrator'. You can do this by right-click on cmd and select 'Run As Administrator'.
3. Execute psa.bat as follows

psa.bat -dbType  -dbConnectString -dbaUserName -schemaUserName

example: psa -dbType Oracle -dbConnectString //localhost:1521/ORCL -dbaUserName SYS -schemaUserName DEV_SOAINFRA

Finally, perform the post installation tasks as recommended under the following link to complete the feature pack upgrade;

www.oracle.com/technetwork/middleware/soasuite/documentation/bpm-postinstall-ps4fp-487857.pdf


Here we come to the end of this long post. Your environment is now ready with the latest PS4 Feature Pack. Enjoy. Write to me if you face any hurdles.

Friday, November 18, 2011

New Dimension to resolve ORA-01078 LRM-00109

Not a database expert though, I came across this issue which kept me busy for some time. When trying to issue 'startup' command from sql prompt in a terminal/command prompt, I hit this issue;

ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file '/home/oracle/oracle/product/10.2.0/db_1/dbs/init_orcl.ora'

A quick reference to various blogs, forums and Oracle Docs on the web advised to check few things with possible solutions like,

1.) Check whether the parameter file is present in the location mentioned above. (Solution was to generate the pfile and place it under the dbs folder)

2.) If the pfile is available, then check the permissions on the pfile specified

3.) set the ORACLE_HOME and ORACLE_SID environment variables

Although there is no denial of the aforesaid issues/solutions, I observed that the ORACLE_SID is case sensitive (which is not the case when you connect from sql developer/ other tools). When I issued the ORACLE_SID value as orcl (lower case), I got the error under consideration. However, when I changed the environment variable to hold the value as ORCL (upper case) then the issue was resolved.

You can issue lsnrctl -status command to find out the SID of your database instance and set it in ORACLE_SID variable (case sensitive !!!)

Sounds silly. Yeah. One of the small things which keep us wondering and perplexed.

Friday, September 16, 2011

JDeveloper 11g: Error Finding SOA configured servers to deploy archive

While deploying a SOA composite in the SOA server, sometime the following error is encountered.

"Error finding SOA configured servers to deploy archive. Deployment cannot continue. java.lang.NullPointerException".

At first instinct, re-visiting the 'App Server Connection' and running the server connection tests in JDeveloper did not reveal any issues and all the test results were successful.

On closer observation, we can notice that proxy server settings are turned on in JDeveloper which is causing the issue during the actual SOA deployment. Disable the proxy settings Tools -> Preferences -> Web Browser and Proxy -> Uncheck 'Use HTTP Proxy Server' option.

Restart JDeveloper and deploy the SOA composite. Voila, it got deployed this time perfectly.

Tuesday, September 6, 2011

Oracle WebCenter 11g Frame Busting

While trying to add a webpage portlet in Oracle WebCenter 11g either as a portlet or as a simple webpage hosted in the server, most of the times we encounter the following error;

"WARNING: Unable to load content in a frame. Frame content will load at the top level."

This is an obvious issue of iframe busting where the ADF layout of the webpage is unable to fit itself within the portlet container and hence is complaining. To overcome this issue, we need to add few lines of code to the web.xml file of the ADF project and redeploy the webpage.

Under the <web-app> root element of the web.xml, add the following <context-param> ;

<context-param>
    <param-name>oracle.adf.view.rich.security.FRAME_BUSTING</param-name>
    <param-value>never</param-value>
  </context-param>

And there we go, WebCenter portal doesn't complain anymore on loading the webpage.

Wednesday, August 24, 2011

TNS Listener supports no services

While using Oracle 11g database, we encountered an issue where the database listener was unable to connect to any DB service although the associated database server was started, up and running. No matter how many times we issued lsnrctl start commands, the listener was unable to tie to the running database service. The listener reported the following on startup;

LSNRCTL for Linux: Version 11.2.0.1.0 - Production

Copyright (c) 1991, 2009, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date                11-AUG-2011 07:16:06
Uptime                    12 days 19 hr. 24 min. 0 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /oracle/dbhome/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
Listener Log File         /oracle/dbhome/app/oracle/diag/tnslsnr/soabpm-vm/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521)))
The listener supports no services
The command completed successfully

To overcome this issue, leave the listener started and reboot the 11g database. After 11g DB restart, issue the lsnrctl status command and see that the services are now registered successfully with the listener.

LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 24-AUG-2011 02:40:07

Copyright (c) 1991, 2009, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date                11-AUG-2011 07:36:00
Uptime                    0 days 0 hr. 24 min. 0 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /oracle/dbhome/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
Listener Log File         /oracle/dbhome/app/oracle/diag/tnslsnr/soabpm-vm/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521)))
Services Summary...
Service "orcl.local" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orclXDB.local" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
The command completed successfully

Weblogic 11g Domain Creation Failed

While creating domain in Weblogic server for FMW 11g, the following may be encountered if the config.cmd (or) config.sh file is executed from $MiddlewareHome/wlserver_10.3/common/bin folder.

Preparing...
Extracting Domain Contents...
Creating Domain Security Information...
Domain Creation Failed!

Domain Location: /oracle/fmwhome/user_projects/domains/base_domain

Reason: null

Exception:

Traceback (innermost last):
  File "", line 17, in ?
TypeError: unsupported operand type(s) for +: 'NoneType' and 'str'

To resolve this error, use the config.cmd (or) config.sh executable from $MiddlewareHome/Oracle_ECM1/common/bin folder. This error occurs because, the standard execution wizard is unable to execute the jython scripts that will get executed during domain creation.

Friday, August 19, 2011

Portletize ADF Faces jspx page

In this post, let us see how to portletize an ADF 11g application. This post will demonstrate how to expose a ADF faces page as a JSR 168 standard portlet which can run within Oracle WebCenter portal.

Pre-Requisites:

Download JDev WebCenter Extension from the following link.

Go to Help -> Check for Updates -> Choose 'Install From Local File' option and select the downloaded webcenter framework bundle zip file for install

From your ADF application, expand the ViewController project, right click on the jspx ADF faces page which you want to portletize and choose 'Create Portlet Entry...'. In the resulting popup window, enter portlet name, display name, portlet title, short title, description and click OK. This action will generate a portlet deployment descriptor automatically for the page. You can portletize 1 or more pages of your ADF application under a single portlet deployment descriptor.

While deploying the ADF application, JDeveloper will prompt for confirmation whether the JSR 168 portlet producer has to be deployed. Press OK to confirm. We now have to identify the WSRP WSDL URL which will be used to register the portlet in WebCenter. Pick up the ADF application URL from the deployment log and enter the following in a browser window;

<ADF_Application_URL>/info

Click on the WSRP v2 link and copy the WSDL URL from the resulting screen.

Let us now register the portlet producer with WebCenter spaces. Follow the steps below to achieve this;




























































































































































































1. Login to EM console as weblogic
2. Expand WebCenter -> WebCenter Spaces -> webcenter(11.1.1.4.0) (WC_Spaces)
3. Choose 'Register Producer' from the WebCenter dropdown option
4. Under the 'Add New Portlet Producer' screen, choose producer type as 'WSRP Producer', enter a 'connection name' and provide the WSDL URL which we copied above earlier
5. Test the portlet producer and click OK

This will ensure that the registered portlet is now available as a portlet in WebCenter portal which can be used as required.

Thursday, August 18, 2011

ADF 11g "No Credential Mapper" Error on WebLogic

While migrating the ADF 11g application with model project on to various environments, the following error is encountered;

"java.security.PrivilegedActionException: weblogic.common.ResourceException: java.security.PrivilegedActionException: weblogic.common.ResourceException: No credential mapper entry found for password indirection user......"

This error occurs because, JDeveloper generates an application-level data source with password indirection. JDeveloper creates a weblogic-jdbc.xml file for each database connection stored in the application resources. In order to get rid of the above error, we should ensure that the jdbc settings are not synchronized during ear generation.


Go to 'Application Properties' -> Deployment -> Uncheck the 'Auto Generate and Synchronize weblogic-jdbc.xml Descriptors During Deployment' option.


After the above setting, generate the ear file for the ADF application which can now be deployed on different environments.

ADF 11g model project generic datasource

While creating a ADF model project in an ADF application, we define the connect string (hard coded) to connect to the database. However, while migrating the ADF application on to different environments, the connect string values might change and has to be referred dynamically from the data source created in the application server. To ensure that the ADF application points to the data source, we can define the configuration settings in the model project 'AppModule'.

Step 1: Right Click on the 'AppModule' and go to 'Configurations...'

Step 2: Under the 'Manage Configurations' dialog, edit the AppModuleLocal and AppModuleShared business components

Step 3: Under the 'Connection Type' panel, choose 'JDBC DataSource' and enter the data source name that is created on the application server

Step 4: Save and deploy the ADF application.

Now, we have ensured that the ADF application model refers to the application server data source. This will keep the ADF application generic as we have externalized the database connection details.

Thursday, August 11, 2011

ADF generate primary key using DBSequence and display to user

In this post, I am going to demonstrate a way of generating and displaying a Oracle DB sequence and show that to user in a Oracle ADF page.

Step 1: Create a DB sequence in the database. For example let us consider order_sequence as the DB sequence

Step 2: In the ADF application, under the model project create an entity object for the table which has the primary key (for example, order_id) for which the DB sequence created above will be used for data insertion

Step 3: Open the Entity Object, go to Java tab and click on the 'Edit' button to auto-generate the entity object java class
              a. Select 'Generate Entity Object Class' check box
              b. Under the 'Include' grouping select 'Create Method' in additions to the default selected 'Accessors' option

Step 4: Now, click on the hyperlink which shows the auto-generated entity object java class and add the following java code under the create() method that is generated

super.create(attributeList);
SequenceImpl s = new SequenceImpl("ORDER_SEQUENCE", getDBTransaction());
super.create(attributeList);
Object obj = s.getSequenceNumber();
this.setOrderId((Number)obj);

Now, drag and drop the view object from the ADF data controls as a form with input text. Everytime, the form is invoked, a new sequence number will be generated from database and will be displayed in the UI.

I have illustrated another more sophisticated way of DB sequence generation here which has couple of advantages over the aforesaid method.

Friday, April 29, 2011

Migrate Oracle BAM Reports and DO across environments 11.1.1.4

Today, I am blogging on the migration of Oracle BAM reports and Data Objects across environments.

First we should export the built BAM reports and data objects as XML objects from the development environment. ICommand utility bundled with Oracle SOA suite comes in handy for this purpose.

1. Ensure that the server on which Oracle BAM reports are available is up & running as the ICommand utility extracts the reports/data objects from the MDS store

2. If you have developed the BAM reports under the 'Shared Reports', issue the following icommand in the command prompt/terminal window;

change directory to \Oracle_SOA1\bam\bin

icommand -CMD EXPORT -NAME "/public/Report/Samples/<>" -TYPE report -file Report.xml

If the BAM report is available under 'My Reports' folder, then issue the following command;

icommand -CMD EXPORT -NAME "<Report Name>" -TYPE report -file Report.xml

OR

./icommand -CMD EXPORT -NAME "/private:weblogic/Report/<Report Name>" -TYPE report -file Report.xml

Note that the /private:weblogic/Report must be used to qualify the report export with a admin user privilege.

This will generate Report1.xml under the bin directory.

To export a data object issue the following icommand;

icommand -CMD EXPORT -NAME "/Samples/Monitor Express/<>" -file DO.xml

This will generate DO.xml under the bin directory.

Transfer the generated xml files to the destination server (As per the following example, the xmls are migrated into the bin directory)

3. Now, login to the server where the exported BAM reports and DOs should be installed

4. Ensure that the server is up & running. Change directory to \Oracle_SOA1\bam\bin

5. Issue the following icommand to import the DO & report XMLs

icommand -CMD IMPORT -file DO.xml
icommand -CMD IMPORT -file Report1.xml
 
Wait for the success message and verify the successful import of 
reports & DOs in the destination server
 

Friday, April 8, 2011

BEA-280101 Persistent File Store using Bufferd I/O

While installing the Oracle SOA suite 11g on a 64-bit environment (using a 64-bit JVM), 64-bit native server libraries are created automatically in the Middleware home. However, these may not get referenced during the SOA domain startup. As a result of this, you may encounter the following Weblogic 'Warning' message in the server logs. Although being a warning message that our intuition immediately asks to ignore, this particular warning makes us inquisitive as it threatens of a 'Significantly degraded performance'.

<BEA-280101> <The persistent file store "_WLS_xxxdomain" is forced to use buffered I/O and so may have significantly degraded performance. Either the OS/hardware environment does not support the chosen write policy or the native wlfileio library is missing. See store open log messages for the requested and final write policies. See the documentation on store synchronous write policy configuration for advice.>

To overcome this Weblogic warning, ensure that the generated 64-bit native libraries are referenced during server start-up.

Go to <Middleware_Home>\user_projects\domains\<SOA Domain>\bin\SetSOADomainEnv.cmd  (or SetSOADomainEnv.sh if Linux) and add the -Djava.library.path to JAVA_OPTIONS as shown below;

set JAVA_OPTIONS=%JAVA_OPTIONS% -Djava.library.path=<Middleware_Home>\wlserver_10.3\server\native\win\x64 [Depending on whether your OS is Windows or Linux the path might slightly change]

After performing the above configuration, restart the server and Weblogic warning should now disappear.

Sunday, March 20, 2011

Oracle BPM 11g ORABPEL-02118 Variant not found Exception

While modelling the BPM workflow, there might be few service tasks to call external services. These services would essentially be referenced in the SCA composite.xml (External References Swim Lane). These would then be wired to the BPMN workflow when the service task is added on the BPM process and the service is referred. Until this moment everything is fine as expected.

However, when the external service definitions change, we will have to rebuild/refresh the adapters in the SCA so that the service definition changes are reflected properly. Now, everything seems good but at run-time, the process throws ORABPEL-02118 Variant not found exception (Detailed exception looks as below)

<Error> <oracle.soa.bpel.engine.dispatch> <BEA-000000> <failed to handle message
ORABPEL-02118 Variant not found.
The variable "Services.Externals.UpdateDBRecord.reference" is not declared in the current scope. All variables must be declared in the scope before being accessed.
This was an internal error. The flow was not generated correctly by the BPMN compiler.
Contact Oracle Support Services. Provide the error message, the composite source, and the exception stack trace in the log files (with the logging level set to debug mode).

On closer look at the Composite.xml we can notice that the wiring between the service adapters and BPMN workflow component missing. This is an intermittent issue. Solution would be to manually add the 'wiring' information into the Composite.xml and re-deploy. [Where UpdateDBRecord is the external service referenced]

<wire> <source.uri>BPMProcess/Services.Externals.UpdateDBRecord.reference</source.uri>
<target.uri>UpdateDBRecord</target.uri>
</wire>

Wednesday, March 16, 2011

ADF Runtime DB Connection Error

While creating an ADF Fusion Web Application with a database datacontrol, the following error is encountered while running the application.

oracle.jbo.DMLException: JBO-26061: Error while opening JDBC connection.
at oracle.jbo.server.ConnectionPool.createConnection(ConnectionPool.java:253)
at oracle.jbo.server.ConnectionPool.instantiateResource(ConnectionPool.java:168)
at oracle.jbo.pool.ResourcePool.createResource(ResourcePool.java:546)
at oracle.jbo.pool.ResourcePool.useResource(ResourcePool.java:327)
at oracle.jbo.server.ConnectionPool.getConnectionInternal(ConnectionPool.java:104)
Truncated. see log file for complete stacktrace
java.sql.SQLException: ORA-01005: null password given; logon denied

This is because, the ADF model project fails to register the password with the app server which cause this SQL exception.

In order to overcome this error, edit the EXTRA_JAVA_PROPERTIES and append -Djps.app.credential.overwrite.allowed=true property under the setSOADomainEnv.cmd (In Windows) or setSOADomainEnv.sh (In Linux) file as follows. This file will be located under <<Middleware_Home>>\user_projects\domains\<Your_Domain_Name>\bin folder.

set EXTRA_JAVA_PROPERTIES=%EXTRA_JAVA_PROPERTIES% -Djps.app.credential.overwrite.allowed=true -da:org.apache.xmlbeans...

Restart the Oracle Weblogic server.

Friday, March 11, 2011

Weblogic 10.3.4 Installation & Configuration on 64-bit windows

Today, I am going to explain the installation steps & configuration of Oracle Weblogic 10.3.4 for SOA suite 11g (11.1.1.4) in a 64-bit windows environment. Because, of late, I have been seeing a lots of queries in forums with same query/issue (BEA-000438: loading performance pack issue) with no relevant answers. Probably this post would help in resolving all the issues;

1. First things first; Ensure that you download the correct version of the Weblogic installer (wls1034_generic.jar)
2. Download the 64-bit JDK/JRE of Oracle Java (Latest version on date is jdk-6u24-windows-x64.exe)
3. The generic 64-bit Weblogic installer doesn't come bundled with a 64-bit JVM. Hence install the Java downloaded in step 2 on your windows environment. Care must be taken to ensure that the default installation directory (C:\Program Files) is changed - Catch here is that Weblogic doesn't recognize WELL the Java installation directory with a space in folder name. So be sure to install the Java in a folder path where none of the folder names have a space (Eg. C:\Java)
4. Now from the command prompt, execute the following command to install the Weblogic 10.3.4 64-bit;
java -D64 -jar wls1034_generic.jar
[-D64 ensures that the weblogic installation is going to be on the 64-bit JDK.]
5. Follow steps to install the Weblogic 10.3.4 server - Installation will prompt for the JDK selection, choose C:\Java (You will find this information in documentation)
6. Now, when you start the server, you may find the following error;


<Error> <Socket> <BEA-000438> <Unable to load perf
ormance pack. Using Java I/O instead. Please ensure that wlntio.dll is in: 'C:\O
racle\fmwhome\wlserver_10.3\server\native\win\32;C:\Oracle\fmwhome\wlserver_10.3
\server\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\Oracle\fmwhome\wlserver_10.3\serve
r\native\win\32\;C:\Oracle\fmwhome\wlserver_10.3\server\bin;C:\Program~\Java\jdk
1.6.0_24\jre\bin;C:\Program~\Java\jdk1.6.0_24\bin;C:\Oracle\fmwhome\wlserver_10.
3\server\native\win\32\oci920_8;C:\oraclexe\app\oracle\product\10.2.0\server\bin
;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem'

7. Go to the following location <<Weblogic_Home_Directory>>\wlserver_10.3\server\native\win\x64. Copy the wlntio.dll file and paste it under C:\Java\bin directory (if you have choosen to install Java in C:\Java).
8. Now, start the server and the error must be gone - Performance pack is now loaded in Weblogic 10.3.4

Friday, March 4, 2011

Oracle SOA Suite 11g Flex Fields

Hello All,
Its been a long time since I wrote a blog entry and the rather elaborate pause was due to lots of travelling around. Now I am back and hopefully will blog on latest Oracle FMW techniques that I find interesting or worth sharing.

In this blog, I am going to demonstrate the concept of Flex Fields in Oracle SOA suite 11g. The latest release is 11.1.1.4. Flex Fields are one of the useful features available for a manual/human task activity where the worklistapp user will be able to search for a task available under his 'Tasks' based on a value from the payload. This sounds really interesting because, if the user has huge list of tasks and wants to attend to few tasks on priority (probably based on the PO amount) - Flex Fields comes handy to help.

While defining a human task activity under the SCA composite, add the parameters under the data tab, which has to be made available as flex fields for the user. Define the parameters as simple types (Complex type parameters are not supported as flex fields). We will assign values to these parameters from the payload request in the BPEL process. Under the assignments tab, create a role and assign the task to be handled by the user (eg., weblogic, jcooper) and complete the definition.

Under the BPEL process drag drop the human task activity into the process flow from the SOA constructs panel and map the human task to the activity we defined earlier in the composite. This human task activity will also ask for parameter value definition that we defined as flex field params - Map the variables from payload appropriately to these flex fields.

Now, lets perform the critical piece of assigning the payload variables (that are required as flex fields) to the systemManagedAttributes. This will help in defining the labels for the flex fields in the BPM worklistapp which can be shown to the user for performing a search. Expand the human task activity and in the first assign node, create a copy operation and assign the payload variables to the /task:task/task:systemManagedAttributes/task:textAttribute1. [Important thing to note is Oracle SOA provides set of system attributes in various datatypes such as text, number, date, url etc.. We should be mapping our payload variables to appropriate datatype attributes]. Save and deploy the composite.

We now have to perform a final mapping in the BPM worklistapp in order to define the labels for the flex fields. Login as weblogic user into the BPM worklistapp and click on administration link. Select 'Public Flex Fields' in the left panel and search for the human task for which the flex fields must be defined (Edit Mappings for task link) . This will bring up the map attributes page where we can create labels for the flex fields. These have to be mapped to the systemManagedAttributes [Remember the assign copy operation where we assigned the payload variables to the systemManagedAttributes]. Once done for all flex fields, save and close.

Try creating an instance of the process and when the tasks come into the BPM worklistapp for the user, the user will be able to search the tasks based on the flex field values. Some more sophistication can be achieved by way of advanced search where the labels will appear as search criteria and different logical conditions can be used to perform the search. (For eg. PO Value - greater than - 50000 will show all tasks whose PO value is > 50000).