<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
   <title>Ramkumar Menon&apos;s Blog</title>
   <link rel="alternate" type="text/html" href="http://blogs.oracle.com/rammenon/" />
   <link rel="self" type="application/atom+xml" href="http://blogs.oracle.com/rammenon/xml/rss.xml" />
   <id>tag:blogs.oracle.com,2008:/rammenon//86</id>
   <updated>2008-07-02T19:04:15Z</updated>
   <subtitle>Principal Consultant</subtitle>
   <generator uri="http://www.sixapart.com/movabletype/">Movable Type Enterprise 1.52-en-voltron-r47459-20070213</generator>

<entry>
   <title>An attempt on 8 Queens Problem</title>
   <link rel="alternate" type="text/html" href="http://blogs.oracle.com/rammenon/2008/06/an_attempt_on_8_queens_problem.html" />
   <id>tag:blogs.oracle.com,2008:/rammenon//86.5127</id>
   
   <published>2008-07-01T07:07:29Z</published>
   <updated>2008-07-02T19:04:15Z</updated>
   
   <summary>I was trying out a different approach to 8-Queen&apos;s problem. I visualized each cell [that has a coordinate from (0,0) to (7,7) as a single number 10x + y. So you would have sort of an octal number set from...</summary>
   <author>
      <name>Ramkumar Menon</name>
      
   </author>
   
   <category term="8queens" label="8 Queens" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="algorithms" label="Algorithms" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="en-US" xml:base="http://blogs.oracle.com/rammenon/">
      <![CDATA[<p>I was trying out a different approach to 8-Queen's problem. I visualized each cell [that has a coordinate from (0,0) to (7,7) as a single number 10x + y. So you would have sort of an octal number set from 0 to 77. Each column would be 0-7, 10-17, 20-27 etc and so on till 70-77.<br />
Each row would be 0-70, 1 to 71 etc, in increments of 10. </p>

<p>7   17   27   37   47   57   67   77<br />
6   16   26   36   46   56   66   76<br />
5   15   25   35   45   55   65   75<br />
4   14   24   34   44   54   64   74<br />
3   13   23   33   43   53   63   73<br />
2   12   22   32   42   52   62   72<br />
1   11   21   31   41   51   61   71<br />
0   10   20   30   40   50   60   70</p>

<p>The solution was a recursive function that takes in  a current column index [ranging from 0 to 7], and computing the matching lists of size 8, after applying an exclusion rule.</p>

<p>The exclusion rule is interesting.<br />
For an item with value, lets say 43, the exclusion rule would test the row-wise, columnwise and diagonal collisions through a simple modulo-checking logic. The code is given below. Note that the code has not been subjected to any review, including self-review, though it generates the required 92 distinct permutations as the 8Q solution demands.<br />
<em><br />
package equeen;</p>

<p>import java.io.FileWriter;</p>

<p>import java.util.ArrayList;<br />
import java.util.List;<br />
import java.util.Stack;</p>

<p>public class EightQueens {</p>

<p>    public boolean computeMatches(int rowIndex, List matchedList) throws Exception{<br />
        if(matchedList.size() == 8) {<br />
          printToFile(matchedList);<br />
        }<br />
        boolean matched = false;<br />
        for(int i = 10*rowIndex ; i <= 10*rowIndex + 7 ; i++) {<br />
            int cellValue = i;<br />
            boolean isExcluded = computeExclusionRule(cellValue, matchedList);<br />
            if(!isExcluded) {<br />
                matched = true;<br />
                matchedList.add(cellValue);<br />
                if(computeMatches(rowIndex+1,matchedList)) matched = !matched;    <br />
            }<br />
        }</p>

<p>        if(!matched && matchedList.size() > 0) {<br />
            matchedList.remove(matchedList.size() - 1);<br />
            return true;</p>

<p>        }<br />
        else return false;<br />
    }</p>

<p>    private boolean computeExclusionRule(int value, List matchedList) {<br />
        for(int i = 0 ; i < matchedList.size() ; i++) {<br />
            int prevNumber = Integer.parseInt("" + matchedList.get(i));<br />
            int diff = (value - prevNumber);<br />
            if((diff % 9 == 0 && (prevNumber % 10 > value % 10)) ||<br />
               (diff % 10 == 0) || <br />
               (diff % 11 == 0 && (prevNumber % 10 < value % 10))) {<br />
              return true;<br />
            }<br />
        }<br />
        return false;<br />
    }<br />
    <br />
    public static void main(String[] args)  throws Exception {<br />
         EightQueens q = new EightQueens();<br />
         List emptyList = new ArrayList();<br />
         int ZEROTHCOLUMN_INDEX = 0;<br />
         long t = System.currentTimeMillis();<br />
         q.computeMatches(ZEROTHCOLUMN_INDEX,emptyList);<br />
         System.err.println("Number of ms for execution - " + (System.currentTimeMillis() - t));<br />
    }</p>

<p>    private static FileWriter fw = null;    <br />
    private static void printToFile(List matchedList) throws Exception {<br />
            if(fw == null) {<br />
                fw = new FileWriter("d:\\temp\\results.log");<br />
            }<br />
            String str = "";<br />
            for(int i = 0 ; i < matchedList.size() ; i++) {<br />
                int itemValue = Integer.parseInt("" + matchedList.get(i));<br />
                str += getCoords(itemValue) + " ";</p>

<p>            }<br />
            fw.write(str + "\r\n");<br />
            fw.flush();        <br />
    }<br />
    private static String getCoords(int cellValue) {<br />
        int x = cellValue/10;<br />
        int y = cellValue % 10;<br />
        return "(" + x + "," + y + ")"; <br />
    }<br />
    </p>

<p>}</em><br />
</p>]]>
      
   </content>
</entry>
<entry>
   <title>Invoking an EJB Session Bean from a BPEL Process</title>
   <link rel="alternate" type="text/html" href="http://blogs.oracle.com/rammenon/2008/05/invoking_an_ejb_session_bean_f.html" />
   <id>tag:blogs.oracle.com,2008:/rammenon//86.2637</id>
   
   <published>2008-05-16T23:30:07Z</published>
   <updated>2008-07-02T19:05:09Z</updated>
   
   <summary>EJB session beans can be invoked from a BPEL process through WSIF. Oracle BPEL PM ships with a WSIF provider for invoking EJBs. For demonstrating this, lets create a new EJB session bean. The session bean shall have one single...</summary>
   <author>
      <name>Ramkumar Menon</name>
      
   </author>
   
   <category term="bpel" label="BPEL" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="ejbbinding" label="EJB Binding" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="en-US" xml:base="http://blogs.oracle.com/rammenon/">
      <![CDATA[<p><P>EJB session beans can be invoked from a BPEL process through WSIF. Oracle BPEL PM ships with a WSIF provider for invoking EJBs. <br />
<P>For demonstrating this, lets create a new EJB session bean. The session bean shall have one single business method namely "greetUser" that takes in a string argument userName, and returns a string value "Hello &amp;lt;USERNAME&gt;". <br />
<P><B>Step 1: Creating the HelloWorld Session Bean.</B> <br />
<OL><br />
<LI>Create a new BPEL empty process project. <br />
<LI>Open up the New Gallery and choose to create a new EJB session bean. <br />
<P><BR><IMG src="http://blogs.oracle.com/ramkumarMenon/gems/newejbsession.JPG"> </P><br />
<LI>Choose the option for creating EJB 2.1 session bean. Give the Bean the name"HelloWorld", accept the remaining defaults and finish the wizard. <br />
<LI>Double click on the EJB in the Applications Navigator to bring up the EJB Module Editor". Specify the new business method in the "Methods" tab. Type in the parameter name and type manually in the text editor <br />
<P><BR><IMG src="http://blogs.oracle.com/ramkumarMenon/gems/addbusmethod.JPG"> </P><br />
<LI>CLick ok to accept the changes. Click on the "orion-ejb-jar.xml" in the Applications Navigator. Here you need to provide the JNDI locaiton of the session bean. For this, add a "location" attribute on the &amp;lt;SESSION-DEPLOYMENT&gt;to provide the JNDI "ejb/session/HelloWorld". <br />
<DIV style="WIDTH: 700px"><br />
<DIV class=dp-highlighter><br />
<DIV class=bar><br />
<DIV class=tools><A onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="file:///D:/Temp/syntaxhighlight/dp.SyntaxHighlighter/ejb.html#">view plain</A><A onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="file:///D:/Temp/syntaxhighlight/dp.SyntaxHighlighter/ejb.html#">copy to clipboard</A><A onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="file:///D:/Temp/syntaxhighlight/dp.SyntaxHighlighter/ejb.html#">print</A><A onclick="dp.sh.Toolbar.Command('About',this);return false;" href="file:///D:/Temp/syntaxhighlight/dp.SyntaxHighlighter/ejb.html#">?</A></DIV></DIV><br />
<OL class=dp-xml><br />
<LI class=alt><SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;?</SPAN><SPAN class=tag-name>xml</SPAN></FONT></STRONG><SPAN>&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>version</FONT></SPAN><SPAN>&nbsp;=&nbsp;</SPAN><SPAN class=attribute-value><FONT color=#0000ff>'1.0'</FONT></SPAN><SPAN>&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>encoding</FONT></SPAN><SPAN>&nbsp;=&nbsp;</SPAN><SPAN class=attribute-value><FONT color=#0000ff>'windows-1252'</FONT></SPAN><SPAN class=tag><STRONG><FONT color=#006699>?&gt;</FONT></STRONG></SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN></SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;</SPAN><SPAN class=tag-name>orion-ejb-jar</SPAN></FONT></STRONG><SPAN>&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>xmlns:xsi</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"http://www.w3.org/2001/XMLSchema-instance"</FONT></SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>xsi:noNamespaceSchemaLocation</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"http://xmlns.oracle.com/oracleas/schema/orion-ejb-jar-10_0.xsd"</FONT></SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>schema-major-version</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"10"</FONT></SPAN><SPAN>&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>schema-minor-version</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"0"</FONT></SPAN><SPAN class=tag><STRONG><FONT color=#006699>&gt;</FONT></STRONG></SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;</SPAN><SPAN class=tag-name>enterprise-beans</SPAN><SPAN class=tag>&gt;</SPAN></FONT></STRONG><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;</SPAN><SPAN class=tag-name>session-deployment</SPAN></FONT></STRONG><SPAN>&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>name</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"HelloWorld"</FONT></SPAN><SPAN>&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>location</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"ejb/session/HelloWorld"</FONT></SPAN><SPAN class=tag><STRONG><FONT color=#006699>/&gt;</FONT></STRONG></SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;/</SPAN><SPAN class=tag-name>enterprise-beans</SPAN><SPAN class=tag>&gt;</SPAN></FONT></STRONG><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN></SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;/</SPAN><SPAN class=tag-name>orion-ejb-jar</SPAN><SPAN class=tag>&gt;</SPAN></FONT></STRONG></LI></OL></DIV></DIV><br />
<LI>Your bean is now ready for deployment. Build the project and deploy to an OC4J container. </LI></OL><br />
<P><B>Step 2: Build the BPEL Process</B> </P><br />
<P><br />
<OL><br />
<LI>Create a new BPEL Process project. <br />
<LI>Create a new WSDL document in the project directory and name it HelloWorldEJB.wsdl. <br />
<LI name <li Create portType with one operation named ?greetUser? [it need not be same business method, though]. as a the EJB>Add the bindings section that allow the process to invoke the EJB through WSIF. The salient portion of the bindings section is the jndiProviderURL. For an Application Server install, use the opmn ormi jndi provider URL. For standalone installations,use plain ormi provider URLs. The ejbName in the provider URL is the ejbName value in the ejb-jar.xml that was created as a part of the EJB session bean creation. <br />
<OL><br />
<P></P><br />
<DIV style="WIDTH: 700px"><br />
<DIV class=dp-highlighter><br />
<DIV class=bar><br />
<DIV class=tools><A onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="file:///D:/Temp/syntaxhighlight/dp.SyntaxHighlighter/ejb.html#">view plain</A><A onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="file:///D:/Temp/syntaxhighlight/dp.SyntaxHighlighter/ejb.html#">copy to clipboard</A><A onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="file:///D:/Temp/syntaxhighlight/dp.SyntaxHighlighter/ejb.html#">print</A><A onclick="dp.sh.Toolbar.Command('About',this);return false;" href="file:///D:/Temp/syntaxhighlight/dp.SyntaxHighlighter/ejb.html#">?</A></DIV></DIV><br />
<OL class=dp-xml><br />
<LI class=alt><SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;?</SPAN><SPAN class=tag-name>xml</SPAN></FONT></STRONG><SPAN>&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>version</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"1.0"</FONT></SPAN><SPAN>&nbsp;</SPAN><SPAN class=tag><STRONG><FONT color=#006699>?&gt;</FONT></STRONG></SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN></SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;</SPAN><SPAN class=tag-name>definitions</SPAN></FONT></STRONG><SPAN>&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>targetNamespace</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"http://samples.otn.com/"</FONT></SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>xmlns:tns</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"http://samples.otn.com/"</FONT></SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>xmlns:xsd</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"http://www.w3.org/2001/XMLSchema"</FONT></SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>xmlns:format</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"http://schemas.xmlsoap.org/wsdl/formatbinding/"</FONT></SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>xmlns:ejb</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"http://schemas.xmlsoap.org/wsdl/ejb/"</FONT></SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>xmlns:plnk</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"http://schemas.xmlsoap.org/ws/2003/05/partner-link/"</FONT></SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>xmlns</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"http://schemas.xmlsoap.org/wsdl/"</FONT></SPAN><SPAN class=tag><STRONG><FONT color=#006699>&gt;</FONT></STRONG></SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;</SPAN><SPAN class=comments>&amp;lt;!--&nbsp;message&nbsp;declns&nbsp;--&gt;</SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;</SPAN><SPAN class=tag-name>message</SPAN></FONT></STRONG><SPAN>&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>name</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"HelloWorldRequestMessage"</FONT></SPAN><SPAN class=tag><STRONG><FONT color=#006699>&gt;</FONT></STRONG></SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;</SPAN><SPAN class=tag-name>part</SPAN></FONT></STRONG><SPAN>&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>name</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"userName"</FONT></SPAN><SPAN>&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>type</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"xsd:string"</FONT></SPAN><SPAN class=tag><STRONG><FONT color=#006699>/&gt;</FONT></STRONG></SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;/</SPAN><SPAN class=tag-name>message</SPAN><SPAN class=tag>&gt;</SPAN></FONT></STRONG><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;</SPAN><SPAN class=tag-name>message</SPAN></FONT></STRONG><SPAN>&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>name</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"HelloWorldResponseMessage"</FONT></SPAN><SPAN class=tag><STRONG><FONT color=#006699>&gt;</FONT></STRONG></SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;</SPAN><SPAN class=tag-name>part</SPAN></FONT></STRONG><SPAN>&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>name</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"message"</FONT></SPAN><SPAN>&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>type</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"xsd:string"</FONT></SPAN><SPAN class=tag><STRONG><FONT color=#006699>/&gt;</FONT></STRONG></SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;/</SPAN><SPAN class=tag-name>message</SPAN><SPAN class=tag>&gt;</SPAN></FONT></STRONG><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;</SPAN><SPAN class=comments>&amp;lt;!--&nbsp;port&nbsp;type&nbsp;declns&nbsp;--&gt;</SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;</SPAN><SPAN class=tag-name>portType</SPAN></FONT></STRONG><SPAN>&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>name</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"HelloWorldPT"</FONT></SPAN><SPAN class=tag><STRONG><FONT color=#006699>&gt;</FONT></STRONG></SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;</SPAN><SPAN class=tag-name>operation</SPAN></FONT></STRONG><SPAN>&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>name</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"greetUser"</FONT></SPAN><SPAN class=tag><STRONG><FONT color=#006699>&gt;</FONT></STRONG></SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;</SPAN><SPAN class=tag-name>input</SPAN></FONT></STRONG><SPAN>&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>name</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"HelloWorldRequest"</FONT></SPAN><SPAN>&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>message</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"tns:HelloWorldRequestMessage"</FONT></SPAN><SPAN class=tag><STRONG><FONT color=#006699>/&gt;</FONT></STRONG></SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;</SPAN><SPAN class=tag-name>output</SPAN></FONT></STRONG><SPAN>&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>name</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"HelloWorldResponse"</FONT></SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>message</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"tns:HelloWorldResponseMessage"</FONT></SPAN><SPAN class=tag><STRONG><FONT color=#006699>/&gt;</FONT></STRONG></SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;/</SPAN><SPAN class=tag-name>operation</SPAN><SPAN class=tag>&gt;</SPAN></FONT></STRONG><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;/</SPAN><SPAN class=tag-name>portType</SPAN><SPAN class=tag>&gt;</SPAN></FONT></STRONG><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;</SPAN><SPAN class=comments>&amp;lt;!--&nbsp;binding&nbsp;declns&nbsp;--&gt;</SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;</SPAN><SPAN class=tag-name>binding</SPAN></FONT></STRONG><SPAN>&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>name</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"EJBBinding"</FONT></SPAN><SPAN>&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>type</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"tns:HelloWorldPT"</FONT></SPAN><SPAN class=tag><STRONG><FONT color=#006699>&gt;</FONT></STRONG></SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;</SPAN><SPAN class=tag-name>ejb:binding</SPAN><SPAN class=tag>/&gt;</SPAN></FONT></STRONG><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;</SPAN><SPAN class=tag-name>format:typeMapping</SPAN></FONT></STRONG><SPAN>&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>encoding</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"Java"</FONT></SPAN><SPAN>&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>style</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"Java"</FONT></SPAN><SPAN class=tag><STRONG><FONT color=#006699>&gt;</FONT></STRONG></SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;</SPAN><SPAN class=tag-name>format:typeMap</SPAN></FONT></STRONG><SPAN>&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>typeName</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"xsd:string"</FONT></SPAN><SPAN>&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>formatType</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"java.lang.String"</FONT></SPAN><SPAN class=tag><STRONG><FONT color=#006699>/&gt;</FONT></STRONG></SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;/</SPAN><SPAN class=tag-name>format:typeMapping</SPAN><SPAN class=tag>&gt;</SPAN></FONT></STRONG><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;</SPAN><SPAN class=tag-name>operation</SPAN></FONT></STRONG><SPAN>&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>name</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"greetUser"</FONT></SPAN><SPAN class=tag><STRONG><FONT color=#006699>&gt;</FONT></STRONG></SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;</SPAN><SPAN class=tag-name>ejb:operation</SPAN></FONT></STRONG><SPAN>&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>methodName</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"greetUser"</FONT></SPAN><SPAN>&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>parameterOrder</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"userName"</FONT></SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>interface</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"remote"</FONT></SPAN><SPAN>&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>returnPart</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"message"</FONT></SPAN><SPAN class=tag><STRONG><FONT color=#006699>/&gt;</FONT></STRONG></SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;</SPAN><SPAN class=tag-name>input</SPAN></FONT></STRONG><SPAN>&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>name</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"HelloWorldRequest"</FONT></SPAN><SPAN class=tag><STRONG><FONT color=#006699>/&gt;</FONT></STRONG></SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;</SPAN><SPAN class=tag-name>output</SPAN></FONT></STRONG><SPAN>&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>name</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"HelloWorldResponse"</FONT></SPAN><SPAN class=tag><STRONG><FONT color=#006699>/&gt;</FONT></STRONG></SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;/</SPAN><SPAN class=tag-name>operation</SPAN><SPAN class=tag>&gt;</SPAN></FONT></STRONG><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;/</SPAN><SPAN class=tag-name>binding</SPAN><SPAN class=tag>&gt;</SPAN></FONT></STRONG><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;</SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;</SPAN><SPAN class=comments>&amp;lt;!--&nbsp;service&nbsp;decln&nbsp;--&gt;</SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;</SPAN><SPAN class=tag-name>service</SPAN></FONT></STRONG><SPAN>&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>name</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"HelloWorldService"</FONT></SPAN><SPAN class=tag><STRONG><FONT color=#006699>&gt;</FONT></STRONG></SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;</SPAN><SPAN class=tag-name>port</SPAN></FONT></STRONG><SPAN>&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>name</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"EJBPort"</FONT></SPAN><SPAN>&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>binding</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"tns:EJBBinding"</FONT></SPAN><SPAN class=tag><STRONG><FONT color=#006699>&gt;</FONT></STRONG></SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=comments>&amp;lt;!--&nbsp;Put&nbsp;vendor-specific&nbsp;deployment&nbsp;information&nbsp;here&nbsp;--&gt;</SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;</SPAN><SPAN class=tag-name>ejb:address</SPAN></FONT></STRONG><SPAN>&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>className</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"helloworldbean.HelloWorldHome"</FONT></SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>jndiName</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"ejb/session/HelloWorld"</FONT></SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>initialContextFactory</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"com.evermind.server.rmi.RMIInitialContextFactory"</FONT></SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>jndiProviderURL</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"opmn:ormi://serverHost:opmnRequestPort:oc4jInstanceName/ejbName"</FONT></SPAN><SPAN class=tag><STRONG><FONT color=#006699>/&gt;</FONT></STRONG></SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;/</SPAN><SPAN class=tag-name>port</SPAN><SPAN class=tag>&gt;</SPAN></FONT></STRONG><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;/</SPAN><SPAN class=tag-name>service</SPAN><SPAN class=tag>&gt;</SPAN></FONT></STRONG><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;</SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;</SPAN><SPAN class=tag-name>plnk:partnerLinkType</SPAN></FONT></STRONG><SPAN>&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>name</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"HelloWorldService"</FONT></SPAN><SPAN class=tag><STRONG><FONT color=#006699>&gt;</FONT></STRONG></SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;</SPAN><SPAN class=tag-name>plnk:role</SPAN></FONT></STRONG><SPAN>&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>name</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"HelloWorldServiceProvider"</FONT></SPAN><SPAN class=tag><STRONG><FONT color=#006699>&gt;</FONT></STRONG></SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;</SPAN><SPAN class=tag-name>plnk:portType</SPAN></FONT></STRONG><SPAN>&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>name</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"tns:HelloWorldPT"</FONT></SPAN><SPAN class=tag><STRONG><FONT color=#006699>/&gt;</FONT></STRONG></SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;/</SPAN><SPAN class=tag-name>plnk:role</SPAN><SPAN class=tag>&gt;</SPAN></FONT></STRONG><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;/</SPAN><SPAN class=tag-name>plnk:partnerLinkType</SPAN><SPAN class=tag>&gt;</SPAN></FONT></STRONG><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN></SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;/</SPAN><SPAN class=tag-name>definitions</SPAN><SPAN class=tag>&gt;</SPAN></FONT></STRONG><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN></LI></OL></DIV></DIV><br />
<LI>Create a partnerlink for the WSDL that you just created and an invoke activity that can be used to invoke the plnk. <br />
<LI>Provide the username/password for connecting to the OC4J Instance that hosts the EJB within the bpel.xml deployment descriptor. This is typically the oc4jadmin user. <br />
<DIV style="WIDTH: 700px"><br />
<DIV class=dp-highlighter><br />
<DIV class=bar><br />
<DIV class=tools><A onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="file:///D:/Temp/syntaxhighlight/dp.SyntaxHighlighter/ejb.html#">view plain</A><A onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="file:///D:/Temp/syntaxhighlight/dp.SyntaxHighlighter/ejb.html#">copy to clipboard</A><A onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="file:///D:/Temp/syntaxhighlight/dp.SyntaxHighlighter/ejb.html#">print</A><A onclick="dp.sh.Toolbar.Command('About',this);return false;" href="file:///D:/Temp/syntaxhighlight/dp.SyntaxHighlighter/ejb.html#">?</A></DIV></DIV><br />
<OL class=dp-xml><br />
<LI class=alt><SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN></SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;?</SPAN><SPAN class=tag-name>xml</SPAN></FONT></STRONG><SPAN>&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>version</FONT></SPAN><SPAN>&nbsp;=&nbsp;</SPAN><SPAN class=attribute-value><FONT color=#0000ff>'1.0'</FONT></SPAN><SPAN>&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>encoding</FONT></SPAN><SPAN>&nbsp;=&nbsp;</SPAN><SPAN class=attribute-value><FONT color=#0000ff>'UTF-8'</FONT></SPAN><SPAN class=tag><STRONG><FONT color=#006699>?&gt;</FONT></STRONG></SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN></SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;</SPAN><SPAN class=tag-name>BPELSuitcase</SPAN><SPAN class=tag>&gt;</SPAN></FONT></STRONG><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;</SPAN><SPAN class=tag-name>BPELProcess</SPAN></FONT></STRONG><SPAN>&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>id</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"HelloWorldBPELClient"</FONT></SPAN><SPAN>&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>src</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"HelloWorldBPELClient.bpel"</FONT></SPAN><SPAN class=tag><STRONG><FONT color=#006699>&gt;</FONT></STRONG></SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;</SPAN><SPAN class=tag-name>partnerLinkBindings</SPAN><SPAN class=tag>&gt;</SPAN></FONT></STRONG><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;</SPAN><SPAN class=tag-name>partnerLinkBinding</SPAN></FONT></STRONG><SPAN>&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>name</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"client"</FONT></SPAN><SPAN class=tag><STRONG><FONT color=#006699>&gt;</FONT></STRONG></SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;</SPAN><SPAN class=tag-name>property</SPAN></FONT></STRONG><SPAN>&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>name</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"wsdlLocation"</FONT></SPAN><SPAN class=tag><STRONG><FONT color=#006699>&gt;</FONT></STRONG></SPAN><SPAN>HelloWorldBPELClient.wsdl</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;/</SPAN><SPAN class=tag-name>property</SPAN><SPAN class=tag>&gt;</SPAN></FONT></STRONG><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;/</SPAN><SPAN class=tag-name>partnerLinkBinding</SPAN><SPAN class=tag>&gt;</SPAN></FONT></STRONG><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;</SPAN><SPAN class=tag-name>partnerLinkBinding</SPAN></FONT></STRONG><SPAN>&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>name</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"HelloWorld_plt"</FONT></SPAN><SPAN class=tag><STRONG><FONT color=#006699>&gt;</FONT></STRONG></SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;</SPAN><SPAN class=tag-name>property</SPAN></FONT></STRONG><SPAN>&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>name</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"wsdlLocation"</FONT></SPAN><SPAN class=tag><STRONG><FONT color=#006699>&gt;</FONT></STRONG></SPAN><SPAN>HelloWorldEJB.wsdl</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;/</SPAN><SPAN class=tag-name>property</SPAN><SPAN class=tag>&gt;</SPAN></FONT></STRONG><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;</SPAN><SPAN class=tag-name>property</SPAN></FONT></STRONG><SPAN>&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>name</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"java.naming.security.principal"</FONT></SPAN><SPAN class=tag><STRONG><FONT color=#006699>&gt;</FONT></STRONG></SPAN><SPAN>oc4jadmin</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;/</SPAN><SPAN class=tag-name>property</SPAN><SPAN class=tag>&gt;</SPAN></FONT></STRONG><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;</SPAN><SPAN class=tag-name>property</SPAN></FONT></STRONG><SPAN>&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>name</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"java.naming.security.credentials"</FONT></SPAN><SPAN class=tag><STRONG><FONT color=#006699>&gt;</FONT></STRONG></SPAN><SPAN>welcome1</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;/</SPAN><SPAN class=tag-name>property</SPAN><SPAN class=tag>&gt;</SPAN></FONT></STRONG><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;/</SPAN><SPAN class=tag-name>partnerLinkBinding</SPAN><SPAN class=tag>&gt;</SPAN></FONT></STRONG><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;/</SPAN><SPAN class=tag-name>partnerLinkBindings</SPAN><SPAN class=tag>&gt;</SPAN></FONT></STRONG><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;/</SPAN><SPAN class=tag-name>BPELProcess</SPAN><SPAN class=tag>&gt;</SPAN></FONT></STRONG><br />
<LI class=alt><STRONG><FONT color=#006699><SPAN class=tag></SPAN></FONT></STRONG></SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;/</SPAN><SPAN class=tag-name>BPELSuitcase&gt;</SPAN></FONT></STRONG><PRE class=xml style="DISPLAY: none" name="code" cols="80" rows="120">&nbsp;</PRE></LI></OL></DIV></DIV><br />
<LI>Copy the EJB compiled classes from the EJB project created earlier into the $ORACLE_HOME/bpel/system/classes directory and restart the BPEL runtime. These classes are required for BPEL to get a hold on the home interface of the EJB to create an invoke the business method. <br />
<LI>Deploy the BPEL Process and see the results for yourself </LI></OL><br />
<P>The demo EJB and BPEL Client project can be downloaded from this <A href="http://blogs.oracle.com/ramkumarMenon/gems/HelloWorld.zip">link</A>. </P></LI></OL></p>]]>
      
   </content>
</entry>
<entry>
   <title>Interesting XSLT Recipe - Computing line totals</title>
   <link rel="alternate" type="text/html" href="http://blogs.oracle.com/rammenon/2008/05/interesting_xslt_recipe_comput.html" />
   <id>tag:blogs.oracle.com,2008:/rammenon//86.2638</id>
   
   <published>2008-05-08T05:03:53Z</published>
   <updated>2008-07-02T19:06:19Z</updated>
   
   <summary><![CDATA[You might have run into a requirement where you need to compute the total value of all items in a purchase order. Consider the PO XML shown below. view plaincopy to clipboardprint? &nbsp;&nbsp; &amp;lt;?xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"&nbsp;?&gt;&nbsp;&nbsp; &amp;lt;po&nbsp;xmlns="http://www.example.org"&gt;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&amp;lt;Items&gt;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;lt;item&gt;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;lt;price&gt;1&amp;lt;/price&gt;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;lt;qty&gt;2&amp;lt;/qty&gt;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;lt;/item&gt;&nbsp;&nbsp;...]]></summary>
   <author>
      <name>Ramkumar Menon</name>
      
   </author>
   
   <category term="xpath20" label="XPath 2.0" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="xslt" label="XSLT" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="en-US" xml:base="http://blogs.oracle.com/rammenon/">
      <![CDATA[<p>You might have run into a requirement where you need to compute the total value of all items in a purchase order. Consider the PO XML shown below. <br />
<DIV style="WIDTH: 700px"><br />
<DIV class=dp-highlighter><br />
<DIV class=bar><br />
<DIV class=tools><A onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="file:///D:/Temp/syntaxhighlight/dp.SyntaxHighlighter/xsl_be.html#">view plain</A><A onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="file:///D:/Temp/syntaxhighlight/dp.SyntaxHighlighter/xsl_be.html#">copy to clipboard</A><A onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="file:///D:/Temp/syntaxhighlight/dp.SyntaxHighlighter/xsl_be.html#">print</A><A onclick="dp.sh.Toolbar.Command('About',this);return false;" href="file:///D:/Temp/syntaxhighlight/dp.SyntaxHighlighter/xsl_be.html#">?</A></DIV></DIV><br />
<OL class=dp-xml><br />
<LI class=alt><SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN></SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;?</SPAN><SPAN class=tag-name>xml</SPAN></FONT></STRONG><SPAN>&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>version</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"1.0"</FONT></SPAN><SPAN>&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>encoding</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"UTF-8"</FONT></SPAN><SPAN>&nbsp;</SPAN><SPAN class=tag><STRONG><FONT color=#006699>?&gt;</FONT></STRONG></SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN></SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;</SPAN><SPAN class=tag-name>po</SPAN></FONT></STRONG><SPAN>&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>xmlns</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"http://www.example.org"</FONT></SPAN><SPAN class=tag><STRONG><FONT color=#006699>&gt;</FONT></STRONG></SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;</SPAN><SPAN class=tag-name>Items</SPAN><SPAN class=tag>&gt;</SPAN></FONT></STRONG><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;</SPAN><SPAN class=tag-name>item</SPAN><SPAN class=tag>&gt;</SPAN></FONT></STRONG><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;</SPAN><SPAN class=tag-name>price</SPAN><SPAN class=tag>&gt;</SPAN></FONT></STRONG><SPAN>1</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;/</SPAN><SPAN class=tag-name>price</SPAN><SPAN class=tag>&gt;</SPAN></FONT></STRONG><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;</SPAN><SPAN class=tag-name>qty</SPAN><SPAN class=tag>&gt;</SPAN></FONT></STRONG><SPAN>2</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;/</SPAN><SPAN class=tag-name>qty</SPAN><SPAN class=tag>&gt;</SPAN></FONT></STRONG><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;/</SPAN><SPAN class=tag-name>item</SPAN><SPAN class=tag>&gt;</SPAN></FONT></STRONG><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;</SPAN><SPAN class=tag-name>item</SPAN><SPAN class=tag>&gt;</SPAN></FONT></STRONG><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;</SPAN><SPAN class=tag-name>price</SPAN><SPAN class=tag>&gt;</SPAN></FONT></STRONG><SPAN>3</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;/</SPAN><SPAN class=tag-name>price</SPAN><SPAN class=tag>&gt;</SPAN></FONT></STRONG><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;</SPAN><SPAN class=tag-name>qty</SPAN><SPAN class=tag>&gt;</SPAN></FONT></STRONG><SPAN>4</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;/</SPAN><SPAN class=tag-name>qty</SPAN><SPAN class=tag>&gt;</SPAN></FONT></STRONG><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;/</SPAN><SPAN class=tag-name>item</SPAN><SPAN class=tag>&gt;</SPAN></FONT></STRONG><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;</SPAN><SPAN class=tag-name>item</SPAN><SPAN class=tag>&gt;</SPAN></FONT></STRONG><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;</SPAN><SPAN class=tag-name>price</SPAN><SPAN class=tag>&gt;</SPAN></FONT></STRONG><SPAN>5</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;/</SPAN><SPAN class=tag-name>price</SPAN><SPAN class=tag>&gt;</SPAN></FONT></STRONG><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;</SPAN><SPAN class=tag-name>qty</SPAN><SPAN class=tag>&gt;</SPAN></FONT></STRONG><SPAN>6</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;/</SPAN><SPAN class=tag-name>qty</SPAN><SPAN class=tag>&gt;</SPAN></FONT></STRONG><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;/</SPAN><SPAN class=tag-name>item</SPAN><SPAN class=tag>&gt;</SPAN></FONT></STRONG><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;/</SPAN><SPAN class=tag-name>Items</SPAN><SPAN class=tag>&gt;</SPAN></FONT></STRONG><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN></SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;/</SPAN><SPAN class=tag-name>po</SPAN><SPAN class=tag>&gt;</SPAN></FONT></STRONG><SPAN>&nbsp;&nbsp;</SPAN></SPAN></LI></OL></DIV> </DIV>You might want to compute the total value of all items in the purchase Order. For computing this, you would need to multiply the price and qty for each item, and add them up. In XSLT 1.0, I guess the way to do this would be to recursively invoke a template that computes the sum total. In XSLT 2.0, this can be done in a very elegant single expression. <br />
<DIV style="WIDTH: 700px"><br />
<DIV class=dp-highlighter><br />
<DIV class=bar><br />
<DIV class=tools><A onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="file:///D:/Temp/syntaxhighlight/dp.SyntaxHighlighter/xsl_be.html#">view plain</A><A onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="file:///D:/Temp/syntaxhighlight/dp.SyntaxHighlighter/xsl_be.html#">copy to clipboard</A><A onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="file:///D:/Temp/syntaxhighlight/dp.SyntaxHighlighter/xsl_be.html#">print</A><A onclick="dp.sh.Toolbar.Command('About',this);return false;" href="file:///D:/Temp/syntaxhighlight/dp.SyntaxHighlighter/xsl_be.html#">?</A></DIV></DIV><br />
<OL class=dp-xml><br />
<LI class=alt><SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;</SPAN><SPAN class=tag-name>xsl:variable</SPAN></FONT></STRONG><SPAN>&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>name</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"itemVar"</FONT></SPAN><SPAN>&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>select</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"/tns:po/tns:Items/tns:item"</FONT></SPAN><SPAN class=tag><STRONG><FONT color=#006699>/&gt;</FONT></STRONG></SPAN><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;</SPAN><SPAN class=tag-name>xsl:template</SPAN></FONT></STRONG><SPAN>&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>match</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"/"</FONT></SPAN><SPAN class=tag><STRONG><FONT color=#006699>&gt;</FONT></STRONG></SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;</SPAN><SPAN class=tag-name>tns:poSummary</SPAN><SPAN class=tag>&gt;</SPAN></FONT></STRONG><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;</SPAN><SPAN class=tag-name>tns:totalValue</SPAN><SPAN class=tag>&gt;</SPAN><SPAN class=tag>&amp;lt;</SPAN><SPAN class=tag-name>xsl:value-of</SPAN></FONT></STRONG><SPAN>&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>select</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"sum(for&nbsp;$i&nbsp;in&nbsp;$itemVar&nbsp;return&nbsp;($i/tns:price&nbsp;*&nbsp;$i/tns:qty))"</FONT></SPAN><STRONG><FONT color=#006699><SPAN class=tag>/&gt;</SPAN><SPAN class=tag>&amp;lt;/</SPAN><SPAN class=tag-name>tns:totalValue</SPAN><SPAN class=tag>&gt;</SPAN></FONT></STRONG><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;/</SPAN><SPAN class=tag-name>tns:poSummary</SPAN><SPAN class=tag>&gt;</SPAN></FONT></STRONG><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;/</SPAN><SPAN class=tag-name>xsl:template</SPAN><SPAN class=tag>&gt;</SPAN></FONT></STRONG><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN></SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;/</SPAN><SPAN class=tag-name>xsl:stylesheet</SPAN><SPAN class=tag>&gt;</SPAN></FONT></STRONG><SPAN>&nbsp;&nbsp;</SPAN></SPAN></LI></OL></DIV> </DIV></p>]]>
      
   </content>
</entry>
<entry>
   <title>Viewing Audits for Stale instances</title>
   <link rel="alternate" type="text/html" href="http://blogs.oracle.com/rammenon/2008/04/viewing_audits_for_stale_insta.html" />
   <id>tag:blogs.oracle.com,2008:/rammenon//86.2639</id>
   
   <published>2008-04-23T02:41:48Z</published>
   <updated>2008-07-02T19:07:41Z</updated>
   
   <summary><![CDATA[Wondering what to do if you wished to view the audit trail for stale instances? Well, you could make use of the View Raw XML feature in the BPEL Console. &nbsp; &nbsp;...]]></summary>
   <author>
      <name>Ramkumar Menon</name>
      
   </author>
   
   <category term="bpelauditing" label="BPEL Auditing" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="bpelconsole" label="BPEL Console" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="en-US" xml:base="http://blogs.oracle.com/rammenon/">
      <![CDATA[<p><P>Wondering what to do if you wished to view the audit trail for stale instances?</P><br />
<P>Well, you could make use of the <I>View Raw XML</I> feature in the BPEL Console.</P><br />
<P>&nbsp;</P><br />
<P>&nbsp;</P><IMG src="http://blogs.oracle.com/ramkumarMenon/gems/bpelconsolestale.JPG"></p>]]>
      
   </content>
</entry>
<entry>
   <title>Reusing code snippets in JDeveloper</title>
   <link rel="alternate" type="text/html" href="http://blogs.oracle.com/rammenon/2008/04/reusing_code_snippets_in_jdeve.html" />
   <id>tag:blogs.oracle.com,2008:/rammenon//86.2640</id>
   
   <published>2008-04-22T23:11:08Z</published>
   <updated>2008-07-02T19:10:41Z</updated>
   
   <summary>Here is one simple but useful thing that I&apos;ve been too lazy to make use of, and had overlooked. JDeveloper&apos;s component palette has a page named &quot;Code Snippets&quot;. You could actually add frequently re-used code snippets and save them into...</summary>
   <author>
      <name>Ramkumar Menon</name>
      
   </author>
         <category term="SOA Development" scheme="http://www.sixapart.com/ns/types#category" />
   
   <category term="jdeveloper" label="JDeveloper" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="en-US" xml:base="http://blogs.oracle.com/rammenon/">
      <![CDATA[<p><P>Here is one simple but useful thing that I've been too lazy to make use of, and had overlooked.</P><br />
<P>JDeveloper's component palette has a page named "Code Snippets". You could actually add frequently re-used code snippets and save them into the "code snippets" section.</P><br />
<P><IMG src="http://blogs.oracle.com/ramkumarMenon/gems/jdevcpcs.JPG"></P><br />
<P>Once you click on "Add component", you can give the snippet a name, for e.g. "Assign WS-Addressing Headers" and copy the snippet from your&nbsp;source code &nbsp;to the given text area.</P><br />
<P>You can now re-use the code snippet by dragging and dropping the component from the code snippet palette onto the source view of any file that you open in JDeveloper.</P><br />
<P>Similarly, you can also add your own Pages to the Component palette, to capture Snippets for diferent cateogies of code [for instnace, BPEL,XML, XSD, XSLT etc].</P><br />
<P><IMG src="http://blogs.oracle.com/ramkumarMenon/gems/jdevcpcsnewpage.JPG"></P><br />
<P>Now you can specify the Page Name and specify the type&nbsp; - "snippet", "java" etc.</P><br />
<P>&nbsp;</P><br />
<P>&nbsp;</P><br />
<P><IMG src="http://blogs.oracle.com/ramkumarMenon/gems/jdevcpcsnewpagedetails.JPG"></P><br />
<P>&nbsp;</P><br />
<P>Now you can add new code snippets to the new Palette Page that you created.</P><br />
<P>&nbsp;</P><IMG src="http://blogs.oracle.com/ramkumarMenon/gems/jdevcpcsaddtonewcp.JPG"></p>]]>
      
   </content>
</entry>
<entry>
   <title>Obtaining the Execution Times of BPEL Processes over a period of time</title>
   <link rel="alternate" type="text/html" href="http://blogs.oracle.com/rammenon/2008/04/obtaining_the_execution_times.html" />
   <id>tag:blogs.oracle.com,2008:/rammenon//86.2641</id>
   
   <published>2008-04-21T23:38:06Z</published>
   <updated>2008-07-02T19:13:04Z</updated>
   
   <summary>Here is a simple BPEL Query that will get you the statistics of execution times of all BPEL Process instances over a period of time. The stats include the number of invocations, minimum, maximum and average time of execution. view...</summary>
   <author>
      <name>Ramkumar Menon</name>
      
   </author>
   
   <category term="bpel" label="BPEL" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="performance" label="Performance" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="en-US" xml:base="http://blogs.oracle.com/rammenon/">
      <![CDATA[<p><P>Here is a simple BPEL Query that will get you the statistics of execution times of all BPEL Process instances over a period of time. The stats include the number of invocations, minimum, maximum and average time of execution. </P><br />
<DIV style="WIDTH: 700px"><br />
<DIV class=dp-highlighter><br />
<DIV class=bar><br />
<DIV class=tools><A onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="file:///D:/Temp/syntaxhighlight/dp.SyntaxHighlighter/xsl_be.html#">view plain</A><A onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="file:///D:/Temp/syntaxhighlight/dp.SyntaxHighlighter/xsl_be.html#">copy to clipboard</A><A onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="file:///D:/Temp/syntaxhighlight/dp.SyntaxHighlighter/xsl_be.html#">print</A><A onclick="dp.sh.Toolbar.Command('About',this);return false;" href="file:///D:/Temp/syntaxhighlight/dp.SyntaxHighlighter/xsl_be.html#">?</A></DIV></DIV><br />
<OL class=dp-sql><br />
<LI class=alt><SPAN><SPAN class=keyword>SELECT</SPAN><SPAN>&nbsp;process_id,</SPAN><SPAN class=func><FONT color=#ff1493>count</FONT></SPAN><SPAN>(*)&nbsp;</SPAN><SPAN class=keyword>as</SPAN><SPAN>&nbsp;num_invocations, &nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;</SPAN><SPAN class=keyword>max</SPAN><SPAN>(((EXTRACT(</SPAN><SPAN class=keyword>HOUR</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>FROM</SPAN><SPAN>&nbsp;MODIFY_DATE)&nbsp;-&nbsp;extract(</SPAN><SPAN class=keyword>hour</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>from</SPAN><SPAN>&nbsp;creation_date))&nbsp;*3600&nbsp;+ &nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(EXTRACT(</SPAN><SPAN class=keyword>MINUTE</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>FROM</SPAN><SPAN>&nbsp;MODIFY_DATE)&nbsp;-&nbsp;extract(</SPAN><SPAN class=keyword>MINUTE</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>from</SPAN><SPAN>&nbsp;creation_date))&nbsp;*60&nbsp;+ &nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(EXTRACT(</SPAN><SPAN class=keyword>SECOND</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>FROM</SPAN><SPAN>&nbsp;MODIFY_DATE)&nbsp;-&nbsp;extract(</SPAN><SPAN class=keyword>SECOND</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>from</SPAN><SPAN>&nbsp;creation_date)))&nbsp;*1000) &nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;</SPAN><SPAN class=keyword>as</SPAN><SPAN>&nbsp;Max_Time&nbsp;, &nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;</SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;</SPAN><SPAN class=keyword>min</SPAN><SPAN>(((EXTRACT(</SPAN><SPAN class=keyword>HOUR</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>FROM</SPAN><SPAN>&nbsp;MODIFY_DATE)&nbsp;-&nbsp;extract(</SPAN><SPAN class=keyword>hour</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>from</SPAN><SPAN>&nbsp;creation_date))&nbsp;*3600&nbsp;+ &nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(EXTRACT(</SPAN><SPAN class=keyword>MINUTE</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>FROM</SPAN><SPAN>&nbsp;MODIFY_DATE)&nbsp;-&nbsp;extract(</SPAN><SPAN class=keyword>MINUTE</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>from</SPAN><SPAN>&nbsp;creation_date))&nbsp;*60&nbsp;+ &nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(EXTRACT(</SPAN><SPAN class=keyword>SECOND</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>FROM</SPAN><SPAN>&nbsp;MODIFY_DATE)&nbsp;-&nbsp;extract(</SPAN><SPAN class=keyword>SECOND</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>from</SPAN><SPAN>&nbsp;creation_date)))&nbsp;*1000) &nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;</SPAN><SPAN class=keyword>as</SPAN><SPAN>&nbsp;Min_Time&nbsp;, &nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;</SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;</SPAN><SPAN class=func><FONT color=#ff1493>avg</FONT></SPAN><SPAN>(((EXTRACT(</SPAN><SPAN class=keyword>HOUR</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>FROM</SPAN><SPAN>&nbsp;MODIFY_DATE)&nbsp;-&nbsp;extract(</SPAN><SPAN class=keyword>hour</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>from</SPAN><SPAN>&nbsp;creation_date))&nbsp;*3600&nbsp;+ &nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(EXTRACT(</SPAN><SPAN class=keyword>MINUTE</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>FROM</SPAN><SPAN>&nbsp;MODIFY_DATE)&nbsp;-&nbsp;extract(</SPAN><SPAN class=keyword>MINUTE</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>from</SPAN><SPAN>&nbsp;creation_date))&nbsp;*60&nbsp;+ &nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(EXTRACT(</SPAN><SPAN class=keyword>SECOND</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>FROM</SPAN><SPAN>&nbsp;MODIFY_DATE)&nbsp;-&nbsp;extract(</SPAN><SPAN class=keyword>SECOND</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>from</SPAN><SPAN>&nbsp;creation_date)))&nbsp;*1000) &nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;</SPAN><SPAN class=keyword>as</SPAN><SPAN>&nbsp;Avg_Time &nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;</SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;</SPAN><SPAN class=keyword>FROM</SPAN><SPAN>&nbsp;CUBE_INSTANCE &nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=keyword>WHERE</SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;state&nbsp;&amp;lt;&gt;&nbsp;9 &nbsp;&nbsp;</SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=op><FONT color=#808080>and</FONT></SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;creation_date&nbsp;&gt;&nbsp;</SPAN><SPAN class=string>'09-APR-08&nbsp;09.00.00.000000000&nbsp;AM'</SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=op><FONT color=#808080>and</FONT></SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;creation_date&nbsp;&amp;lt;&nbsp;</SPAN><SPAN class=string>'09-APR-08&nbsp;01.00.00.000000000&nbsp;PM'</SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;</SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=keyword>group</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>by</SPAN><SPAN>&nbsp;process_id&nbsp;</SPAN><SPAN class=keyword>order</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>by</SPAN><SPAN>&nbsp;process_id&nbsp;</SPAN><SPAN class=keyword>asc</SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN></LI></OL></DIV><PRE class=sql style="DISPLAY: none" name="code" cols="60" rows="10">SELECT process_id,count(*) as num_invocations, max(((EXTRACT(HOUR FROM MODIFY_DATE) - extract(hour from creation_date)) *3600 + (EXTRACT(MINUTE FROM MODIFY_DATE) - extract(MINUTE from creation_date)) *60 + (EXTRACT(SECOND FROM MODIFY_DATE) - extract(SECOND from creation_date))) *1000) as Max_Time , min(((EXTRACT(HOUR FROM MODIFY_DATE) - extract(hour from creation_date)) *3600 + (EXTRACT(MINUTE FROM MODIFY_DATE) - extract(MINUTE from creation_date)) *60 + (EXTRACT(SECOND FROM MODIFY_DATE) - extract(SECOND from creation_date))) *1000) as Min_Time , avg(((EXTRACT(HOUR FROM MODIFY_DATE) - extract(hour from creation_date)) *3600 + (EXTRACT(MINUTE FROM MODIFY_DATE) - extract(MINUTE from creation_date)) *60 + (EXTRACT(SECOND FROM MODIFY_DATE) - extract(SECOND from creation_date))) *1000) as Avg_Time FROM CUBE_INSTANCE WHERE state &amp;lt;&gt; 9 and creation_date &gt; '09-APR-08 09.00.00.000000000 AM' and creation_date &amp;lt; '09-APR-08 01.00.00.000000000 PM' group by process_id order by process_id asc </PRE></DIV><br />
<P>In this query, you need to replace the sample date and time values with the values that you wish to use and report. Here is another query that gives the execution times of all BPEL instances over the given time period. </P><br />
<DIV style="WIDTH: 700px"><br />
<DIV class=dp-highlighter><br />
<DIV class=bar><br />
<DIV class=tools><A onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="file:///D:/Temp/syntaxhighlight/dp.SyntaxHighlighter/xsl_be.html#">view plain</A><A onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="file:///D:/Temp/syntaxhighlight/dp.SyntaxHighlighter/xsl_be.html#">copy to clipboard</A><A onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="file:///D:/Temp/syntaxhighlight/dp.SyntaxHighlighter/xsl_be.html#">print</A><A onclick="dp.sh.Toolbar.Command('About',this);return false;" href="file:///D:/Temp/syntaxhighlight/dp.SyntaxHighlighter/xsl_be.html#">?</A></DIV></DIV><br />
<OL class=dp-sql><br />
<LI class=alt><SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN></SPAN><SPAN class=keyword>select</SPAN><SPAN>&nbsp;bpel_process_name&nbsp;</SPAN><SPAN class=keyword>as</SPAN><SPAN>&nbsp;process_id, &nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;instance_key&nbsp;</SPAN><SPAN class=keyword>as</SPAN><SPAN>&nbsp;cikey, &nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trunc(creation_date), &nbsp;&nbsp;</SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eval_time&nbsp;</SPAN><SPAN class=keyword>as</SPAN><SPAN>&nbsp;exec_time &nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN></SPAN><SPAN class=keyword>from</SPAN><SPAN>&nbsp;bpel_process_instances &nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN></SPAN><SPAN class=keyword>where</SPAN><SPAN>&nbsp;state&nbsp;&amp;lt;&gt;&nbsp;9&nbsp;</SPAN><SPAN class=op><FONT color=#808080>and</FONT></SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;creation_date&nbsp;&gt;&nbsp;</SPAN><SPAN class=string>'11-APR-08&nbsp;09.00.00.000000000&nbsp;AM'</SPAN><SPAN>&nbsp;</SPAN><SPAN class=op><FONT color=#808080>and</FONT></SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;creation_date&nbsp;&amp;lt;&nbsp;</SPAN><SPAN class=string>'11-APR-08&nbsp;05.00.00.420000000&nbsp;PM'</SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN></SPAN><SPAN class=keyword>order</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>by</SPAN><SPAN>&nbsp;process_id&nbsp;</SPAN><SPAN class=keyword>asc</SPAN><SPAN>,&nbsp;exec_time&nbsp;</SPAN><SPAN class=keyword>desc</SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN></LI></OL></DIV><PRE class=sql style="DISPLAY: none" name="code" cols="100" rows="20">select bpel_process_name as process_id, instance_key as cikey, trunc(creation_date), eval_time as exec_time from bpel_process_instances where state &amp;lt;&gt; 9 and creation_date &gt; '11-APR-08 09.00.00.000000000 AM' and creation_date &amp;lt; '11-APR-08 05.00.00.420000000 PM' order by process_id asc, exec_time desc </PRE></DIV><br />
<P>In this query, you need to replace the sample date and time values with the values that you wish to use and report. Note that the above query shall give you the execution times for a particular day. Take a look at the comments on this blog entry to see a modified example that uses the "day" as well to obtain stats that span across multiple days. </P></p>]]>
      
   </content>
</entry>
<entry>
   <title>Dynamically updating bpel.xml properties within your BPEL Process</title>
   <link rel="alternate" type="text/html" href="http://blogs.oracle.com/rammenon/2008/04/dynamically_updating_bpelxml_p.html" />
   <id>tag:blogs.oracle.com,2008:/rammenon//86.2642</id>
   
   <published>2008-04-15T22:42:09Z</published>
   <updated>2008-07-02T19:59:45Z</updated>
   
   <summary><![CDATA[There are different properties that you could actually update in your process descriptor. They are a) The Configuration properties b) The preference properties c) The partnerlink properties. These properties are illustrated below. view plaincopy to clipboardprint? &amp;lt;BPELSuitcase&gt;&nbsp;&nbsp; &nbsp;&nbsp;&amp;lt;BPELProcess&nbsp;id="UpdatePropertyProcess"&nbsp;src="UpdatePropertyProcess.bpel"&gt;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&amp;lt;partnerLinkBindings&gt;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;lt;partnerLinkBinding&nbsp;name="client"&gt;&nbsp;&nbsp;...]]></summary>
   <author>
      <name>Ramkumar Menon</name>
      
   </author>
   
   <category term="bpel" label="BPEL" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="bpelprocessdescriptor" label="BPEL Process Descriptor" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="en-US" xml:base="http://blogs.oracle.com/rammenon/">
      <![CDATA[<p><P>There are different properties that you could actually update in your process descriptor. They are a) The Configuration properties b) The preference properties c) The partnerlink properties. These properties are illustrated below. </P><br />
<DIV style="WIDTH: 700px"><br />
<DIV class=dp-highlighter><br />
<DIV class=bar><br />
<DIV class=tools><A onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="file:///D:/Temp/syntaxhighlight/dp.SyntaxHighlighter/another.html#">view plain</A><A onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="file:///D:/Temp/syntaxhighlight/dp.SyntaxHighlighter/another.html#">copy to clipboard</A><A onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="file:///D:/Temp/syntaxhighlight/dp.SyntaxHighlighter/another.html#">print</A><A onclick="dp.sh.Toolbar.Command('About',this);return false;" href="file:///D:/Temp/syntaxhighlight/dp.SyntaxHighlighter/another.html#">?</A></DIV></DIV><br />
<OL class=dp-xml><br />
<LI class=alt><SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;</SPAN><SPAN class=tag-name>BPELSuitcase</SPAN><SPAN class=tag>&gt;</SPAN></FONT></STRONG><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;</SPAN><SPAN class=tag-name>BPELProcess</SPAN></FONT></STRONG><SPAN>&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>id</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"UpdatePropertyProcess"</FONT></SPAN><SPAN>&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>src</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"UpdatePropertyProcess.bpel"</FONT></SPAN><SPAN class=tag><STRONG><FONT color=#006699>&gt;</FONT></STRONG></SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;</SPAN><SPAN class=tag-name>partnerLinkBindings</SPAN><SPAN class=tag>&gt;</SPAN></FONT></STRONG><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;</SPAN><SPAN class=tag-name>partnerLinkBinding</SPAN></FONT></STRONG><SPAN>&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>name</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"client"</FONT></SPAN><SPAN class=tag><STRONG><FONT color=#006699>&gt;</FONT></STRONG></SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;</SPAN><SPAN class=tag-name>property</SPAN></FONT></STRONG><SPAN>&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>name</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"wsdlLocation"</FONT></SPAN><SPAN class=tag><STRONG><FONT color=#006699>&gt;</FONT></STRONG></SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UpdatePropertyProcess.wsdl &nbsp;&nbsp;</SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;/</SPAN><SPAN class=tag-name>property</SPAN><SPAN class=tag>&gt;</SPAN></FONT></STRONG><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;</SPAN><SPAN class=tag-name>property</SPAN></FONT></STRONG><SPAN>&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>name</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"partnerlinkProperty1"</FONT></SPAN><SPAN class=tag><STRONG><FONT color=#006699>&gt;</FONT></STRONG></SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;valueOfPartnerlinkProperty&nbsp;1 &nbsp;&nbsp;</SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;/</SPAN><SPAN class=tag-name>property</SPAN><SPAN class=tag>&gt;</SPAN></FONT></STRONG><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;/</SPAN><SPAN class=tag-name>partnerLinkBinding</SPAN><SPAN class=tag>&gt;</SPAN></FONT></STRONG><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;/</SPAN><SPAN class=tag-name>partnerLinkBindings</SPAN><SPAN class=tag>&gt;</SPAN></FONT></STRONG><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;</SPAN><SPAN class=tag-name>preferences</SPAN><SPAN class=tag>&gt;</SPAN></FONT></STRONG><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;</SPAN><SPAN class=tag-name>property</SPAN></FONT></STRONG><SPAN>&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>name</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"preferenceProperty1"</FONT></SPAN><SPAN>&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>encryption</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"plaintext"</FONT></SPAN><SPAN class=tag><STRONG><FONT color=#006699>&gt;</FONT></STRONG></SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;valueOfPreferenceProperty1 &nbsp;&nbsp;</SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;/</SPAN><SPAN class=tag-name>property</SPAN><SPAN class=tag>&gt;</SPAN></FONT></STRONG><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;/</SPAN><SPAN class=tag-name>preferences</SPAN><SPAN class=tag>&gt;</SPAN></FONT></STRONG><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;</SPAN><SPAN class=tag-name>configurations</SPAN><SPAN class=tag>&gt;</SPAN></FONT></STRONG><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;</SPAN><SPAN class=tag-name>property</SPAN></FONT></STRONG><SPAN>&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>name</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"configProperty1"</FONT></SPAN><SPAN>&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>encryption</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"plaintext"</FONT></SPAN><SPAN class=tag><STRONG><FONT color=#006699>&gt;</FONT></STRONG></SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;valueOfConfigProperty1 &nbsp;&nbsp;</SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;/</SPAN><SPAN class=tag-name>property</SPAN><SPAN class=tag>&gt;</SPAN></FONT></STRONG><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;/</SPAN><SPAN class=tag-name>configurations</SPAN><SPAN class=tag>&gt;</SPAN></FONT></STRONG><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;/</SPAN><SPAN class=tag-name>BPELProcess</SPAN><SPAN class=tag>&gt;</SPAN></FONT></STRONG><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN></SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;/</SPAN><SPAN class=tag-name>BPELSuitcase</SPAN><SPAN class=tag>&gt;</SPAN></FONT></STRONG><SPAN>&nbsp;&nbsp;</SPAN></SPAN></LI></OL></DIV></DIV><br />
<P>To update these properties dynamically within the BPEL Process, you can use a Java embedding within the process, as shown below. </P><br />
<DIV style="WIDTH: 700px"><br />
<DIV class=dp-highlighter><br />
<DIV class=bar><br />
<DIV class=tools><A onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="file:///D:/Temp/syntaxhighlight/dp.SyntaxHighlighter/another.html#">view plain</A><A onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="file:///D:/Temp/syntaxhighlight/dp.SyntaxHighlighter/another.html#">copy to clipboard</A><A onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="file:///D:/Temp/syntaxhighlight/dp.SyntaxHighlighter/another.html#">print</A><A onclick="dp.sh.Toolbar.Command('About',this);return false;" href="file:///D:/Temp/syntaxhighlight/dp.SyntaxHighlighter/another.html#">?</A></DIV></DIV><br />
<OL class=dp-j><br />
<LI class=alt><SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN></SPAN><SPAN class=keyword>try</SPAN><SPAN>&nbsp;{ &nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;getLocator().lookupProcess&nbsp;(</SPAN><SPAN class=string>"UpdatePropertyProcess"</SPAN><SPAN>). &nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getDescriptor&nbsp;(). &nbsp;&nbsp;</SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getConfigurations(). &nbsp;&nbsp;</SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setPropertyValue&nbsp;(</SPAN><SPAN class=string>"configProperty1"</SPAN><SPAN>, &nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=string>"newValueOfConfigPropertyValue1"</SPAN><SPAN>); &nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;getLocator().lookupProcess&nbsp;(</SPAN><SPAN class=string>"UpdatePropertyProcess"</SPAN><SPAN>). &nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getDescriptor&nbsp;(). &nbsp;&nbsp;</SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getPreferences(). &nbsp;&nbsp;</SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setPropertyValue&nbsp;(</SPAN><SPAN class=string>"preferenceProperty1"</SPAN><SPAN>, &nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=string>"newValueOfPreferenceProperty1"</SPAN><SPAN>&nbsp;); &nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;getLocator().lookupProcess&nbsp;(</SPAN><SPAN class=string>"UpdatePropertyProcess"</SPAN><SPAN>). &nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getDescriptor&nbsp;(). &nbsp;&nbsp;</SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getPartnerLinkBindings(). &nbsp;&nbsp;</SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getPartnerLinkBinding&nbsp;(</SPAN><SPAN class=string>"client"</SPAN><SPAN>). &nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setPropertyValue&nbsp;(</SPAN><SPAN class=string>"partnerlinkProperty1"</SPAN><SPAN>, &nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=string>"newValueOfPartnerlinkProperty&nbsp;1"</SPAN><SPAN>); &nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;} &nbsp;&nbsp;</SPAN> <br />
<LI class=""><SPAN>&nbsp;</SPAN><SPAN class=keyword>catch</SPAN><SPAN>(Throwable&nbsp;ex)&nbsp;{ &nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;} &nbsp;&nbsp;</SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;</SPAN></LI></OL></DIV></DIV><br />
<P>Click <a href="http://blogs.oracle.com/ramkumarMenon/gems/UpdatePropertyProcess.zip">here</a> to download the Sample BPEL Process project. </P></p>]]>
      
   </content>
</entry>
<entry>
   <title>Recursively replacing a string in all files in a directory [Linux]</title>
   <link rel="alternate" type="text/html" href="http://blogs.oracle.com/rammenon/2008/04/recursively_replacing_a_string.html" />
   <id>tag:blogs.oracle.com,2008:/rammenon//86.2643</id>
   
   <published>2008-04-14T22:05:19Z</published>
   <updated>2008-06-24T09:58:06Z</updated>
   
   <summary><![CDATA[My colleague&nbsp;provided me an extremely useful script that will replace a source string with a target string in all files in&nbsp;the&nbsp;current directory and its subdirectories.find . -type f | xargs perl -pi~ -e 's/oldtext/newtext/g;' Replace "oldtext" with the source string,...]]></summary>
   <author>
      <name>Ramkumar Menon</name>
      
   </author>
   
   
   <content type="html" xml:lang="en-US" xml:base="http://blogs.oracle.com/rammenon/">
      <![CDATA[<p><P>My colleague&nbsp;provided me an extremely useful script that will replace a source string with a target string in all files in&nbsp;the&nbsp;current directory and its subdirectories.</P><PRE><FONT color=blue>find . -type f | xargs perl -pi~ -e 's/oldtext/newtext/g;'</FONT></PRE><br />
<P>Replace "oldtext" with the source string, and "newtext" with the target string.</P><br />
<P>During the replacement, all original files are backed up with a&nbsp; "~" suffix.</P></p>]]>
      
   </content>
</entry>
<entry>
   <title>Reading only headers in an File/FTP Adapter and skipping the payload</title>
   <link rel="alternate" type="text/html" href="http://blogs.oracle.com/rammenon/2008/03/reading_only_headers_in_an_fil.html" />
   <id>tag:blogs.oracle.com,2008:/rammenon//86.2644</id>
   
   <published>2008-03-18T21:50:39Z</published>
   <updated>2008-06-24T09:58:07Z</updated>
   
   <summary><![CDATA[At times, you might have a requirement where you only need to read the file headers[file name and directory] and ignore the payload while using an inbound file/ftp adapter. For this purpose, you need to add UseHeaders="true" on the &amp;lt;jca:operation&gt;...]]></summary>
   <author>
      <name>Ramkumar Menon</name>
      
   </author>
   
   
   <content type="html" xml:lang="en-US" xml:base="http://blogs.oracle.com/rammenon/">
      <![CDATA[<p><P>At times, you might have a requirement where you only need to read the file headers[file name and directory] and ignore the payload while using an inbound file/ftp adapter.</P><br />
<P>For this purpose, you need to add UseHeaders="true" on the &amp;lt;jca:operation&gt; in the adapter wsdl.</P><br />
<P>This ensures that the payload is skipped while reading the file.</P><br />
<P>Then you can follow the usual steps to read the headers [through the inputHeaderVariable on the receive activity to retrieve the headers.</P><br />
<P>&nbsp;</P></p>]]>
      
   </content>
</entry>
<entry>
   <title>Stripping namespaces using XSLT</title>
   <link rel="alternate" type="text/html" href="http://blogs.oracle.com/rammenon/2008/03/stripping_namespaces_using_xsl.html" />
   <id>tag:blogs.oracle.com,2008:/rammenon//86.2645</id>
   
   <published>2008-03-07T03:18:37Z</published>
   <updated>2008-06-24T09:58:07Z</updated>
   
   <summary>A common question often asked is &quot;I have a namespace qualified XML document - I need to remove all xmlns attributes from the same&quot;. Here is an XSLT that you can use to strip all namespaces from your document. view...</summary>
   <author>
      <name>Ramkumar Menon</name>
      
   </author>
   
   
   <content type="html" xml:lang="en-US" xml:base="http://blogs.oracle.com/rammenon/">
      <![CDATA[<p><P>A common question often asked is "I have a namespace qualified XML document - <BR>I need to remove all xmlns attributes from the same". </P><br />
<P><br />
<P>Here is an XSLT that you can use to strip all namespaces from your document.</P><br />
<DIV style="WIDTH: 700px"><br />
<DIV class=dp-highlighter><br />
<DIV class=bar><br />
<DIV class=tools><A onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="file:///D:/Temp/syntaxhighlight/dp.SyntaxHighlighter/another.html#">view plain</A><A onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="file:///D:/Temp/syntaxhighlight/dp.SyntaxHighlighter/another.html#">copy to clipboard</A><A onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="file:///D:/Temp/syntaxhighlight/dp.SyntaxHighlighter/another.html#">print</A><A onclick="dp.sh.Toolbar.Command('About',this);return false;" href="file:///D:/Temp/syntaxhighlight/dp.SyntaxHighlighter/another.html#">?</A></DIV></DIV><br />
<OL class=dp-xml><br />
<LI class=alt><SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;</SPAN><SPAN class=tag-name>xsl:stylesheet</SPAN></FONT></STRONG><SPAN>&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>version</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"1.0"</FONT></SPAN><SPAN>&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>xmlns:xsl</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"http://www.w3.org/1999/XSL/Transform"</FONT></SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN></SPAN><SPAN class=attribute><FONT color=#ff0000>exclude-result-prefixes</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"xsl"</FONT></SPAN><SPAN class=tag><STRONG><FONT color=#006699>&gt;</FONT></STRONG></SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;</SPAN> <br />
<LI class=""><SPAN>&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;</SPAN><SPAN class=tag-name>xsl:template</SPAN></FONT></STRONG><SPAN>&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>match</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"*"</FONT></SPAN><SPAN class=tag><STRONG><FONT color=#006699>&gt;</FONT></STRONG></SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;</SPAN><SPAN class=tag-name>xsl:element</SPAN></FONT></STRONG><SPAN>&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>name</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"{local-name()}"</FONT></SPAN><SPAN class=tag><STRONG><FONT color=#006699>&gt;</FONT></STRONG></SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;</SPAN><SPAN class=tag-name>xsl:apply-templates</SPAN></FONT></STRONG><SPAN>&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>select</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"@*&nbsp;|&nbsp;node()"</FONT></SPAN><SPAN class=tag><STRONG><FONT color=#006699>/&gt;</FONT></STRONG></SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;/</SPAN><SPAN class=tag-name>xsl:element</SPAN><SPAN class=tag>&gt;</SPAN></FONT></STRONG><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;/</SPAN><SPAN class=tag-name>xsl:template</SPAN><SPAN class=tag>&gt;</SPAN></FONT></STRONG><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;</SPAN><SPAN class=tag-name>xsl:template</SPAN></FONT></STRONG><SPAN>&nbsp;</SPAN><SPAN class=attribute><FONT color=#ff0000>match</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"@*&nbsp;|&nbsp;text()"</FONT></SPAN><SPAN class=tag><STRONG><FONT color=#006699>&gt;</FONT></STRONG></SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;</SPAN><SPAN class=tag-name>xsl:copy</SPAN><SPAN class=tag>/&gt;</SPAN></FONT></STRONG><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=alt><SPAN>&nbsp;&nbsp;</SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;/</SPAN><SPAN class=tag-name>xsl:template</SPAN><SPAN class=tag>&gt;</SPAN></FONT></STRONG><SPAN>&nbsp;&nbsp;</SPAN></SPAN> <br />
<LI class=""><SPAN></SPAN><STRONG><FONT color=#006699><SPAN class=tag>&amp;lt;/</SPAN><SPAN class=tag-name>xsl:stylesheet</SPAN><SPAN class=tag>&gt;</SPAN></FONT></STRONG><PRE class=xml style="DISPLAY: none" name="code" cols="100" rows="20">&nbsp;</PRE></LI></OL></DIV></DIV></p>]]>
      
   </content>
</entry>
<entry>
   <title>XML is Ten!</title>
   <link rel="alternate" type="text/html" href="http://blogs.oracle.com/rammenon/2008/02/xml_is_ten.html" />
   <id>tag:blogs.oracle.com,2008:/rammenon//86.2646</id>
   
   <published>2008-02-15T00:11:39Z</published>
   <updated>2008-06-24T09:58:07Z</updated>
   
   <summary></summary>
   <author>
      <name>Ramkumar Menon</name>
      
   </author>
   
   
   <content type="html" xml:lang="en-US" xml:base="http://blogs.oracle.com/rammenon/">
      <![CDATA[<p><a href="http://www.w3.org/2008/xml10/"> <img src="http://www.w3.org/2008/xml10/xml-10" alt="XML 10th anniversary" title="Ten Years of XML"/></a></p>]]>
      
   </content>
</entry>
<entry>
   <title>Scanning text files using java.util.Scanner</title>
   <link rel="alternate" type="text/html" href="http://blogs.oracle.com/rammenon/2007/12/scanning_text_files_using_java.html" />
   <id>tag:blogs.oracle.com,2007:/rammenon//86.2647</id>
   
   <published>2007-12-20T02:44:37Z</published>
   <updated>2008-06-24T09:58:07Z</updated>
   
   <summary><![CDATA[I loved this tech-tip article from Sun. http://java.sun.com/developer/JDCTechTips/2004/tt1201.html#1 &nbsp; &nbsp;...]]></summary>
   <author>
      <name>Ramkumar Menon</name>
      
   </author>
   
   
   <content type="html" xml:lang="en-US" xml:base="http://blogs.oracle.com/rammenon/">
      <![CDATA[<p><P>I loved this tech-tip article from Sun.</P><br />
<P><A href="http://java.sun.com/developer/JDCTechTips/2004/tt1201.html#1">http://java.sun.com/developer/JDCTechTips/2004/tt1201.html#1</A></P><br />
<P>&nbsp;</P><br />
<P>&nbsp;</P></p>]]>
      
   </content>
</entry>
<entry>
   <title>Miscellaneous Ant tasks for Managing the BPEL Server</title>
   <link rel="alternate" type="text/html" href="http://blogs.oracle.com/rammenon/2007/11/miscellaneous_ant_tasks_for_ma.html" />
   <id>tag:blogs.oracle.com,2007:/rammenon//86.2648</id>
   
   <published>2007-11-27T01:44:57Z</published>
   <updated>2008-07-02T20:02:22Z</updated>
   
   <summary>The serverAdmin ANT task This news item describes a simple ant task that I had come up named serverAdmin that allows you to Selectively undeploy BPEL Processes Selectively purge BPEL process instances. Cancel and Recover Invocation Messages Cancel and Recover...</summary>
   <author>
      <name>Ramkumar Menon</name>
      
   </author>
   
   <category term="ant" label="Ant" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="bpeladministration" label="BPEL Administration" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="en-US" xml:base="http://blogs.oracle.com/rammenon/">
      <![CDATA[<h3>The serverAdmin ANT task</h3>
This news item describes a simple ant task that I had come up named serverAdmin that allows you to
<ol>
<li>Selectively undeploy BPEL Processes
<li>Selectively purge BPEL  process instances.
<li>Cancel and Recover Invocation Messages
<li>Cancel and Recover Callback Messages
<li>Get one or more domain configuration properties
<li>Set one or more domain configuration properties
<li>Fetch the latest domain log from the Server
<li>Create/delete a domain on the BPEL server
</ol>
<h4>Setup and Usage</h4>
To setup this task, perform the following steps.
<ol>
<li>Copy the admintasks.jar from http://blogs.oracle.com/ramkumarMenon/gems/admintasks.jar into $ORACLE_HOMEintegrationlib directory.
<li>Open up ant-orabpel.xml in $ORACLE_HOMEbpelutilities directory and paste the following piece of code into the file within the &amp;lt;project> element.
</ol>
<div style="width: 700px;">
    <pre name="code" class="xml" cols="100" rows="20">
&amp;lt;path id="admin.tasks.class.path"&gt;
      &amp;lt;pathelement location="${bpel.home}/../lib/admintasks.jar"/&gt;
  &amp;lt;/path&gt;
  &amp;lt;property name="admin.tasks.class.path" refid="admin.tasks.class.path"/&gt;
  &amp;lt;taskdef name="serverAdmin" classname="com.collaxa.cube.ant.taskdefs.ServerAdmin"&gt;
    &amp;lt;classpath&gt;
      &amp;lt;pathelement path="${admin.tasks.class.path}"/&gt;
    &amp;lt;/classpath&gt;
  &amp;lt;/taskdef&gt;
</pre>
</div>
<h5>Illustrative Command Syntax</h5>
<div style="width: 700px;">
    <pre name="code" class="xml" cols="100" rows="20">
      &amp;lt;serverAdmin  providerURL="opmn:ormi://&amp;lt;hostName&gt;:&amp;lt;opmnRequestPort&gt;:&amp;lt;oc4jInstanceName&gt;/orabpel" userName="oc4jadmin" password="&amp;lt;pwdforoc4jadmin&gt;"&gt;
       &amp;lt;createDomain domainName="testDomain"/&gt;
       &amp;lt;deleteDomain domainName="testDomain"/&gt;
       &amp;lt;manageDomain domain="default"&gt;
              &amp;lt;undeployProcesses select="BPELProcess.*"  type="all" revision="all"/&gt;
              &amp;lt;undeployProcesses select="TestXPath"  type="retired" revision="all"/&gt;
             &amp;lt;undeployProcesses select="Sample.*" type="all" revision="2.0"/&gt;
             &amp;lt;undeployProcesses select="SampleProcess" type="active" revision="1.0"/&gt;
         &amp;lt;!--example dateTime format "yyyy-MM-dd'T'HH:mm:ss Z"   "1994-11-05T08:15:30 -0800--&gt;
         &amp;lt;!--example date format "yyyy-MM-dd"   "1994-11-05"--&gt;
          &amp;lt;purgeInstances select="TestXPath" type="all" fromDateTime="2007-10-29T11:21:03 -0800" toDateTime="2007-10-31T13:21:03 -0800"/&gt;
          &amp;lt;purgeInstances select="TestJMS" type="closed.stale" fromDateTime="2007-10-29T11:21:03 -0800" toDateTime="2007-10-31T13:21:03 -0800"/&gt;
             &amp;lt;getProperties propertyNames="dspMinThreads,dspMaxThreads,syncMaxWaitTime"/&gt;
              &amp;lt;setProperty name="dspMinThreads" value="5"/&gt;
              &amp;lt;cancelInvocations select="PurchaseOrderProcess" revision="1.0" fromDateTime="2007-11-05T17:45:56 -0800" toDateTime="2007-11-05T17:45:58 -0800"/&gt;
              &amp;lt;recoverInvocations select="OrderCreationProcess" revision="1.0" fromDateTime="2007-11-05T17:21:10 -0800" toDateTime="2007-11-05T17:21:15 -0800"/&gt;
              &amp;lt;cancelCallbacks select="OrderCreationProcess" revision="2.0" fromDate="2007-11-05" toDate="2007-11-06"/&gt;
              &amp;lt;recoverCallbacks select="OrdeUpdateProcess" revision="2.0" fromDate="2007-11-05" toDate="2007-11-06"/&gt;
              &amp;lt;printLog outFile="D:\\temp\\latest_domain.log" lineCount="2000"/&gt;
          &amp;lt;purgeInstances select="all" type="closed.stale" fromDate="2007-10-29" toDate="2007-10-31"/&gt;
          &amp;lt;purgeInstances fromDate="2007-10-29" toDate="2007-10-31"/&gt;
          &amp;lt;purgeInstances select="SampleProcess" type="closed.completed"  toDateTime="2007-10-31"/&gt;
          &amp;lt;purgeInstances select="SampleProcess2" fromDateTime="2007-10-29T11:21:03 -0800"/&gt;
          &amp;lt;purgeInstances select="TestXPath" type="closed.stale" fromDate="2007-10-29" /&gt;
         &amp;lt;purgeInstances/&gt;
        &amp;lt;/manageDomain&gt;
      &amp;lt;/serverAdmin&gt;
   </pre>
   </div>
<h4>Short Description</h4>
<h5>UnDeployProcesses subtask:-</h5>
The select argument for "undeployProcesses" subtask accepts both exact process names, as well as java regex expressions. For instance, the above example shows undeployment for all processes whose name starts with the string "BPELProcess".
All arguments are mandatory.If you wish to specify "all" values for one or more arguments, specify  them in the format &amp;lt;argName>="all". For instance, you can specify type="all" or revision="all" or select="all" to indicate selection of all process states, all revisions or all processes.
<h5>PurgeInstances subtask :- </h5>
If fromDateTime/fromDate is omitted, it purges every matching instance upto and including the "toDateTime/toDate". Note that in case you specify a date as opposed to a dateTime, the time is defaulted to the beginning of the date. [i.e. 12 AM]
If the "toDateTime/toDate" is omitted, it purges every matching instance till the present.
If both are specified, the task purges all matching instances including and between the given timespan.
If both are omitted, the task purges all matching instances irrespective of the time.
The dateTime has to be specified in the format given in the above example.
The "type" attribute, if omitted, is equivalent to "all". The other values are
<ol>
<li>closed.aborted
<li>closed.cancelled
<li>closed.completed
<li>closed.faulted
<li>closed.stale
<li>closed.pendingCancel
<li>initiated
<li>open.running
<li>open.faulted
<li> open.suspended
</ol>
Each serverAdmin task can be used to administer a different BPEL runtime.
Within each serverAdmin, you can provide multiple &amp;lt;manageDomain> tasks, one for each domain to purge and undeploy processes and instances in each domain.
<h5>Print Log Subtask</h5>
Prints the domain log

<h5>SetProperty subtask</h5>
Sets a domain property. e.g. dspMaxThreads
<h5>GetProperties subtask</h5>
Gets the property values for the given set of domain properties.[comma separated]
<h5>Recovery/Cancellation/Deletion of Invocation or callback subtasks</h5>
Recovers, deletes or cancels invocations/callback. Arguments to this task are the processName, revision, the from/to date or dateTimes in the given format as specified in the example. [yyyy-MM-dd'T'HH:mm:ss Z or yyyy-MM-dd]
<h5>Create Domain subtask</h5>
Creates a domain with the given name.
<h5>Delete Domain subtask</h5>
Deletes the domain with the given name.
<b>Notes:</b>
Ensure that BPEL_HOME and ORACLE_HOME are properly set.
&amp;lt;p/>
<b>Sample Build File</b>
<div style="width: 700px;">
    <pre name="code" class="xml" cols="100" rows="20">
&amp;lt;?xml version="1.0" encoding="iso-8859-1"?&gt;
&amp;lt;project name="ServerAdminBuild" default="deploy" basedir="."&gt;
    &amp;lt;!--=============================--&gt;
    &amp;lt;!-- Process deployment targets  --&gt;
    &amp;lt;!--=============================--&gt;
    &amp;lt;!-- Set bpel.home from developer prompt's environment variable BPEL_HOME --&gt;
    &amp;lt;condition property="bpel.home" value="${env.BPEL_HOME}"&gt;
        &amp;lt;available file="${env.BPEL_HOME}/utilities/ant-orabpel.xml"/&gt;
    &amp;lt;/condition&gt;
    &amp;lt;!-- If bpel.home is not yet using env.BPEL_HOME, set it for JDev --&gt;
    &amp;lt;property name="bpel.home" value="${oracle.home}/integration/bpel"/&gt;
    &amp;lt;!-- First override from build.properties in process.dir, if available --&gt;
    &amp;lt;property file="${process.dir}/build.properties"/&gt;
    &amp;lt;!-- import custom ant tasks for the BPEL PM --&gt;
    &amp;lt;import file="${bpel.home}/utilities/ant-orabpel.xml"/&gt;
    &amp;lt;target name="adminTasks"&gt;
      &amp;lt;serverAdmin  providerURL="opmn:ormi://server.host.com:6004:oc4j_soa/orabpel" userName="oc4jadmin" password="welcome1"&gt;
        &amp;lt;manageDomain domain="default"&gt;
              &amp;lt;undeployProcesses select="BPELProcess.*"  type="all" revision="all"/&gt;
             &amp;lt;getProperties propertyNames="dspMinThreads"/&gt;
              &amp;lt;setProperty name="dspMinThreads" value="5"/&gt;
              &amp;lt;cancelInvocations select="PurchaseOrderProcess" revision="1.0" fromDateTime="2007-11-05T17:45:56 -0800" toDateTime="2007-11-05T17:45:58 -0800"/&gt;
              &amp;lt;recoverlInvocations select="OrderCreationProcess" revision="1.0" fromDateTime="2007-11-05T17:21:10 -0800" toDateTime="2007-11-05T17:21:15 -0800"/&gt;
              &amp;lt;cancelCallbacks select="OrderCreationProcess" revision="2.0" fromDate="2007-11-05" toDate="2007-11-06"/&gt;
              &amp;lt;recoverCallbacks select="OrdeUpdateProcess" revision="2.0" fromDate="2007-11-05" toDate="2007-11-06"/&gt;
              &amp;lt;printLog outFile="D:\\temp\\latest_domain.log" lineCount="2000"/&gt;
              &amp;lt;undeployProcesses select="TestXPath"  type="retired" revision="all"/&gt;
             &amp;lt;undeployProcesses select="Sample.*" type="all" revision="2.0"/&gt;
             &amp;lt;undeployProcesses select="SampleProcess" type="active" revision="1.0"/&gt;
         &amp;lt;!--example dateTime format "yyyy-MM-dd'T'HH:mm:ss Z"   "1994-11-05T08:15:30 -0800--&gt;
         &amp;lt;!--example date format "yyyy-MM-dd"   "1994-11-05"--&gt;
          &amp;lt;purgeInstances select="TestXPath" type="all" fromDateTime="2007-10-29T11:21:03 -0800" toDateTime="2007-10-31T13:21:03 -0800"/&gt;
          &amp;lt;purgeInstances select="TestJMS" type="closed.stale" fromDateTime="2007-10-29T11:21:03 -0800" toDateTime="2007-10-31T13:21:03 -0800"/&gt;
          &amp;lt;purgeInstances select="all" type="closed.stale" fromDate="2007-10-29" toDate="2007-10-31"/&gt;
          &amp;lt;purgeInstances fromDate="2007-10-29" toDate="2007-10-31"/&gt;
          &amp;lt;purgeInstances select="SampleProcess" type="closed.completed"  toDateTime="2007-10-31"/&gt;
          &amp;lt;purgeInstances select="SampleProcess2" fromDateTime="2007-10-29T11:21:03 -0800"/&gt;
          &amp;lt;purgeInstances select="TestXPath" type="closed.stale" fromDate="2007-10-29" /&gt;
         &amp;lt;purgeInstances/&gt;
        &amp;lt;/manageDomain&gt;
      &amp;lt;/serverAdmin&gt;
    &amp;lt;/target&gt;
&amp;lt;/project&gt;
</pre>
</div>]]>
      
   </content>
</entry>
<entry>
   <title><![CDATA[Customizing any BPEL Project Artifact using &lt;customizeDocument&gt;]]></title>
   <link rel="alternate" type="text/html" href="http://blogs.oracle.com/rammenon/2007/11/customizing_any_bpel_project_a.html" />
   <id>tag:blogs.oracle.com,2007:/rammenon//86.2649</id>
   
   <published>2007-11-22T22:20:25Z</published>
   <updated>2008-07-02T20:01:15Z</updated>
   
   <summary>Tokenization of artifacts in a BPEL Project This note describes a simple ant task that I had come up with that provides an easy and flexible method to enable migration of Process artifacts while deploying to multiple target environments. Problem...</summary>
   <author>
      <name>Ramkumar Menon</name>
      
   </author>
   
   <category term="bpeldeployment" label="BPEL Deployment" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="customization" label="Customization" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="en-US" xml:base="http://blogs.oracle.com/rammenon/">
      <![CDATA[<p><P><STRONG>Tokenization of artifacts in a BPEL Project</STRONG></P><br />
<P>This note describes a simple ant task that I had come up with that provides an easy and flexible method to enable migration of Process artifacts while deploying to multiple target environments.</P><br />
<P><STRONG>Problem Statement</STRONG></P><br />
<P>Most often, the BPEL process projects that you develop contain XSDs and WSDLs that fall into one or more of the following categories.<BR>a)&nbsp;The artifacts themselves are hosted on a dedicated server for the specific environment. [For instance, in the OHS htdocs within the development server] The artifacts are referred from the project using absolute URLs, containing the host, port, and other server specific information.<BR>b)&nbsp;The artifacts include or import other artifacts that are hosted on a dedicated server for the specific environment.<BR>c)&nbsp;The WSDL contains a JNDI location that changes for each environment.<BR>d)&nbsp;The WSDL defines inline schemas that contain imported remote XSDs that again are hosted on the dedicated development server.<BR>If your process exhibits one or more of the above characteristics, then more often that not, you will encounter the challenge of automating the migration of these artifacts at deployment time, especially when you have a medium to large number of projects, and/or if you have multiple target environments to deploy to.<BR>There are multiple approaches that are in prevelance today to tackle this.<BR>a)&nbsp;The laborious error-prone way of manually replacing the URLs/JNDI names for the new environments.<BR>b)&nbsp;Usage of &amp;lt;customize&gt; and &amp;lt;customizeWSDL&gt; ant tasks.</P><br />
<P>But what will be really useful is a generic customization infrastructure that enables users to tokenize any arbitrary XML based artifact within the BPEL Project that includes, but is not limited to<BR>a)&nbsp;The BPEL file<BR>b)&nbsp;The WSDL file(s)<BR>c)&nbsp;XSDs<BR>d)&nbsp;XSLT<BR>e)&nbsp;Toplink Mappings<BR>The list goes on.</P><br />
<P><STRONG>Overview</STRONG></P><br />
<P>The above issues are addressed through a new customization ant task, namely customizeDocument. This task is very similar in usage and behaviour to the existing customization tasks shipped with the product.<BR>The task allows token replacements of contents of any element or attribute that can be reached through an XPath expression. The only limitation of the task is within the tokenization of Processing Instructions within your XML based documents. For instance, the Jdeveloper generated XSL Map file contains a PI indicating the URLs of the source and target XSDs for the map. These URLs cannot be tokenized using this task, nor is this supported through any of the existing customization task.</P><br />
<P><BR><STRONG>Setup and Usage</STRONG></P><br />
<P>To setup this task, perform the following steps.<BR>a)&nbsp;Copy the customtasks.jar available at <A href="http://blogs.oracle.com/ramkumarMenon/gems/customtasks.jar">http://blogs.oracle.com/ramkumarMenon/gems/customtasks.jar</A> into $ORACLE_HOME\integration\lib directory.<BR>b)&nbsp;Open up ant-orabpel.xml in $ORACLE_HOME\bpel\utilities directory and paste the following piece of code into the file within the &amp;lt;project&gt; element.</P><br />
<P><BR>&amp;lt;path id="custom.tasks.class.path"&gt;<BR>&nbsp;&nbsp;&nbsp; &amp;lt;pathelement location="&amp;lt;absolute path to location of customtasks.jar&gt;"/&gt;<BR>&nbsp;&amp;lt;/path&gt; <BR>&nbsp; <BR>&nbsp; &amp;lt;property name="custom.tasks.class.path" refid="custom.tasks.class.path"/&gt;</P><br />
<P>&amp;lt;taskdef name="customizeDocument" classname="com.collaxa.cube.ant.taskdefs.customize.document.CustomizeDocument"&gt;<BR>&nbsp;&nbsp;&nbsp; &amp;lt;classpath&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;lt;pathelement path="${custom.tasks.class.path}"/&gt;<BR>&nbsp;&nbsp;&nbsp; &amp;lt;/classpath&gt;<BR>&amp;lt;/taskdef&gt;&nbsp; </P><br />
<P>The usage of this task is best illustrated through a simple running example.</P><br />
<P>You have a BPEL process project named i??CreatePurchaseOrderi?? that you have deployed to the i??testi?? environment. After you have performed all the necessary tests, you wish to promote this process to the production environment. <BR>The project contains amongst others, the process WSDL named CreatePurchaseOrderService.wsdl that imports the local Process Schema named PurchaseOrder.xsd. </P><br />
<P>The WSDL also imports another WSDL named GeneralPOHeader.wsdl that is a shared WSDL amongst multiple BPEL Processes. This WSDL is hosted on the OHS on the i??testi?? environment. The CreatePurchaseOrderService.wsdl also imports an XSD named Addressing.xsd that is again hosted on the OHS on the test environment.<BR>Moreover, each environment is associated with a specific support group i?? that receives notification on faults and errors within processes deployed to that specific environment. The support team email is specified as a preference witihn the deployment descriptor of the BPEL process. [bpel.xml]. </P><br />
<P>This is how a portion of CreatePurchaseOrderService.wsdl looks like.</P><br />
<P>&amp;lt;?xml version = '1.0' encoding = 'UTF-8'?&gt;<BR>&amp;lt;definitions name="PurchaseOrderService" targetNamespace="<A href="http://xmlns.oracle.com/PurchaseOrderService">http://xmlns.oracle.com/PurchaseOrderService</A>" xmlns="<A href="http://schemas.xmlsoap.org/wsdl/">http://schemas.xmlsoap.org/wsdl/</A>" xmlns:client="<A href="http://xmlns.oracle.com/PurchaseOrderService">http://xmlns.oracle.com/PurchaseOrderService</A>" xmlns:plnk="<A href="http://schemas.xmlsoap.org/ws/2003/05/partner-link/">http://schemas.xmlsoap.org/ws/2003/05/partner-link/</A>"&gt;</P><br />
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;lt;import namespace="<A href="http://xmlns.po.com/general">http://xmlns.po.com/general</A>" location="<A href="http://testsoa.server.com:7780/services/GeneralPOHeader.wsdl">http://testsoa.server.com:7780/services/GeneralPOHeader.wsdl</A>" /&gt;</P><br />
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;lt;types&gt;<BR>&nbsp;&nbsp;&amp;lt;schema xmlns="<A href="http://www.w3.org/2001/XMLSchema">http://www.w3.org/2001/XMLSchema</A>"&gt;<BR>&nbsp;&nbsp;&nbsp;&amp;lt;import namespace="<A href="http://xmlns.oracle.com/CreatePurchaseOrderService">http://xmlns.oracle.com/CreatePurchaseOrderService</A>" schemaLocation="CreatePurchaseOrder.xsd"/&gt;<BR>&nbsp;&nbsp;&nbsp;&amp;lt;import namespace="<A href="http://xmlns.po.com/addressing">http://xmlns.po.com/addressing</A>" schemaLocation="<A href='http://testsoa.server.com:7780/schemas/Addressing.xsd"/'>http://testsoa.server.com:7780/schemas/Addressing.xsd"/</A>&gt;<BR>&nbsp;&nbsp;&amp;lt;/schema&gt;<BR>&nbsp;&amp;lt;/types&gt;</P><br />
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; . . . . .&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&amp;lt;/definitions&gt;</P><br />
<P>And the following is a snippet of bpel.xml.</P><br />
<P>&amp;lt;?xml version = '1.0' encoding = 'UTF-8'?&gt;<BR>&amp;lt;BPELSuitcase&gt;<BR>&nbsp;&nbsp; &amp;lt;BPELProcess id="CreatePurchaseOrderService" src="CreatePurchaseOrderService.bpel"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;lt;partnerLinkBindings&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;lt;partnerLinkBinding name="client"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;lt;property name="wsdlLocation"&gt;CreatePurchaseOrderService.wsdl&amp;lt;/property&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;lt;/partnerLinkBinding&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;lt;/partnerLinkBindings&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;lt;preferences&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;lt;property name="supportEmail" encryption="plaintext"&gt;test_support_group@clientcompany.com&amp;lt;/property&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;lt;/preferences&gt;<BR>&nbsp;&nbsp; &amp;lt;/BPELProcess&gt;<BR>&amp;lt;/BPELSuitcase&gt;</P><br />
<P>Note the lines highlighted in blue. The intent is to migrate these URLs and preferences to the values applicable for production. The corresponding values in the prod environment are<BR>a)&nbsp;<A href="http://prodsoa.server.com:9876/services/GeneralPOHeader.wsdl">http://prodsoa.server.com:9876/services/GeneralPOHeader.wsdl</A><BR>b)&nbsp;<A href="http://prodsoa.server.com:9876/schemas/Addressing.xsd">http://prodsoa.server.com:9876/schemas/Addressing.xsd</A><BR>c)&nbsp;<A href="mailto:prod_support_group@clientcompany.com">prod_support_group@clientcompany.com</A></P><br />
<P>Note: Steps 1 through 3 are only one of the different ways to manage multiple environments. You could have alternative mechanisms to manage multi-server deployments.</P><br />
<P><STRONG>Step 1</STRONG>: Define multiple copies of ant-orabpel.properties, one for each environment - lets say as ant-orabpel_dev.properties, ant-orabpel_test.properties and ant-orabpel_prod.properties. Specify env specific parameters in each of these files.<BR><STRONG>Step 2</STRONG>: Define the following properties in the ant-orabpel_test.properties.<BR>a)&nbsp;service_host=testsoa.server.com<BR>b)&nbsp;service_ port = 7780<BR>c)&nbsp;<A href="mailto:support_group_email=test_support_group@clientcompany.com">support_group_email=test_support_group@clientcompany.com</A><BR>Define the following properties in the ant-orabpel_prod.properties.<BR>a)&nbsp;service_ host=prodsoa.server.com<BR>b)&nbsp;service_ port = 9876<BR>c)&nbsp;<A href="mailto:support_group_email=prod_support_group@clientcompany.com">support_group_email=prod_support_group@clientcompany.com</A><BR><STRONG>Step 3</STRONG>: Open the build.xml. Change the following line within it.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;lt;property file="${bpel.home}/utilities/ant-orabpel.properties"/&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; So that it looks like this.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;lt;property file="${bpel.home}/utilities/ant-orabpel_${deploy_env}.properties"/&gt;<BR>This enables us to pass in a command line argument named deploy_env to the build script and have it import the appropriate ant-orabpel.properties.<BR>For e.g., When you invoke the build for the test environment by typing in ant i??Ddeploy_env=test, the build.xml automatically imports the ant-orabpel_test.properties.</P><br />
<P><STRONG>Step 4</STRONG>: Open up the compile target block. We will now define the customizations on the process WSDL and the bpel.xml.</P><br />
<P>&amp;lt;target name="compile"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;lt;bpelc input="${process.dir}/bpel/bpel.xml" out="${process.dir}/output"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rev="${rev}" home="${bpel.home}"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;lt;/bpelc&gt;<BR>&nbsp;&nbsp;&nbsp; &amp;lt;/target&gt;</P><br />
<P>Before the bpelc node, add the customizeDocument task.</P><br />
<P>&amp;lt;target name=i??compilei??&gt;<BR>&nbsp;&nbsp; &amp;lt;customizeDocument inFile=i??${process.dir}/bpel/CreatePurchaseOrderService.wsdli?? outFile=i??${process.dir}/bpel/CreatePurchaseOrderService.wsdli??&gt;<BR>&amp;lt;/customizeDocument&gt;<BR>&nbsp;&nbsp; . . . . <BR>&amp;lt;/target&gt;<BR>The above step indicates the intent to customize the CreatePurchaseOrderService.wsdl. <BR>Next, we need to add the nested i??setTextContenti?? task that allows us to set the text of any attribute or element within the WSDL. Use the setTextContent task to specify the element or attribute to be updated, together with the value that it should be updated with.</P><br />
<P>&amp;lt;target name=i??compilei??&gt;<BR>&nbsp;&nbsp; &amp;lt;customizeDocument inFile=i??${process.dir}/bpel/CreatePurchaseOrderService.wsdli?? outFile=i??${process.dir}/bpel/CreatePurchaseOrderService.wsdli??&gt;<BR>&nbsp;&nbsp; &amp;lt;setTextContent select=i??/wsdl:definitions/wsdl:import/@locationi?? textContent=i??http://${service_host}:${service_port}/services/GeneralPOHeader.wsdli??/&gt;<BR>&amp;lt;/customizeDocument&gt;<BR>&nbsp;&nbsp; . . . . <BR>&amp;lt;/target&gt;</P><br />
<P>The i??selecti?? attribute on the customizeDocument indicates a qualified XPath expression that points to the node within the process WSDL that needs to be customized. In this example, it points to the location attribute of the WSDL import. The i??textContenti?? attribute will hold the text that will be set within the node. In this example, it points to the absolute URL of the imported WSDL. You can also specify the tokens in the URL i?? The build script will automatically subsitute them with the actual values when it is executed. For instance, if the build were executed with the i??Ddeploy_env=test or prod, the appropriate values of service_host and service_port will be substituted from the ant-orabpel_test/prod.properties.</P><br />
<P>Next, we shall customize the XSD import within the WSDL. For this, add one more setTextContent task within the customizeDocument task. The semantics of this is identical to the earlier step.</P><br />
<P>&amp;lt;target name=i??compilei??&gt;<BR>&nbsp;&nbsp; &amp;lt;customizeDocument inFile=i??${process.dir}/bpel/CreatePurchaseOrderService.wsdli?? outFile=i??${process.dir}/bpel/CreatePurchaseOrderService.wsdli??&gt;<BR>&nbsp;&nbsp; &amp;lt;setTextContent select=i??/wsdl:definitions/wsdl:import/@locationi?? textContent=i??http://${service_host}:${service_port}/services/GeneralPOHeader.wsdli??/&gt;<BR>&nbsp;&nbsp; &amp;lt;setTextContent select=i??/wsdl:definitions/wsdl:types/xsd:schema/xsd:import/@schemaLocationi?? textContent=i??http://${service_host}:${service_port}/schemas/Addressing.xsdi??/&gt;<BR>&amp;lt;/customizeDocument&gt;</P><br />
<P>&nbsp;&nbsp; . . . . <BR>&amp;lt;/target&gt;</P><br />
<P>The definition of the customization for the WSDL and XSD is almost complete. The missing step is the namespace URI mappings for the prefixes used within the select expressions. In this case, there are two prefixes that need to be mapped to a namespace URI.<BR>a)&nbsp;The i??xsdi?? namespace prefix<BR>b)&nbsp; The i??wsdli?? namespace prefix.<BR>These prefixes are declared as properties within the same build file.<BR>Declare two properties, one for each of the namespace URI, as below at the global level within the build.xml [i.e. as a child element of the &amp;lt;project&gt; element. The name of the properties should be&nbsp; i??prefix.i?? Followed by the actual prefix. The value attribute contains the namespace URI for the prefix.</P><br />
<P>&nbsp;&nbsp;&nbsp; &amp;lt;property name="prefix.wsdl" value="<A href='http://schemas.xmlsoap.org/wsdl/"/'>http://schemas.xmlsoap.org/wsdl/"/</A>&gt;<BR>&nbsp;&nbsp;&nbsp; &amp;lt;property name="prefix.xsd" value="<A href='http://www.w3.org/2001/XMLSchema"/'>http://www.w3.org/2001/XMLSchema"/</A>&gt;</P><br />
<P><BR>Next, we specify the customization required for the bpel.xml. <BR>Add another &amp;lt;customizeDocument&gt; task within the compile block. We need to add another one since we are customizing a different document. </P><br />
<P>&amp;lt;project&nbsp;&nbsp; i??..&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp; . . . . . <BR>&nbsp;&nbsp;&nbsp;&nbsp; &amp;lt;property name="prefix.wsdl" value="<A href='http://schemas.xmlsoap.org/wsdl/"/'>http://schemas.xmlsoap.org/wsdl/"/</A>&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp; &amp;lt;property name="prefix.xsd" value="<A href='http://www.w3.org/2001/XMLSchema"/'>http://www.w3.org/2001/XMLSchema"/</A>&gt;</P><br />
<P>&nbsp;&nbsp;&nbsp;&nbsp; &amp;lt;target name=i??compilei??&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;lt;customizeDocument inFile=i??${process.dir}/bpel/CreatePurchaseOrderService.wsdli?? outFile=i??${process.dir}/bpel/CreatePurchaseOrderService.wsdli??&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;lt;setTextContent select=i??/wsdl:definitions/wsdl:import/@locationi?? textContent=i??http://${service_host}:${service_port}/services/GeneralPOHeader.wsdli??/&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp; &amp;lt;setTextContent select=i??/wsdl:definitions/wsdl:types/xsd:schema/xsd:import/@schemaLocationi?? textContent=i??http://${service_host}:${service_port}/schemas/Addressing.xsdi??/&gt;<BR>&amp;lt;/customizeDocument&gt;</P><br />
<P>&nbsp;&nbsp; &amp;lt;customizeDocument inFile=i??${process.dir}/bpel/bpel.xmli?? outFile=i??${process.dir}/bpel/bpel.xmli??&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp; &amp;lt;setTextContent select=i??/BPELSuitcase/BPELProcess/preferences/property[@name=i??supportEmail<BR>i??]i?? textContent=i??${support_group_email}i??/&gt;<BR>&amp;lt;/customizeDocument&gt;<BR>&nbsp;&nbsp; . . . . <BR>&amp;lt;/target&gt;</P><br />
<P>Note that the select expression used for this customization does not need any namespace prefixes. This is attributed to the fact that bpel.xml by itself is an unqualified document. </P><br />
<P>This completes the customization features provided by this task.</P><br />
<P>Note that the customizeDocument task can be used to customize any bpel process project artifact, although not illustrated in this document.<BR></P></p>]]>
      
   </content>
</entry>
<entry>
   <title>Removing additional whitespaces in your Elements and Attributes</title>
   <link rel="alternate" type="text/html" href="http://blogs.oracle.com/rammenon/2007/11/removing_additional_whitespace.html" />
   <id>tag:blogs.oracle.com,2007:/rammenon//86.2650</id>
   
   <published>2007-11-15T06:30:27Z</published>
   <updated>2008-06-24T09:58:09Z</updated>
   
   <summary>In case your XML elements contain multiple whitespaces within the text, or leading and trailing the text, you could use normalize-space() function to remove the leading and trailing whitespaces, as well as to combine all adjacent intermediary whitespaces into one...</summary>
   <author>
      <name>Ramkumar Menon</name>
      
   </author>
   
   
   <content type="html" xml:lang="en-US" xml:base="http://blogs.oracle.com/rammenon/">
      <![CDATA[<p><P>In case your XML elements contain multiple whitespaces within the text, or leading and trailing the text, you could use normalize-space() function to remove the leading and trailing whitespaces, as well as to combine all adjacent intermediary whitespaces into one single whitespace.</P><br />
<P>For e.g</P><br />
<P><STRONG>Input</STRONG></P><br />
<P><FONT face="Courier, Monospace" size=2>&amp;lt;input&gt;&nbsp;&nbsp; 1sp 2sp&nbsp; 3sp&nbsp;&nbsp; 4sp&nbsp;&nbsp;&nbsp;&nbsp; 5sp&nbsp;&nbsp;&nbsp;&nbsp; 3sp&nbsp;&nbsp; end&amp;lt;/input&gt;</FONT></P><br />
<P><STRONG>XSLT</STRONG></P><br />
<P><FONT face="Courier, Monospace" size=2>&nbsp;&amp;lt;ns1:result&gt;<BR>&nbsp;&nbsp;&nbsp;&amp;lt;xsl:value-of select="normalize-space(/input)"/&gt;<BR>&amp;lt;/ns1:result&gt;</FONT></P><br />
<P><STRONG>Result</STRONG></P><br />
<P><FONT face="Courier, Monospace" size=2>&amp;lt;result&gt;1sp 2sp 3sp 4sp 5sp 3sp end&amp;lt;/result&gt;</FONT><BR></P></p>]]>
      
   </content>
</entry>

</feed>
