Tuesday, October 11, 2011

View stale Instances in SOA 10g/11g - Update

I just had a comment from one of my readers. The comment had a question if the instances could be recovered by deploying the same version of the composite. I had another blog post on the state of bpel instances.

I tried changing the state from 9 to 5 in the CUBE_INSTANCE and could see the instance become active. I tried this in 11g and it worked. This can be used in 10g to recover the stale instances.


Cheers,
-AR

Thursday, June 2, 2011

Getting Started with Oracle BPM Suite 11gR1 – A Hands-On Tutorial

 I am avid reader and I have made it a practice to learn from reading. Most of what I have learnt today has been from my discontinued reading. Working on Oracle Fusion Middleware and SOA related technologies, I felt the need to educate myself on Oracle BPM and its concepts, for starters. I was reading the Oracle’s documentation of BPM, when I was contacted by Packt Publishing asking my opinion on the book titled Getting Started with Oracle BPMSuite 11gR1 – A Hands-On Tutorial.

Reading the book has indeed been a fulfilling experience for me. The book is simple, neat and well organized and it is worth mentioning that, this is a perfect book to start with, for learning Oracle BPM. The book throws light on the basics of BPM and hence caters to readers who are completely new to BPM making the reading experience worth one’s effort.

The book has been organized to cover BPM in a nutshell, yet very effectively. It explains in detail the entire product lifecycle encompassing product installation, product overview, product components in detail, samples and even the product administration. This will serve as a handbook which one can use to refer to any part during their busy schedule, as this book, in each chapter provides precise and right amount of information needed to make use of the product/component.

Having read the book for more than a couple of months, I particularly like the way the author has structured the flow of the book. It starts with introducing the BPM, its evolution and where BPM fits in a SOA. It adds more by explaining a process based application with mention on roles in the BPM projects.
The book then concentrates on Product Management, describing briefly the architecture, process analytics and features of the BPM product. The Functional overview covers key features of Oracle BPM Suite 11g.

Having introduced the fundamentals of BPM with relevant example, the author has by now ensured that the reader is made well aware of the basic concepts of BPM. The book then takes us through the complete installation process of Oracle BPM Suite 11g. It elaborates all installation steps right from creating schemas, configuring WLS, installing BPM with SOA already in place with attention to detail in every section. This makes installation, a learning experience and not a daunting task (as in most installations!). From my personal experience in working with product installations, I feel the author has paid acute attention even to the minute details in compiling this particular section on step-by-step process for installation of Oracle BPM Suite 11g. The installation steps, being the core to start learning BPM, has been dealt with brilliantly and definitely stands as one of the best reasons to own to the book.

The next couple of sections start to get practical, post installation of the product. These sections provide practical tutorials on application creation, role and participants’ definition and application set up. It also describes the procedure to run the application, once it has been set up.

The tutorials have been designed to facilitate readers to gain familiarity with the components of the BPM application. The sample application developed in the chapters so far however does not have any logic and that is when the next few sections kick in.  These sections help one to add more logic by means of functionality to the application already being developed (by the reader). The use of Process Composer and BAM dashboards as added functionality, are also covered.

The book also covers individual components which when used in BPM applications, provide more functionality. The Oracle Business Rules and Human Tasks are well illustrated.
From the many books that I have read in the past on SOA, I have rarely seen books illustrating the non-functional aspects of a product. I was happy to find almost more than a couple of chapters covering the non functional aspect of the BPM.. These chapters have to be read slowly and in depth, to enable better understanding of the concepts covered. The events and exception handling play a role in almost all applications and these have to be mastered in order to create a robust and an efficient application.

The book also covers the administration of the BPM environment, although not in detail. The administration by itself is an area, where most books don’t venture much into and it is reasonable not to have added more to this section. Interested readers can find more information about BPM administration from the Oracle BPM Administrators’ Guide.

The book covers almost everything one needs to know about BPM and the authors have made sure; the reader is not bogged down by too much text and concepts incomprehensible. I have been selectively reading chapters repeatedly and I would any day have this book stashed in my dashboard for quick reference!


Cheers,
-AR

Sunday, February 13, 2011

Comparing Dates in XSLT

Dates manipulation is a very daunting task in XSLT, considering the very limited date-time functions that XSLT 1.0 offers. XSLT 2.0 is enhanced as far this case is concerned. I had to compare dates in XSLT 1.0 and I was contemplating of using a java embedding node, not until I found how to compare the dates in XSLT as below:

1. Convert the date into the format YYYY-MM-DD, either using a function or using existing string functions
2. Do a translate on the date available, translate($Date, '-', '')
3. By doing a translate, the date is converted to ISO date format
4. Do this to both the dates
5. The dates in the ISO format can be directly used for comparison like ISODate1 > ISODate2 etc


Cheers,
-AR

Tuesday, January 25, 2011

BPEL States in CUBE_INSTANCE

Very recently, I had a requirement as part of Performance Testing to look up all instances of all BPEL Process which are in a particular state. I was reading the Admin Guide and found the below information. Thought it is worthwhile documenting this information for quick reference:

0 --> initiated
1 --> open and running
2 --> open and suspended
3 --> open and faulted
4 --> closed and pending
5 --> closed and completed
6 --> closed and faulted
7 --> closed and canceled
8 --> closed and aborted
9 --> closed and stale 


Cheers,
-AR

Thursday, January 13, 2011

XSLT for indentifying line feed character

A line feed character is nothing but a new line character. I had a requirement to break a text in one of fields in input xml received by a bpel process. I tried using substring-before function with checking if the value contains '&xa'. However, the soa server does not seem to recognize this.

I understood Substring wouldn't work for line feed characters. The xslt chunk in this post will remove the line feed character and extract the text. Consider the input xml:
<Emp_No>100</Emp_No>
<Emp_Name>SS</Emp_Name>
<Details>First Employee
Second Employee
Third Employee</Details>

This xml has to be transformed to:
<Details1>First Employee</Details1>
<Details2>Second Employee</Details2>
<Details3>Third Employee</Details3>

Use the XSLT below to do the transformation:
<xsl:variable name="Temp">
<xsl:value-of select="translate(/InputXml/Details, '&#xA;', '|')"/>
</xsl:variable>
<Details1>
<xsl:value-of select="substring-before($Temp,'|')"/>
</Details1>
<Details2>
<xsl:value-of select="substring-before(substring-after($Temp,'|'),'|')"/>
</Details2>
<Details3>
<xsl:value-of select="substring-after(substring-after($Temp,'|'),'|')"/>
</Details3>


Cheers,
-AR


Saturday, January 8, 2011

XSLT transformation and Line Breaks

This post details how to add and remove Line Breaks in a XSLT.

Removing Line Breaks in XSLT:

Consider the XML below. Need to remove the line breaks in the input payload:
<test>Line1
Line2</test>


Use the XSLT chunk below to remove the line break from the XML:
<xsl:variable name="Temp">
<xsl:value-of select="translate(/InputXml/test, '&#xA;', '|')"/>
</xsl:variable>
<Line1>
<xsl:value-of select="substring-before($Temp,'|')"/>
</Line1>
<Line2>
<xsl:value-of select="substring-after($Temp,'|')"/>
</Line2>


And then do a concat($Line1,',',$Line2) or as required!

Adding Line Breaks in XSLT:

Adding a line break should not be an issue once the removal of it has been figured out. Lets consider the same XML without line break. We will add line breaks to generate the xml:
<test>Line1
Line2</test>


 Use the XSLT chunk below to add the line break from the XML:
<xsl:stylesheet version="1.0">
<xsl:template match="/">
<OutputXml>
<Details>
<xsl:value-of select="concat(/InputXml/Line1,'&#xA;',/InputXml/Line2)"/>
</Details>
</OutputXml>
</xsl:template>
</xsl:stylesheet>
 

Cheers,
-AR
 

Saturday, January 1, 2011

Happy New Year 2011 !

Dear Visitors,

Wish you all a very happy and prosperous new year ahead.

Happy New Year 2011 !


Thank you all for reading my blog and supporting me. Please continue to do so in the year ahead too!

Cheers,
-AR
Creative Commons License
This work is licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported License