Tuesday, May 31, 2011

Enable .out log file for managed server on weblogic 10.x

I was wondering why .out file is not getting updated on my managed server. There is quick fix
enable this in weblogic console
domain > Environment > Servers > server > Logging >
General > Advanced > Redirect stdout logging enabled

and restart server.

Wednesday, April 20, 2011

auto claim in human task

When a task in human workflow is assigned to a group, the user has to acquire it before he can take action on the assigned task. Normally, The user is presented with 'Claim' button in task form. Imagine, this user has 100 tasks assigned, then he has to select the task and click on claim and then take further action; this process is very painful. How about Auto-claim?

Auto claim can be enabled by adding enableautoclaim as 'true'. shown below

<enableautoclaim>true</enableAutoClaim>

Add this element, as last element in .task file.

What happens? when user clicks on the assigned task, he is presented with 'Claim' button along with other actions e.g. Approve, Reject etc. He can acquire task, by clicking 'Claim'. If he clicks on action buttons ('Approve' or 'Reject' etc.), the task is automatically acquired, and the outcome is updated as per definition of task.

Wednesday, March 30, 2011

BAM data objects import/export

BAM comes with iCommand for admin purpose. iCommand is in $MW_HOME/ORACLE_SOA/bam/bin folder.

Follow these steps to export:
1) edit config/BAMICommandConfig.xml file. change ADCServerName and port number, where BAM server is running
2) create export.xml

<?xml version="1.0" encoding="utf-8"?>
<OracleBAMCommands continueonerror="1">
<!-- to export data-object "myDO" -->
<Export name="/operations/myProject/myDO" file="myDataObject.xml" contents="0" />
<!-- to export data-object "myDO_1" -->
<Export name="/operations/myProject/myDO_1" file="myDataObject1.xml" contents="0" />
<!-- export all reports -->
<Export type="report" all="1" file="AllReports.xml" />
<!-- export specific report -->
<Export type="report" name="/public/shared/myReport" file="myReport.xml" />
</OracleBAMCommands>

3) execute iCommand as follow

> icommand -cmdfile export.xml

Follow these steps for import
1) edit config/BAMICommandConfig.xml file. change ADCServerName and port number, where BAM server on which configuration needs to be imported.
2) execute following commands to import previously created xml files:
>icommand -cmd import -mode update -file myDataObject.xml
>icommand -cmd import -mode update -file myDataObject_1.xml
>icommand -cmd import -mode overwrite -file myReport.xml

Applies to: Oracle BAM 11.1.1.4.0
Reference: http://download.oracle.com/docs/cd/E12839_01/integration.1111/e10224/bam_app_icommand.htm

Monday, March 28, 2011

Java embedding in BPEL 2.0

According to BPEL 2.0 specifications, java embedding is not available as standard activity. Though BPEL 2.0 allows to define and use non-standard activity using <extensionActivity> element. So you will find following syntax changes from BPEL 1.1.

In Oracle SOA suite, <bpelx:exec> element appears inside <extensionactivity> element.

Also, the java import has different syntax as below:
<import importtype="http://schemas.oracle.com/bpel/extension/java" location="class/package name"></import>

Here is an example:
<process name="myTest" targetNamespace="http://test.oracle.com/bpel2.0/myTest">
. . .
. . .
<import location="java.util.Date"
importType="http://schemas.oracle.com/bpel/extension/java"/>
. . .
<sequence>
. . .
<extensionActivity>
<bpelx:exec language="java">
System.out.println("Current time is: "+ new Date());
</bpelx:exec>
</extensionActivity>

Tuesday, September 14, 2010

QR codes

I was amazed by QR codes recently. Its easy way of sharing information visually. This information can be grabbed using barcode scanner(through camera); so just by pointing camera, you grab it.

I am happy that QR codes are used in android very nicely. All application's URL are encoded using QR. it saves effort to remember, type and locate application. All you need is barcode scanner application. QR code generators are available online as well http://zxing.appspot.com/generator/

I see many more usage of this technology in future.

Sunday, August 9, 2009

AIA 2.2.1 installation on Solaris

while installing AIA FP 2.2.1 on Solaris SPARC, we came across following error:
com.oracle.oems.weblogic.AQJMSException: Failed to get Oracle AQ destinations: JMS-232: An invalid user/password was specified for the JMS connection

javax.jms.JMSSecurityException: JMS-232: An invalid user/password was specified for the JMS connection
at oracle.jms.AQjmsDBConnMgr.checkForSecurityException(AQjmsDBConnMgr.java:868)

This is can be resolved with following steps:
1) open file AIA_HOME/Infrastructure/install/wlscripts/FPWLCommonConfig.xml
2) reach to target CreateStartupClasses
3) there are three java tasks for com.oracle.oems.weblogic.AQJMSPasswordUtility
4) in the task for oraesb, password is hardcoded as 'oraesb' in clear text.
5) this should be password of 'ORAESB' database user.
6) change this password value; and restart the installation.

but If you are re-starting installing after failed attempt, you may following steps:
1. login to weblogic console.
2. Delete all the startup classes created as part of previous installation
3. Delete all AIA datasources and connection pools
4. drop AIA schema

Monday, March 3, 2008

properties file in java

Using properties file in java is pretty very common. But the same properties file gives lots of trouble while deployment. java.io.* is bit evil. absolute path makes code OS dependent, while relative path is dependent on JVM. Specially when one is working on app server, thing become much more difficult to trace and debug. i came across this cool coding tip for easy deployment.

/**********************************************************************/
String LOG_PROPERTIES_FILE = "Log4J.properties";
Properties logProperties = new Properties();
InputStream in = null;
ClassLoader loader = Thread.currentThread ().getContextClassLoader ();

try {
if (loader == null) loader = ClassLoader.getSystemClassLoader ();
in = loader.getResourceAsStream ("your/package/"+LOG_PROPERTIES_FILE);
if (in != null){
logProperties.load(in);
}
System.out.println("Loaded properties "+LOG_PROPERTIES_FILE);

} catch (IOException e) {
throw new RuntimeException("Unable to load logging property " +LOG_PROPERTIES_FILE);
}
/**********************************************************************/

instaed of using FileInputStream directly to read file from classpath, I used ClassLoader to get from current JVM's classpath. the properties file exists as part of same package. This resource file is read as InputStream and loaded in properties.