Monday, September 29, 2008

Using 'DirectSQL'

Introduction:
This is a feature of the Database Adapter. Oracle claims that by using it, it will improves the performance. This option is available from 10.1.3 version onwards.
It will let you bypass the TopLink framework, and instead use direct JDBC SQL calls to the database. Well, it will not totally bypass TopLink, it will still be used for generating the SQL, obtaining connections, and table introspection. However, other functions of TopLink, for e.g. the cache option, will not be used under DirectSQL.

Restrictions:
The restrictions that needs to be taken into account are listed below:

1) Only works for flat table structures.
2) For an Inbound Adapter you must have DeletePollingStrategy.
3) For an Outbound Adapter you can only use it with Insert.
4) Limited to work with String, Number, Date, Time, Clob and Blob DataTypes only.
5) Does not work with the DetectOmissions feature.

Configuration:
It is configured in the adapter WSDL file:

<jca:operation
InteractionSpec="oracle.tip.adapter.db.DBWriteInteractionSpec"
DescriptorName="myService.PerfOut"
DmlType="insert"
DetectOmissions="false"
UseDirectSql="true"
OptimizeMerge="true"
MappingsMetaDataURL="myService_toplink_mappings.xml" />

Addition setting:
You must also set DetectOmissions="false", this because DetectOmissions defaults to "true".

ORABPEL-02118

Problem:
This ORABPEL error will drive you crazy. This error occurs when you try to invoke an asynchronous BPEL process that is deployed to Oracle BPEL Process Manager 10.1.3.3 or later.

Solution:
I got the solution for this error over Internet & thought of sharing this with my blog readers.
In pre 10.1.3.3 release the default behaviour were to keep global variable information along with the instance information for completed BPEL processes.
In 10.1.3.3 or later, this behaviour changed for performance reasons so that the default behaviour is now, not to keep any global variables for a BPEL process once the BPEL process has completed.

You can configure this behaviour on a process level basis by using the parameter keepGlobalVariables in the bpel.xml file for the specific process:

<BPELSuitcase>
<BPELProcess src=".........." id="...........">
<configurations>
<property name="keepGlobalVariables">true</property>
</configurations>
</BPELProcess>
</BPELSuitcase>

Friday, September 12, 2008

XSLT: Remove NameSpaces

This post will guide how to strip the namespaces from qualified XML document. This is most common requirement which comes during working.

Problem: Stripping all 'xmlns' attributes from qualified XML document

Solution:
Here is an XSLT that you can use to strip all namespaces from XML document:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
exclude-result-prefixes="xsl">
<xsl:template match="*">
<xsl:element name="{local-name()}">
<xsl:apply-templates select="@* | node()"/>
</xsl:element>
</xsl:template>
<xsl:template match="@* | text()">
<xsl:copy/>
</xsl:template>
</xsl:stylesheet>


Learn with me...Way to go...

Human Task Patterns

Here I am going to give a overview of different patterns related to Human Workflow.

Simple Workflow:
In simple workflow some user activity is required for the business process to carry on. The business process may still continue, if human task expires, along some other flow.

Simple Workflow with Auto Escalation:
When a human task expires, the task can then be escalated to assignee’s manager (default rule) or to some other person, as specified by the Escalation Function.

Simple Workflow with Auto Renewal:
Renewal differs from Escalation, in terms, when the task is escalated; it goes to some other person, when renewed, the task is reassigned to the same user.

Sequential Workflow:
This pattern routes the human task to business users in a sequential manner.

Sequential Workflow with Escalation:
In case some user is not performing an action for desired time, his task could be escalated to his supervisors.

Parallel Workflow:
When multiple users work on a single task at a given point of time, for example, Public suggesions.

Adhoc Workflow:
The task is assigned to a user, where he decides where the task should go next, and completes when one of the assignees finally work on the task.

FYI Tasks:
FYI tasks are those which just allow the assignees to add comments/attachments, but their action does not affect the execution of business process.

External Routing Service:
When a third party routing algorithm determines the assignment and routing policy.

Task Continuation:
Task continuation where in the history, attachments and comments are accessible from the previous task. An example could be if you wish to implement Parallel workflow with final reviewer. The first task would be a group vote, and in second task, you can check task continuation, for the reviewer to understand basis of vote, if need be.

Wednesday, September 10, 2008

ESB Debugging

This blog of mine will focus on how to enable debugging for ESB. Here I am providing a step-by-step procedure to enable debugging. By doing this you can diagonose and troubleshoot your ESB related issue in much better way.

STEPS:

1. Login to SOA Enterprise Manager.
2. Click on the appropriate container name(HOME/OC4J_SOA).
3. Click on Administration link.
4. Click on Logger Configuration icon.
5. In the Search field type ESB and press 'enter' or 'Go' button.
6. The search result will give you the list of services related to ESB.
7. Go through the list, choose and set the appropriate service to FINEST.
8. Restart the container.

Thats it. You are done with the configuring ESB debugging.

I am also providing the list of log files which you need to see/refer at the time of any issues, for troubleshooting ESB.

LIST OF LOG LOCATIONS:

1. SOA_HOME/opmn/logs/opmn.log
2. SOA_HOME/j2ee/OC4J_SOA/log/OC4J_SOA_SOA_GROUP/oc4j/log.xml
3. SOA_HOME/opmn/logs/SOA_GROUP~OC4J_SOA~SOA_GROUP~1.log
4. SOA_HOME/j2ee/OC4J_SOA/application-deployments/esb-rt/OC4J_SOA_SOA_GROUP/application.log
5. SOA_HOME/j2ee/OC4J_SOA/application-deployments/esb-dt/OC4J_SOA_SOA_GROUP/application.log


Keep Learning with me....Happy Learnings...