<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1978179670835676154</id><updated>2012-01-06T16:05:17.538-05:00</updated><category term='JPA'/><category term='Workflow'/><category term='BAM'/><category term='OID'/><category term='Java'/><category term='OPMN'/><category term='BPEL'/><category term='Toplink'/><category term='Web Services'/><title type='text'>Charles' SOA Blog</title><subtitle type='html'>Welcome to my blog. Here I will periodically post information and code solutions as it pertains to my work in the world of SOA and Java technology.

My current work has me focusing on techniques applicable to Oracle's implementation of SOA - including Oracle BPEL, BAM, and Java web services. 

I have over 20 years as a software development professional and over 9 years as a Java developer and architect.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://soablogger.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1978179670835676154/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://soablogger.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Charles Piazza</name><uri>http://www.blogger.com/profile/15444080033487009965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>23</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1978179670835676154.post-4589630817279712938</id><published>2011-06-15T11:09:00.004-04:00</published><updated>2011-06-15T11:29:20.140-04:00</updated><title type='text'>EL Expressions in Custom Tag Parameters</title><summary type='text'>When recently working on a custom Java tag library, I had forgotten one twist. If you need your tag to have a parameter accept an EL expression, your TLD attribute entry needs to include &lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;.Also don't forget that the tag lib version should be at least 1.2 and the JSP version should be at least 2.0.</summary><link rel='replies' type='application/atom+xml' href='http://soablogger.blogspot.com/feeds/4589630817279712938/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1978179670835676154&amp;postID=4589630817279712938' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1978179670835676154/posts/default/4589630817279712938'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1978179670835676154/posts/default/4589630817279712938'/><link rel='alternate' type='text/html' href='http://soablogger.blogspot.com/2011/06/el-expressions-in-custom-tag-parameters.html' title='EL Expressions in Custom Tag Parameters'/><author><name>Charles Piazza</name><uri>http://www.blogger.com/profile/15444080033487009965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1978179670835676154.post-6530300737133092153</id><published>2010-01-08T09:28:00.002-05:00</published><updated>2010-01-08T09:36:51.635-05:00</updated><title type='text'>Shell script for file checking</title><summary type='text'>I recently found I needed a simple way to determine if the correct number of daily files had been received and processed on my BPEL server. Since the server NFS mounts to a Windows share that has files being FTP'd to, there were a lot of places where a file might not make it. The shell script below checks for the number of instances of a file that has the date stamp in the file name and emails </summary><link rel='replies' type='application/atom+xml' href='http://soablogger.blogspot.com/feeds/6530300737133092153/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1978179670835676154&amp;postID=6530300737133092153' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1978179670835676154/posts/default/6530300737133092153'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1978179670835676154/posts/default/6530300737133092153'/><link rel='alternate' type='text/html' href='http://soablogger.blogspot.com/2010/01/shell-script-for-file-checking.html' title='Shell script for file checking'/><author><name>Charles Piazza</name><uri>http://www.blogger.com/profile/15444080033487009965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1978179670835676154.post-3702513882029984681</id><published>2009-09-10T12:30:00.001-04:00</published><updated>2009-09-10T12:30:21.319-04:00</updated><title type='text'>My Review of MBT Men's Tariki - Walnut Oiled Leather - On Sale!</title><summary type='text'> Footwear etc.   Free shipping and free return shipping on all MBT Footwear.    Each pair of MBTs include an instructional DVD  instruction card.    What...                            MBT Men's Tariki - Walnut Oiled Leather - On Sale!Best work shoes I've had Development geek  Sanford, FL  9/10/2009 4 5Sizing: Feels true to sizeWidth: Feels too narrowPros: Stable, Looks Great, Comfortable, </summary><link rel='replies' type='application/atom+xml' href='http://soablogger.blogspot.com/feeds/3702513882029984681/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1978179670835676154&amp;postID=3702513882029984681' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1978179670835676154/posts/default/3702513882029984681'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1978179670835676154/posts/default/3702513882029984681'/><link rel='alternate' type='text/html' href='http://soablogger.blogspot.com/2009/09/my-review-of-mbt-men-tariki-walnut.html' title='My Review of MBT Men&amp;#39;s Tariki - Walnut Oiled Leather - On Sale!'/><author><name>Charles Piazza</name><uri>http://www.blogger.com/profile/15444080033487009965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1978179670835676154.post-3572745204821791081</id><published>2009-04-28T13:30:00.000-04:00</published><updated>2009-04-28T13:31:04.882-04:00</updated><title type='text'>Find a string in all file on Linux</title><summary type='text'>find . -exec grep -il 'string_to_find' {} \;</summary><link rel='replies' type='application/atom+xml' href='http://soablogger.blogspot.com/feeds/3572745204821791081/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1978179670835676154&amp;postID=3572745204821791081' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1978179670835676154/posts/default/3572745204821791081'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1978179670835676154/posts/default/3572745204821791081'/><link rel='alternate' type='text/html' href='http://soablogger.blogspot.com/2009/04/find-string-in-all-file-on-linux.html' title='Find a string in all file on Linux'/><author><name>Charles Piazza</name><uri>http://www.blogger.com/profile/15444080033487009965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1978179670835676154.post-4831097002210589228</id><published>2008-12-30T10:44:00.001-05:00</published><updated>2008-12-30T10:45:40.539-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='BPEL'/><title type='text'>How to Access BPEL Variables in a Java Embed Activity</title><summary type='text'>In your embedded Java you can use:javaVar = getVariableData("BPEL_Variable_Name");andsetVariableData("BPEL_Variable_Name", javaVar);Obviously, the types need to match up!Also useful for debugging/logging purposes is:addAuditTrailEntry("My Message Goes Here:",optionalJavaVarValueToLog);</summary><link rel='replies' type='application/atom+xml' href='http://soablogger.blogspot.com/feeds/4831097002210589228/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1978179670835676154&amp;postID=4831097002210589228' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1978179670835676154/posts/default/4831097002210589228'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1978179670835676154/posts/default/4831097002210589228'/><link rel='alternate' type='text/html' href='http://soablogger.blogspot.com/2008/12/how-to-access-bpel-variables-in-java.html' title='How to Access BPEL Variables in a Java Embed Activity'/><author><name>Charles Piazza</name><uri>http://www.blogger.com/profile/15444080033487009965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1978179670835676154.post-2310882585997635270</id><published>2008-10-29T13:28:00.003-04:00</published><updated>2008-10-29T13:50:48.953-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web Services'/><category scheme='http://www.blogger.com/atom/ns#' term='BPEL'/><title type='text'>How to Create A Multiple Entry Point BPEL Process Using Pick</title><summary type='text'>In RIA development we want frequently want to consume web services. From a organizational point of view we typically want related methods to be provided by the same provider. If the web service is being provided via a BPEL process, how can we do that?The answer is to use a BPEL process with a Pick activity.Steps:1) Create a normal synchronous BPEL process. Let the wizard create it's default input</summary><link rel='replies' type='application/atom+xml' href='http://soablogger.blogspot.com/feeds/2310882585997635270/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1978179670835676154&amp;postID=2310882585997635270' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1978179670835676154/posts/default/2310882585997635270'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1978179670835676154/posts/default/2310882585997635270'/><link rel='alternate' type='text/html' href='http://soablogger.blogspot.com/2008/10/how-to-create-multiple-entry-point-bpel.html' title='How to Create A Multiple Entry Point BPEL Process Using Pick'/><author><name>Charles Piazza</name><uri>http://www.blogger.com/profile/15444080033487009965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_PYzbjUvMHaM/SQiib9lOigI/AAAAAAAAABI/u7ZlQ986ilQ/s72-c/SamplePickAcitivity.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1978179670835676154.post-1882188963836078984</id><published>2008-10-27T13:19:00.002-04:00</published><updated>2008-10-27T13:30:51.512-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='OID'/><title type='text'>Enable/Unlock OID User Account Using Java API</title><summary type='text'>How to programmatically enable and/or unlock a user's OID account using the Java API? Let's take a step by step look:First get a reference to the directory context:ctx = oracle.ldap.util.jndi.ConnectionUtil.getDefaultDirCtx(ldapHost, ldapPort, ldapUserCN, ldapCred );ldapUserCN will most likely be something like "cn=orcladmin" and ldapCred will be the password for that CN.Next, we build an </summary><link rel='replies' type='application/atom+xml' href='http://soablogger.blogspot.com/feeds/1882188963836078984/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1978179670835676154&amp;postID=1882188963836078984' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1978179670835676154/posts/default/1882188963836078984'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1978179670835676154/posts/default/1882188963836078984'/><link rel='alternate' type='text/html' href='http://soablogger.blogspot.com/2008/10/enableunlock-oid-user-account-using.html' title='Enable/Unlock OID User Account Using Java API'/><author><name>Charles Piazza</name><uri>http://www.blogger.com/profile/15444080033487009965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1978179670835676154.post-3604888370480715908</id><published>2008-09-12T12:38:00.003-04:00</published><updated>2008-09-12T12:46:56.109-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OID'/><category scheme='http://www.blogger.com/atom/ns#' term='Workflow'/><category scheme='http://www.blogger.com/atom/ns#' term='BPEL'/><title type='text'>Worklist Application Issue When Switching to OID Security Provider</title><summary type='text'>In the Oracle 10.1.3.3.x BPEL server there is an issue with tasks disappearing from everyone's task list after the server has been switched to use OID as the security provider.The issue is that along with user ID's, the worklist application maintains the user's identity context in several of the workflow data base tables, including: WFTASK, WFTASKHISTORY, WFUSERPREFERENCE, WFUSERTASKVIEW, </summary><link rel='replies' type='application/atom+xml' href='http://soablogger.blogspot.com/feeds/3604888370480715908/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1978179670835676154&amp;postID=3604888370480715908' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1978179670835676154/posts/default/3604888370480715908'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1978179670835676154/posts/default/3604888370480715908'/><link rel='alternate' type='text/html' href='http://soablogger.blogspot.com/2008/09/worklist-application-issue-when.html' title='Worklist Application Issue When Switching to OID Security Provider'/><author><name>Charles Piazza</name><uri>http://www.blogger.com/profile/15444080033487009965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1978179670835676154.post-5477442587814995500</id><published>2008-09-10T09:10:00.003-04:00</published><updated>2008-09-12T12:48:34.957-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OID'/><category scheme='http://www.blogger.com/atom/ns#' term='BPEL'/><title type='text'>Switch OC4J from OID back to File Based Security</title><summary type='text'>The switch from file based security to OID (or LDAP) based security is well documented by Oracle, but what if you ever need to switch back?The obvious thing to do it do go into Enterprise Manager and change all of the providers back to "File Based Security". This will get you close, but not quite there.The next thing you need to do is to roll back the changes to the jazn.xml files that were made </summary><link rel='replies' type='application/atom+xml' href='http://soablogger.blogspot.com/feeds/5477442587814995500/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1978179670835676154&amp;postID=5477442587814995500' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1978179670835676154/posts/default/5477442587814995500'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1978179670835676154/posts/default/5477442587814995500'/><link rel='alternate' type='text/html' href='http://soablogger.blogspot.com/2008/09/switch-oc4j-from-oid-back-to-file-based.html' title='Switch OC4J from OID back to File Based Security'/><author><name>Charles Piazza</name><uri>http://www.blogger.com/profile/15444080033487009965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1978179670835676154.post-1258054897408024952</id><published>2008-07-30T12:18:00.003-04:00</published><updated>2008-09-12T12:51:33.587-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OPMN'/><category scheme='http://www.blogger.com/atom/ns#' term='BPEL'/><title type='text'>Find the OPMN Port for Java BPEL API Calls</title><summary type='text'>Frequently, you'll need the OPMN request port for doing Java BPEL API calls.You can find this value by looking at the opmn.xml file on the mid tier application server. It is in the $ORACLE_SOA_HOME/opmn/conf directory. Around the 5th line down in the "port" tag, you'll need to use the port number specified in the "request" attribute.</summary><link rel='replies' type='application/atom+xml' href='http://soablogger.blogspot.com/feeds/1258054897408024952/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1978179670835676154&amp;postID=1258054897408024952' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1978179670835676154/posts/default/1258054897408024952'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1978179670835676154/posts/default/1258054897408024952'/><link rel='alternate' type='text/html' href='http://soablogger.blogspot.com/2008/07/find-opmn-port-for-java-bpel-api-calls.html' title='Find the OPMN Port for Java BPEL API Calls'/><author><name>Charles Piazza</name><uri>http://www.blogger.com/profile/15444080033487009965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1978179670835676154.post-7048171221613804677</id><published>2008-07-16T09:44:00.005-04:00</published><updated>2008-11-13T02:11:54.692-05:00</updated><title type='text'>Add attachment to BPEL Human Task at creation</title><summary type='text'>Consider the sample BPEL flow below, which contains a Human Task activity. It may be useful at times to have BPEL attach data to the task as an attachment file. How can this be done?We can do this by expanding the human task activity and providing some custom initialization code in the first, the AssignTaskAttributes, assignment section.By adding four additional Copy directives to the existing </summary><link rel='replies' type='application/atom+xml' href='http://soablogger.blogspot.com/feeds/7048171221613804677/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1978179670835676154&amp;postID=7048171221613804677' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1978179670835676154/posts/default/7048171221613804677'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1978179670835676154/posts/default/7048171221613804677'/><link rel='alternate' type='text/html' href='http://soablogger.blogspot.com/2008/07/add-attachment-to-bpel-human-task-at.html' title='Add attachment to BPEL Human Task at creation'/><author><name>Charles Piazza</name><uri>http://www.blogger.com/profile/15444080033487009965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_PYzbjUvMHaM/SH38Q1ZpAaI/AAAAAAAAAAU/ZgN8i4hWsls/s72-c/wfattach1.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1978179670835676154.post-4320913844780284399</id><published>2008-07-14T10:43:00.003-04:00</published><updated>2008-07-14T11:04:24.598-04:00</updated><title type='text'>Invoke BPEL Process with Java API</title><summary type='text'>This is a frequently asked question on the Oracle BPEL Forums, so I thought I would address it here.import com.oracle.bpel.client.Locator;import com.oracle.bpel.client.NormalizedMessage;import com.oracle.bpel.client.delivery.IDeliveryService;public class InvokeBpel {   public static void main(String args[]) {       Properties props = new java.util.Properties();       Locator locator = null;</summary><link rel='replies' type='application/atom+xml' href='http://soablogger.blogspot.com/feeds/4320913844780284399/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1978179670835676154&amp;postID=4320913844780284399' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1978179670835676154/posts/default/4320913844780284399'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1978179670835676154/posts/default/4320913844780284399'/><link rel='alternate' type='text/html' href='http://soablogger.blogspot.com/2008/07/invoke-bpel-process-with-java-api.html' title='Invoke BPEL Process with Java API'/><author><name>Charles Piazza</name><uri>http://www.blogger.com/profile/15444080033487009965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1978179670835676154.post-6422747322019442274</id><published>2008-04-28T11:37:00.004-04:00</published><updated>2008-11-13T02:11:54.965-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BPEL'/><title type='text'>Including Task History from Previous Task in Oracle BPEL Human Workflow</title><summary type='text'>Oracle BPEL allows the use of Human Task process activities, in conjunction with the Oracle Worklist Application, to allow human interaction with BPEL processes.Sometimes, it would be desirable to have two human flows that include the same information. Consider a purchase request -- such a request may have a management approval flow, and then a flow for the purchasing department to actually </summary><link rel='replies' type='application/atom+xml' href='http://soablogger.blogspot.com/feeds/6422747322019442274/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1978179670835676154&amp;postID=6422747322019442274' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1978179670835676154/posts/default/6422747322019442274'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1978179670835676154/posts/default/6422747322019442274'/><link rel='alternate' type='text/html' href='http://soablogger.blogspot.com/2008/04/including-task-history-from-previous.html' title='Including Task History from Previous Task in Oracle BPEL Human Workflow'/><author><name>Charles Piazza</name><uri>http://www.blogger.com/profile/15444080033487009965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_PYzbjUvMHaM/SBXwzSfvz-I/AAAAAAAAAAM/gb0P7ildMIc/s72-c/HT1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1978179670835676154.post-5931146850215206928</id><published>2008-03-22T09:30:00.003-04:00</published><updated>2008-03-22T09:37:31.751-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='BPEL'/><title type='text'>Programatically controlling the length of expiration/escalation on BPEL Human Task</title><summary type='text'>By default Oracle BPEL lets you expire or escalate tasks on a pre-determined duration basis. But consider the situation where you want the task duration to be 8 working hours before expiration, and working hours are only the time between 8 am an 5 pm, Monday through Friday -- how can you do this?The options in the standard task dialog don't really accommodate this, but you can work around it. You</summary><link rel='replies' type='application/atom+xml' href='http://soablogger.blogspot.com/feeds/5931146850215206928/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1978179670835676154&amp;postID=5931146850215206928' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1978179670835676154/posts/default/5931146850215206928'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1978179670835676154/posts/default/5931146850215206928'/><link rel='alternate' type='text/html' href='http://soablogger.blogspot.com/2008/03/programatically-controlling-length-of.html' title='Programatically controlling the length of expiration/escalation on BPEL Human Task'/><author><name>Charles Piazza</name><uri>http://www.blogger.com/profile/15444080033487009965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1978179670835676154.post-9099356770084020022</id><published>2008-03-22T09:28:00.003-04:00</published><updated>2008-03-22T09:29:58.210-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='BPEL'/><title type='text'>Programmatically determining BPEL manual recovery status</title><summary type='text'>It's been a while since I've written an article, and I hope no one has been waiting all this time for part 2 of my BAM/BPEL alert article. I promise to complete that write up soon.Today, however, I'd like to talk about an interesting problem I ran across this week. If anyone has experience with Oracle's BPEL product you know that sometimes BPEL processes can go to manual recovery. The two most </summary><link rel='replies' type='application/atom+xml' href='http://soablogger.blogspot.com/feeds/9099356770084020022/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1978179670835676154&amp;postID=9099356770084020022' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1978179670835676154/posts/default/9099356770084020022'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1978179670835676154/posts/default/9099356770084020022'/><link rel='alternate' type='text/html' href='http://soablogger.blogspot.com/2008/03/programmatically-determining-bpel.html' title='Programmatically determining BPEL manual recovery status'/><author><name>Charles Piazza</name><uri>http://www.blogger.com/profile/15444080033487009965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1978179670835676154.post-8446253241458878234</id><published>2008-03-22T09:28:00.001-04:00</published><updated>2008-03-22T09:28:32.001-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BAM'/><category scheme='http://www.blogger.com/atom/ns#' term='BPEL'/><title type='text'>Oracle BAM - Calling an external web service as an alert - Part 1 - BAM Configuration</title><summary type='text'>Oracle's BAM tool is very useful not only for reporting on enterprise data, but also in taking action on certain events.For instance, suppose you have a BAM object defined and other processes are interested in the fact that the BAM object has been populated with a new row. In the SOA world, there are many ways we could notify another process -- via a message queue or simply by calling a web </summary><link rel='replies' type='application/atom+xml' href='http://soablogger.blogspot.com/feeds/8446253241458878234/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1978179670835676154&amp;postID=8446253241458878234' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1978179670835676154/posts/default/8446253241458878234'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1978179670835676154/posts/default/8446253241458878234'/><link rel='alternate' type='text/html' href='http://soablogger.blogspot.com/2008/03/oracle-bam-calling-external-web-service.html' title='Oracle BAM - Calling an external web service as an alert - Part 1 - BAM Configuration'/><author><name>Charles Piazza</name><uri>http://www.blogger.com/profile/15444080033487009965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1978179670835676154.post-5478617099192452803</id><published>2008-03-22T09:27:00.001-04:00</published><updated>2008-03-22T09:27:57.945-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Toplink'/><category scheme='http://www.blogger.com/atom/ns#' term='JPA'/><title type='text'>JNDI URL in High Availability Environments</title><summary type='text'> In high availability environments you'll want to specify more than one source for your JNDI provider. How can you do that?  With a simple URL change you can switch from only specifying one provider:jndiProviderURL = "ormi://localhost/Service"to a list of nodes which can serve as the provider:jndiProviderURL = "opmn:ormi://host1:port1:oc4j/Service,  opmn:ormi://host2:port2:oc4j/Service"</summary><link rel='replies' type='application/atom+xml' href='http://soablogger.blogspot.com/feeds/5478617099192452803/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1978179670835676154&amp;postID=5478617099192452803' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1978179670835676154/posts/default/5478617099192452803'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1978179670835676154/posts/default/5478617099192452803'/><link rel='alternate' type='text/html' href='http://soablogger.blogspot.com/2008/03/jndi-url-in-high-availability.html' title='JNDI URL in High Availability Environments'/><author><name>Charles Piazza</name><uri>http://www.blogger.com/profile/15444080033487009965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1978179670835676154.post-4684823766428065908</id><published>2008-03-22T09:26:00.000-04:00</published><updated>2008-03-22T09:27:09.877-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BPEL'/><title type='text'>Debugging a failing BPEL process - How to force dehydration</title><summary type='text'> Sometimes a failing BPEL process will fail without much trace, not even showing that an instance was ever created in Oracle process manager. In this case it may be useful to force dehydration to aid debugging.   You can try to force dehydration in your process by:1) Adding a Java execution block to your process at the point you wish to dehydrate the process2) Calling the checkpoint() method  You</summary><link rel='replies' type='application/atom+xml' href='http://soablogger.blogspot.com/feeds/4684823766428065908/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1978179670835676154&amp;postID=4684823766428065908' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1978179670835676154/posts/default/4684823766428065908'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1978179670835676154/posts/default/4684823766428065908'/><link rel='alternate' type='text/html' href='http://soablogger.blogspot.com/2008/03/debugging-failing-bpel-process-how-to.html' title='Debugging a failing BPEL process - How to force dehydration'/><author><name>Charles Piazza</name><uri>http://www.blogger.com/profile/15444080033487009965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1978179670835676154.post-2488608211542011776</id><published>2008-03-22T09:21:00.002-04:00</published><updated>2008-03-22T09:25:53.896-04:00</updated><title type='text'>Changing an Asynchronous Oracle BPEL process to be Synchronous</title><summary type='text'>One of the top suggestions Oracle has for tuning BPEL processes is to make sure that processes that can be synchronous are. This is because synchronous processes can be considered transient within the BPEL engine -- and the BPEL engine has several tunable parameters for transient processes that determine if and when they are pushed to the dehydration store. Fewer dehydration trips means better </summary><link rel='replies' type='application/atom+xml' href='http://soablogger.blogspot.com/feeds/2488608211542011776/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1978179670835676154&amp;postID=2488608211542011776' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1978179670835676154/posts/default/2488608211542011776'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1978179670835676154/posts/default/2488608211542011776'/><link rel='alternate' type='text/html' href='http://soablogger.blogspot.com/2008/03/changing-asynchronous-oracle-bpel.html' title='Changing an Asynchronous Oracle BPEL process to be Synchronous'/><author><name>Charles Piazza</name><uri>http://www.blogger.com/profile/15444080033487009965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1978179670835676154.post-212831648203165013</id><published>2008-03-22T09:19:00.000-04:00</published><updated>2008-03-22T09:20:53.651-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='BPEL'/><title type='text'>Tips on the Oracle BPEL Java API - Part 2 - Using the Locator class to get a list of processes</title><summary type='text'>In part 1, we saw how to use the Server class to connect to the BPEL server and get a list of BPEL domains configured on that server. The Server class is useful for performing administrative tasks on the BPEL server. If we want to perform process oriented tasks, we need to use the Locator class and it's methods. First, you'll need to import several BPEL API classes: import </summary><link rel='replies' type='application/atom+xml' href='http://soablogger.blogspot.com/feeds/212831648203165013/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1978179670835676154&amp;postID=212831648203165013' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1978179670835676154/posts/default/212831648203165013'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1978179670835676154/posts/default/212831648203165013'/><link rel='alternate' type='text/html' href='http://soablogger.blogspot.com/2008/03/tips-on-oracle-bpel-java-api-part-2.html' title='Tips on the Oracle BPEL Java API - Part 2 - Using the Locator class to get a list of processes'/><author><name>Charles Piazza</name><uri>http://www.blogger.com/profile/15444080033487009965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1978179670835676154.post-3608144083542746624</id><published>2008-03-22T09:17:00.000-04:00</published><updated>2008-03-22T09:18:41.706-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Toplink'/><title type='text'>Sometimes Toplink's mergeEntity doesn't....</title><summary type='text'>If you use JDeveloper and you want to use a JPA, odds are you'll pick Toplink. Toplink works well for me, but if you use a session facade bean to access your Toplink queries and objects you may have had a run in, like I have in the past, with the mergeEntity() method. It seems like sometimes this method just will not save the data to the database, which can be very frustrating. I'll list some </summary><link rel='replies' type='application/atom+xml' href='http://soablogger.blogspot.com/feeds/3608144083542746624/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1978179670835676154&amp;postID=3608144083542746624' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1978179670835676154/posts/default/3608144083542746624'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1978179670835676154/posts/default/3608144083542746624'/><link rel='alternate' type='text/html' href='http://soablogger.blogspot.com/2008/03/sometimes-toplinks-mergeentity-doesnt.html' title='Sometimes Toplink&apos;s mergeEntity doesn&apos;t....'/><author><name>Charles Piazza</name><uri>http://www.blogger.com/profile/15444080033487009965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1978179670835676154.post-5154864264308823372</id><published>2008-03-22T09:13:00.002-04:00</published><updated>2008-03-22T09:17:13.757-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='BPEL'/><title type='text'>Tips on the Oracle BPEL Java API - Part 1 - Using the Server class to get a list of domains</title><summary type='text'>In this post I'll describe some of the common things that need to be done to call the Oracle BPEL PM API from Java, and I'll show you how to put that to use to get a list of the current BPEL domains defined on you server. We'll be using the Server class, which is in the com.oracle.bpel.client package, and is useful for manipulating BPEL at the server level.First, for this example, you'll need to </summary><link rel='replies' type='application/atom+xml' href='http://soablogger.blogspot.com/feeds/5154864264308823372/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1978179670835676154&amp;postID=5154864264308823372' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1978179670835676154/posts/default/5154864264308823372'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1978179670835676154/posts/default/5154864264308823372'/><link rel='alternate' type='text/html' href='http://soablogger.blogspot.com/2008/03/tips-on-oracle-bpel-java-api-part-1.html' title='Tips on the Oracle BPEL Java API - Part 1 - Using the Server class to get a list of domains'/><author><name>Charles Piazza</name><uri>http://www.blogger.com/profile/15444080033487009965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1978179670835676154.post-4653144262817428164</id><published>2008-03-22T09:09:00.003-04:00</published><updated>2008-03-22T09:12:55.709-04:00</updated><title type='text'>A short note about our new site home</title><summary type='text'>This site contains the posts from my previous location for Charles' SOA Blog ( http://soablog.info ) through the end of 2007.Additional posts will be made here as the other account is phased out.</summary><link rel='replies' type='application/atom+xml' href='http://soablogger.blogspot.com/feeds/4653144262817428164/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1978179670835676154&amp;postID=4653144262817428164' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1978179670835676154/posts/default/4653144262817428164'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1978179670835676154/posts/default/4653144262817428164'/><link rel='alternate' type='text/html' href='http://soablogger.blogspot.com/2008/03/short-note-about-our-new-site-home.html' title='A short note about our new site home'/><author><name>Charles Piazza</name><uri>http://www.blogger.com/profile/15444080033487009965</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
