<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
   <title>BPM, E2.0 @Oracle</title>
   <link rel="alternate" type="text/html" href="http://blogs.oracle.com/lmukadam/" />
   <link rel="self" type="application/atom+xml" href="http://blogs.oracle.com/lmukadam/xml/rss.xml" />
   <id>tag:blogs.oracle.com,2009:/lmukadam//578</id>
   <updated>2009-05-27T14:14:40Z</updated>
   
   <generator uri="http://www.sixapart.com/movabletype/">Movable Type Enterprise 1.52-en-voltron-r47459-20070213</generator>

<entry>
   <title>Portal UI customization in WCI</title>
   <link rel="alternate" type="text/html" href="http://blogs.oracle.com/lmukadam/2009/05/portal_ui_customization_in_wci_1.html" />
   <id>tag:blogs.oracle.com,2009:/lmukadam//578.12356</id>
   
   <published>2009-05-19T00:01:27Z</published>
   <updated>2009-05-27T14:14:40Z</updated>
   
   <summary>I’ll shortly be writing an article on optimizing the portal performance from the UI side and I thought it would be good to first touch on the subject of UI customization itself beforehand. In this post, I’ll also highlight some...</summary>
   <author>
      <name>ali.mukadam</name>
      
   </author>
   
   <category term="enterprise20" label="Enterprise 2.0" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="portal" label="Portal" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="wci" label="WCI" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="en-us" xml:base="http://blogs.oracle.com/lmukadam/">
      <![CDATA[<p>I’ll shortly be writing an article on optimizing the portal performance from the UI side and I thought it would be good to first touch on the subject of UI customization itself beforehand. In this post, I’ll also highlight some of the lessons we learnt over the years along a common journey with many fantastic and innovative customers. They have been the main drivers of several of the features now available in the portal. Although I vaguely recall doing something on one or two 4.0/4.1 portals, I would say that that my portal history really starts with version 4.5., so I’ll talk about UI customization from there onwards.</p>

<p>In the 4.5 version of the portal, whenever you had to customize the user interface, you essentially had to modify the ASP/JSP code of the portal web application. The advantage was that this was relatively easy to do. You could just edit the relevant asp/jsp files and <em>voilà</em>! Well, for portals deployed on the Unix platform, maybe you had to restart the WLS (at that time I think we were using Weblogic Server 6.1) but still, from the programmer’s perspective, this bit was easy to do. The problem was when you had to upgrade e.g. when you upgrade from 4.5 to 4.5 WS or its subsequent service packs (1, 2 and 3). Essentially you had to find the difference in the asp/jsp code between the vanilla version that you installed and the newer version that you are upgrading to as well as between the vanilla version that you installed and the changes that you had made. You then had to re-apply these changes programmatically to the newer upgraded version. Also, in the 4.5.* version, if say you had to deploy to multiple audiences, you had to install as many instances of the portal as the number of audience required. This meant that you had to apply the UI customizations programmatically to each of the instances. If all instances had the same UI customizations, once you've done the first one, the remaining ones would be relatively easier to do (since you just need to apply the same changes) but then certain trends began to emerge e.g. an internet-facing portal would be upgraded less frequently (because it's customer-facing, downtime may impact image, revenue etc.) and hence would frequently be found on an earlier version than say an internal portal etc. If the different portals had different UI customizations, you had to repeat that exercise for each.</p>

<p>With the 5.0 release, came the introduction of sub-portals and dynamic discovery. I'll touch on the subject of sub-portals in more details later. Dynamic discovery basically allows you to plug in your changes to the UI architecture without having to modify any of the core portal code or existing UI code. Say you were using the Java portal and you wanted a new navigation. You would essentially be developing the new navigation scheme using the relevant portal APIs, packaged it into a jar file, include it into your portal war file, configure the portal using the relevant XML configuration files to allow the portal to <em>discover</em> it and redeploy the portal application. This is described in more detail in the <a href=” http://download.oracle.com/docs/cd/E13158_01/alui/wci/docs103/uiguide/webcenterinteraction_uicustomizationguide.pdf”>UI Customization Guide</a> (check Chapter 9). When the portal starts, it will load the new configurations up at start-time. This approach had a couple of advantages:<br />
<ol><br />
<li>You could use your own JavaScript, build your new UI without having to overwrite the core portal or existing UI functionality</li><br />
<li>By using the available interfaces, you would be using the MVC pattern</li><br />
<li>When you upgrade, you don’t need to change your code all over again, as you had to do previously in pre 5.0</li><br />
<li>It can handle multiple versions of the UI changes by giving precedence to the last loaded version</li><br />
</ol></p>

<p>When you upgrade to a subsequent service packs, (usually) the installer would handle the customizations and include them. If for whatever reason it did not, then you just needed to reapply the customization in the previous paragraph. As UI customizations are usually a major part of a portal implementation, chances are that once developed and tested, they wouldn’t change that often. Hence, the major benefits were undoubtedly the ability to implement the UI changes using sound design patterns (MVC), switch navigation scheme at run-time without having to restart the portal and finally manage them through upgrades. The relatively harder bit was to actually implement, test and debug these customizations as you had to do these customizations in Java or C# (if you had deployed the .NET version).</p>

<p>In G6, the sub-portal feature from 5.0 was expanded into the experience definition. Essentially, you could now create new “sub-portals” at run-time (you could also do that in 5.0 by the way but there are more features in G6), allow the rendering of a new user experience based on a set of conditions. Say you are deploying an Intranet and partner portal. You could configure the experience definitions and the rules so that only employees can access and login into the Intranet portal whereas only partners can login into the partner portal. And the beauty with sub-portals is that you do not need to have multiple instances running. Physically, they would all be accessing the same portal but the user experience, including anonymous experience, login etc. could be different based on the experience conditions that you set. Some of the UI customizations e.g. login portlet, navigation bar etc could also now be done through the adaptive tags. However, it was still hard to customize other areas of the portal e.g. the search results page, the knowledge directory and thus you still had to implement these in Java or C#. During that time came LiquidSkin, a very popular custom navigation scheme offered by the consulting team. With LiquidSkin, you could configure several aspects of the UI using an XML file e.g the ordering of communities, navigation layouts, styles etc and you could change them on the fly without having to restart the portal either. For each experience definition, you would have a config file which would then control the overall look and feel of that experience.</p>

<p>In 6.5/10gR3, we improved the experience definition features with the introduction of adaptive layouts. Some of the improvements brought were motivated by a number of factors, including new trends in Web Design e.g. cleaner, modern UI (check <a href=” http://developer.yahoo.com/ypatterns/”>Yahoo Design Patterns Library</a>) but also generally the web e.g. lower payloads for the web pages while delivering faster and richer interaction of modern “Web 2.0” sites; the availability of sophisticated JavaScript frameworks like Dojo (which 10gR3 uses), YUI, JQuery and Mootools among others and customers’ desire to have the ability to use them to deliver rich user interaction capabilities; the improvement in mobile devices such as Blackberry and iPhones and their increasing ubiquity in the workplace, hence making the portal available on mobile channels was important (e.g. in the 10gR3, there’s now an iPhone layout and experience). Adaptive Layouts essentially provide you with the practicality of developing the UI customizations <em>à la</em> 4.5 while also keeping the pluggable nature of 5.x (to preserve changes after upgrade) and the experience definition features of G6. The adaptive layouts consist of XML/(X)HTML, JavaScript, CSS and adaptive tags and usually deployed on the imageserver and you can apply them per experience definition. Naturally, you can reuse existing layouts in other experience definitions. Areas where you can the UI using adaptive layouts include:<br />
<ul><br />
<li>Base Page (affects all pages)</li><br />
<li>Knowledge Directory</li><br />
<li>Portlet Layouts (My Pages + Communities)</li><br />
<li>Portlet Selection (Flyout Editor)</li><br />
<li>Profile Page Layouts</li><br />
<li>Search Results Layouts</li><br />
<li>Login Page Layout</li><br />
<li>My Account Page Layout</li><br />
<li>Error Page Layout</li><br />
<li>Community Selection Layout</li><br />
<li>Override portlet selection layout</li><br />
</ul></p>

<p>I hope this overview of UI customizations is useful to you. I would like to thank our customers who made the journey through several versions, upgrades and 2 acquisitions with us and yet remain the driving inspiration behind it all. Finally, we are also doing a brief <a href="http://www.surveymonkey.com/s.aspx?sm=tLiCY0a_2fizNxR2VBLf8_2btg_3d_3d">survey </a> of BEA customers. Please tell us what you think and you stand a chance to win an iPod Touch.</p>

<p>Cheers,<br />
Ali</p>]]>
      
   </content>
</entry>
<entry>
   <title>Dude, where&apos;s my Pi? - Part 2</title>
   <link rel="alternate" type="text/html" href="http://blogs.oracle.com/lmukadam/2009/04/dude_wheres_my_pi_part_2_1.html" />
   <id>tag:blogs.oracle.com,2009:/lmukadam//578.11420</id>
   
   <published>2009-04-09T07:09:35Z</published>
   <updated>2009-04-14T07:44:06Z</updated>
   
   <summary>While the increasing attention given to formal mathematical theories by BPM vendors is a welcome development in this field, it is not possible for everyone to understand, much less use them, least of all business analysts or process developers. As...</summary>
   <author>
      <name>ali.mukadam</name>
      
   </author>
   
   <category term="bpel" label="BPEL" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="bpm" label="BPM" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="bpmn" label="BPMN" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="xpdl" label="XPDL" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="en-us" xml:base="http://blogs.oracle.com/lmukadam/">
      <![CDATA[<p>While the increasing attention given to formal mathematical theories by BPM vendors is a welcome development in this field, it is not possible for everyone to understand, much less use them, least of all business analysts or process developers.  As a result, it is quite understandable to get confused, especially when seminal luminaries and vendors in the BPM field trade such articles on the blogosphere in what is essentially a tit-for-tat exchange (not in chronological order):<ul><li><a href=http://itredux.com/2008/11/21/why-xpdl-is-essentially-useless/> Why XPDL is essentially useless (Ghalimi)</a></li><li><a href="http://www.infoq.com/news/2009/01/WhoNeedsBPEL">BPEL:Who needs it anyway? (Swenson)</a></li><li><a href="http://www.infoq.com/articles/bpelbpm">Why BPEL is not the holy grail for BPM (Vigneras)</a></li><li><a href="http://itredux.com/2006/04/10/why-bpel-matters/">Why BPEL matters (Ghalimi)</a></li></ul></p>

<p>Before I go on, let me first say that it is great to see the passion from these heavy weights and I personally learned a lot from these exchanges. The objective of this post is therefore to <ol><li> Show that Oracle BPM can actually model parallel business processes which are stored in formats other than BPEL (in this case XPDL) and execute them as well (in response to Ghalimi’s challenge)</li><li>Reassure existing BPM customers (both Oracle BPM and BPEL PM) who may have become concerned of having chosen the “wrong” engine and therefore being denied the mysterious power of a Pi-Calculus process engine</li><li>Provide a historical perspective and briefly analyze the various claims made in some of the articles above for potential BPM customers so that they can make an educated choice</li><li>And finally to provide some words of comfort for business analysts/process developers, who are understandably worried about having to learn Pi-Calculus to before embarking on BPM projects</li></ol></p>

<p>As such, I feel it is important to provide a historical perspective. In an influential <a href="http://is.tm.tue.nl/research/patterns/download/pi-hype.pdf">paper</a> written a few years ago, van der Aalst issued seven challenges for those advocating the use of Pi-Calculus. van der Aalst wrote that the “big discrepancy between the Pi-hype and reality will not only limit the applicability of WSCLs (Web Service Composition Languages) but also discredit a beautiful scientific framework like Pi-Calculus”. van der Aalst further went on to propose that a more mature evaluation of languages ought to consider how they support <a href="http://is.tm.tue.nl/research/patterns/download/wfs-pat-2002.pdf">workflow patterns</a>. Here, we have excellent literature to demonstrate Oracle’s richness of offering:<ul><li><a href="http://www.workflowpatterns.com/evaluations/standard/oraclebpel.php"> Pattern-based evaluation of Oracle BPEL</a> (Done by independent party)</li><li><a href="http://www.bptrends.com/publicationfiles/05-06-WP-BPMProcessPatterns-Atwood1.pdf"> BPM Process Patterns</a> (written by the brilliant Dan Atwood)</li></ul></p>

<p>However, let’s stick to WSCLs. In another <a href="http://is.tm.tue.nl/research/patterns/download/ieeewebflow.pdf">paper</a>, van der Aalst made a comparison of the different languages. In this, he showed a clear distinction of what patterns the <i>languages</i> themselves (i.e. irrespective of products) support. If you compare the standards’ (BPEL, XPDL) support  for the patterns vs. what Oracle BPEL or Oracle BPM can support, you’ll find that the products can actually support more than the standards themselves support and there’s a very good reason for this. The products and their process constructs are driven by customers’ requests which generally tend to be more complex than standards and for that we provide extensions to meet our customers' requirements. Additionally, the comparison was done using BPEL 1.0 and XPDL 1.0 beta which are currently at versions 2.0 and 2.1. While I haven't seen any study based on the newer versions of the standards or products, we can reasonably expect improved support for the patterns. So, now that we have established both standards’ support (to a varying degree) for patterns, what are we to make of the strident hype for a process engine based on Pi-Calculus vs. one based on <a href="http://en.wikipedia.org/wiki/Petri_net">Petrinets</a>? Again, van der Aalst has already provided a most illuminating <a href="http://www.bptrends.com/publicationfiles/02-04%20ART%20WhyworkflowisNOTjustaPi%20-%20Aalst1.pdf">answer</a>. In this, van der Aalst challenged those trying to link BPML and BPEL to Pi-Calculus and asked "what concepts in these languages can be attributed to things specific for Pi-Calculus?". In the same paper, van der Aalst wrote that “Pi-Calculus [..] is a solid foundation for modeling and analyzing processes. However, I’m not convinced that the features present in Pi calculus are vital for Business Process Management (BPM) systems." Arthur ter Hofstede added in his response to Sandy that “if anything, the most feature-complete semantics of BPEL have been defined in terms of Petrinets rather than Pi-Calculus". You can access Arthur’s work on the mapping of BPEL to Petrinets <a href="http://eprints.qut.edu.au/14809/1/14809.pdf">here</a>. van der Aalst also added in his paper "that there is no clear evidence that Pi-Calculus supports patterns in a better way than more traditional languages like Petri nets”. </p>

<p>The point I'm trying to make is that whether your BPMS of choice uses XPDL or BPEL is irrelevant as both can be mapped to Petrinets and can support the patterns. Furthermore, as Manoj Das, our product manager <a href="http://www.infoq.com/articles/bpmn-2">explained</a> (regarding our future BPM platform) that “there will be different use cases for which the two approaches - BPMN models executed as BPEL and native BPMN execution - will be better suited”. At any rate, as Arthur <a href="http://groups.google.com/group/workflow-patterns/browse_thread/thread/2dbe620a10694518?pli=1">wrote</a>, there’s so much more to a <a href="http://blogs.oracle.com/lmukadam/2008/11/understanding_the_business_pro_1.html">BPM System</a> than execution languages.</p>

<p>In characteristic scientific humility, Milner himself said that “Petrinets were extraordinarily important development in understanding concurrency”. It is generally accepted that the progress of scientific and human thought in general does not occur spontaneously but rather builds on what others have done previously. As <a href="http://en.wikipedia.org/wiki/Isaac_Newton">Newton</a> himself wrote in a letter to his contemporary and rival <a href="http://en.wikipedia.org/wiki/Robert_Hooke">Hooke</a>, "If I have seen further, it is by <a href="http://en.wikipedia.org/wiki/Standing_on_the_shoulders_of_giants">standing on the shoulder of giants</a>". Claiming that a BPM product that uses BPEL is <a href="http://itredux.com/2008/09/28/why-bpel/">better</a> than another that uses XPDL because Pi-Calculus is better than Petrinets for BPM is not only a disingenuous way to confuse the market place but also does not match scientific reality. To quote van der Aalst again, "others advocating the use of BPEL and BPML, have not been able to demonstrate that any of these patterns requires Pi-Calculus to be supported".</p>

<p>Whether processes are serialized in XPDL, BPEL (or BPMN 2.0 in the near future) or whatever mathematical theories underpin these is irrelevant to business analysts and process developers. What matters most to them is the use of rigorous process modeling techniques, in particular, process patterns, to solve business problems and for that, we can all be grateful that we are indeed able to stand on the shoulder of <a href="http://is.tm.tue.nl/research/patterns/documentation.htm">giants</a>. To quote <a href="http://www.strassmann.com/bio.php">Paul Strassman</a> again (quoted by <a href="http://www.roughtype.com/">Nicholas Carr</a> in his book "<a href="http://books.google.com/books?id=wrROE6SLJFEC&pg=PA124#PPA124,M1">Does IT Matter?</a>") as I did in my first <a href="http://blogs.oracle.com/lmukadam/2008/11/an_introduction_to_bpm.html">post</a>, "it's economics [..] technology has to be taken for granted". For BPM to become more accepted and not just dismissed as another fad as <a href="http://en.wikipedia.org/wiki/Business_process_reengineering">BPR</a> (Business Process Re-engineering) <a href="http://www.gartner.com/research/fellows/asset_215649_1176.jsp">came to be</a>, it seems counterintuitive to make the choice and selection of BPMS as hard as having to understand the precise link between mathematical theories and software products and standards. </p>

<p>I neither have the extraordinary credentials nor the wealth of experience of luminaries such as Ismael in the BPM field. And nor do the brilliant engineers in our BPM labs request for butter over their toast at breakfast using formal Pi-Calculus semantics. However, making unsubstantiated and repeated claims (especially after these have been repeatedly debunked) linking formal BPM products or standards mathematical theories to formal mathematical theories will certainly not advance the latters' cause for their adoption by BPM vendors. As Arthur eloquently wrote: "I fear that these statements (by Ismael) may lead to a backlash against formal methods in BPM. Once people conclude that the emperor does not have any clothes (in the case of BPEL and the pi-calculus) they may conclude that there isn't any benefit at all in the use of formal theory."</p>

<p>I hope this provides some useful clarification.</p>

<p>Cheers,<br />
Ali</p>]]>
      
   </content>
</entry>
<entry>
   <title>Dude, where&apos;s my Pi? - Part 1</title>
   <link rel="alternate" type="text/html" href="http://blogs.oracle.com/lmukadam/2009/04/dude_wheres_my_pi_part_1.html" />
   <id>tag:blogs.oracle.com,2009:/lmukadam//578.11366</id>
   
   <published>2009-04-07T05:00:16Z</published>
   <updated>2009-04-14T07:42:52Z</updated>
   
   <summary>I’m sure a lot of you remember the movie Dude, where&apos;s my car? and one of its famous lines: - Q: What is the Continuum Transfunctioner? - A: It is a very mysterious and powerful device and its mystery is...</summary>
   <author>
      <name>ali.mukadam</name>
      
   </author>
   
   <category term="bpel" label="BPEL" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="bpm" label="BPM" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="bpmn" label="BPMN" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="xpdl" label="XPDL" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="en-us" xml:base="http://blogs.oracle.com/lmukadam/">
      <![CDATA[<p>I’m sure a lot of you remember the movie <a href="http://www.allmovie.com/work/228185">Dude, where's my car?</a> and one of its famous lines:</p>

<p>-	Q: What is the Continuum Transfunctioner?<br />
-	A: It is a very mysterious and powerful device and its mystery is only exceeded by its power.</p>

<p>While researching BPM on the Internet, I came across a very interesting <a href="http://itredux.com/2008/10/23/bpel-and-pi-calculus/">challenge</a> set by Ismael Ghalimi of Intalio. The whole thing started when Ismael <a href="http://itredux.com/2008/09/28/why-bpel/">argued</a> that BPEL should be the language of choice for BPMN because it is based on <a href="http://en.wikipedia.org/wiki/Pi-calculus">Pi-Calculus</a>. After which followed quite a few heated <a href="http://groups.google.com/group/workflow-patterns/browse_thread/thread/2dbe620a10694518?pli=1">arguments</a>, resulting in Ismael challenging vendors who serialize in anything other than BPEL (read XPDL) to show how they can model this particular <a href="http://farm3.static.flickr.com/2314/2966527649_1879e2c28b_o.jpg">process</a>, failure of which everyone must accept that BPEL is the superior language of choice. I presume that the reasoning behind this is that only if a <a href="http://blogs.oracle.com/lmukadam/2008/11/understanding_the_business_pro_1.html">BPMS</a> based on the Pi-Calculus theory (does the Pi-Calculus process engine sound like the Continuum Transfunctioner?) will indeed be able to model and execute this. To which <a href="http://www.brsilver.com/">Bruce Silver</a> responded that a few tools can do it, including <a href="http://www.oracle.com/technologies/bpm/bpm.html">Oracle BPM</a> (aka ALBPM) and to drop the Pi-Calculus claim. A few responses to his challenge later, Ismael goes on to say that Oracle BPM can do it because it relies on BPMN and BPEL.</p>

<p>So let me start with a couple of disclaimers first to avoid the kind of responses typical of "religious" wars:<br />
<ol><li>I don’t know anything about Pi-Calculus so I will refrain from embarrassing myself by talking about it</li><li>I’m not a BPEL-basher and I don’t view the world in terms of <a href="http://www.ebizq.net/blogs/bpmblog/2006/03/am_i_a_bpel_hater.php">BPEL-lovers vs. BPEL-haters</a>; I take the view such as the one very elegantly described by <a href="http://www.column2.com">Sandy Kemsley</a> in reply to Arthur ter Hofstede:"it doesn't really matter whether it's BPEL or XPDL or a proprietary execution language, as long as the model can directly translate to execution".</li></ol></p>

<p>Now, to clarify one important thing: Oracle BPM (aka ALBPM which Bruce was referring to) serializes the process definitions in XPDL (at least as of 10gR3). As Manoj Das, our BPM Product Manager, noted in the <a href="http://www.infoq.com/articles/bpmn-2">BPMN 2.0 roundtable</a>, in response to a question on the relationship between BPMN and XPDL:<blockquote> “Since BPMN 1.1 did not specify a persistence format, products, including ours, used XPDL as the persistence and inter-change format for it.”</blockquote></p>

<p>Which brings us to the challenge itself. Since we don't normally talk about Pi-Calculus, I would have tackled this using both <a href="http://www.oracle.com/appserver/bpel_home.html">Oracle BPEL PM</a> and Oracle BPM, but I think that 1) the proof that Oracle BPEL can do this has already been provided by Ismael himself (i.e. by saying that BPEL can do it) 2) the<a href="http://www.usingenglish.com/reference/idioms/throw+down+the+gauntlet.html"> gauntlet was really thrown</a> to vendors whose tool(s) serialize in XPDL. I’ll therefore limit my response to Oracle BPM.</p>

<p>Here we go then. Exhibit A, Process P1:</p>

<p><img alt="1.JPG" src="http://blogs.oracle.com/lmukadam/1.JPG" width="612" height="232" /> <br />
 <br />
Exhibit B, Process P2:<br />
 <br />
<img alt="2.JPG" src="http://blogs.oracle.com/lmukadam/standinggiants/2.JPG" width="518" height="165" /></p>

<p>I’ll now explain the processes. P1 starts with a “Global Creation” activity called “Receive Input from user to start P1”. Now, for some of you who might find that activity not linked to the rest of the process, rest assured. The “Global Creation Activity” has an implicit link to the Begin Activity (indicated by a circle). If that activity is successful, then a process instance is created. If not (e.g. if the user decides to abandon), no instance is created.</p>

<p>The “Start P2” activity is an asynchronous sub-process call to P2. The “Wait for P2” is a notification wait activity. The notification wait forces a calling (parent) process to wait until a message notification is received from the called (child) process through, say a “Send Message” activity (there are other methods to do this but that’s not the point). The remainder of the other activities in P1 are just simple displays of data (without any pretty UI but you'll get the idea).</p>

<p>Process P2 starts when called by P1 and allows a user to enter some data. It then sends a notification message to P1 and P2 ends.</p>

<p>For the purpose of execution, I’ll be using 3 variables, to show their use and modification in the various processes. So, I start by executing the "Receive Input from user to start P1" activity.</p>

<p><img alt="3.JPG" src="http://blogs.oracle.com/lmukadam/standinggiants/3.JPG" width="478" height="199" /><br />
 </p>

<p>After submitting, the process is now in the activity “Add P1 Specific Data”:</p>

<p><br />
<img alt="4.JPG" src="http://blogs.oracle.com/lmukadam/standinggiants/4.JPG" width="612" height="119" /></p>

<p> <br />
I then execute “Add P1 Specific Data” and make some changes:</p>

<p> <br />
<img alt="5.JPG" src="http://blogs.oracle.com/lmukadam/standinggiants/5.JPG" width="416" height="226" /></p>

<p><br />
Now, being a lazy hacker, I created just one role and gave it to the only participant I used in this example but of course one can create more process roles and assign the roles to many more participants. Because of this, I now have 2 work items in my queue:</p>

<p><br />
<img alt="6.JPG" src="http://blogs.oracle.com/lmukadam/standinggiants/6.JPG" width="612" height="176" /></p>

<p> <br />
Please note their respective next activity: “Something is happening here” and “Add P2 Specific Data”. I now execute “Add P2 Specific Data”, followed by “Something is happening here ” (you can execute it in any order):</p>

<p><br />
<img alt="7.JPG" src="http://blogs.oracle.com/lmukadam/standinggiants/7.JPG" width="612" height="185" /></p>

<p> <br />
I finally execute the “Final display” activity:<br />
 <br />
<img alt="8.JPG" src="http://blogs.oracle.com/lmukadam/standinggiants/8.JPG" width="416" height="267" /></p>

<p>You can notice that the value of the 3rd variable is passed from Process P2 as well. I believe I have now demonstrated the solution to the challenge.</p>

<p>Continued in <a href="http://blogs.oracle.com/lmukadam/2009/04/dude_wheres_my_pi_part_2_1.html">Part 2</a>.</p>

<p>Cheers,<br />
Ali</p>]]>
      
   </content>
</entry>
<entry>
   <title>Web 2.0 and Org 2.0</title>
   <link rel="alternate" type="text/html" href="http://blogs.oracle.com/lmukadam/2009/04/web_20_and_org_20.html" />
   <id>tag:blogs.oracle.com,2009:/lmukadam//578.11297</id>
   
   <published>2009-04-06T07:49:44Z</published>
   <updated>2009-04-06T08:13:07Z</updated>
   
   <summary>This week’s post brings us a republication of a post from GeraldK. In a recent article, economist Tim Harford summarized some of the key ideas in a paper by Paul A. David, &quot;The Dynamo and the Computer: An Historical Perspective...</summary>
   <author>
      <name>ali.mukadam</name>
      
   </author>
   
   
   <content type="html" xml:lang="en-us" xml:base="http://blogs.oracle.com/lmukadam/">
      <![CDATA[<p>This week’s post brings us a republication of a post from <a href="http://blogs.oracle.com/lmukadam/2008/11/tribute_to_a_mentor.html">GeraldK</a>. </p>

<p>In a recent <a href="http://www.slate.com/id/2167909/">article</a>, economist Tim Harford summarized some of the key ideas in a <a href="http://www.compilerpress.atfreeweb.com/Anno%20David%20The%20Dynamo%20and%20the%20Computer%20An%20Historical%20Perspective%20on%20the%20Modern%20AER%201990.htm">paper</a> by Paul A. David, "The Dynamo and the Computer: An Historical Perspective on the Modern Productivity Paradox". While I'll further distill it, I really encourage you to read one or both of the pieces.</p>

<p>I want to start with the idea that new technologies, though they may have the potential to massively and positively transform institutions, and although it may even be envisaged how they may do so, nevertheless take far longer to do so than their proponents expect, even in the face of years of high levels of investment in the new technologies. Professor David's paper was written in 1990 as an investigation into the question of why, as the Nobel Laureate economist Robert Solow remarked, "we see computers everywhere but in the productivity statistics". (This problem, the "productivity paradox", persists today; in the last handful of years we have seen some increases in productivity that are thought by some to be attributable to technology investments of the preceding decades.)</p>

<p>David gives us a history of the electric dynamo and the electrification of factories (you really should read the paper; at least read section II) as an analogy to help us think about the possible future of computers. While he talks about some of the specific changes that electrification wrought on factories, he doesn't go into specifics of what computer technology may do and how it might do it. Well, he's an economist writing 17 years ago, and I'm a (hmm...let's go with...) technologist and visionary with a blog today, so I'll be your <a href="http://www.urbandictionary.com/define.php?term=I%27m%20your%20huckleberry">huckleberry</a>. </p>

<p>Electrification did little to change factories and work practices for decades, and there were many reasons why. The one that that is most analogously relevant is this: The major benefits of electricity didn't come from replacing steam with electricity per se; they came because electricity allowed "unit drive", which could let you run a factory in a cheaper, more efficient, higher-quality way than was possible with "group drive", which was steam engines limited you to. Electricity allowed you to go from a steam Factory 1.0 to an electric Factory 2.0. (Two examples of the differences: 2.0 buildings could be smaller, lighter, single-story structures because shafts and belts could be replaced with wiring, which was both lighter and allowed more flexible placement of powered machinery; and 2.0 factories could be more efficient because machines could be laid out according to flow of materials and tasks, and furthermore easily rearranged according to process changes.)</p>

<p>But even though the first central electric plant in the country had been operating since 1881, it wasn't until the 1920s, four decades later, that factory productivity growth started to improve. What happened? Well, there were all these existing buildings and machines and training and instructions and processes and institutions and relationships and habits that were all based on the steam-powered Factory 1.0. Even when they electrified an old steam factory, and even when they built new electric factories, they would simply replace the steam engine with an electric dynamo, and would end up with an electric Factory 1.0, not a Factory 2.0.</p>

<p>We've done similar with computer technology. Yes, we have email, and email has substituted as a better and cheaper memo and mail and bulletin board and meeting and runner and pneumatic tube. And yes, we have web sites, and they are a lot better than bulletin boards and forms and catalogs and brochures and manuals and calling up a rep to ask a question. But they do the same thing. Yes, better and faster and cheaper and with much greater reach, but it's the same thing. Going further back, pre-networking, computer reporting and printing was more efficient than accountants with (paper) spreadsheets and ledgers and typing and stenography and typesetting, but it was again the same thing. (Now I'm not discounting that at some point, speed and efficiency are quantitatively so much greater  that in itself induces qualitative change--email has arguably reached that point--but that's an emergent rather than a contemplated change.)</p>

<p>I say then that Web 2.0 consists of those applications that not only use the underlying technologies of computers and networks and HTTP and HTTP-stuff; but furthermore and more saliently do so in ways that are particularly well-matched to the routines and practice of Org 2.0 organizations. (I know <a href="http://ebusiness.mit.edu/erik/">people</a> sometime use "<a href="http://andrewmcafee.org/blog/">Enterprise 2.0</a>", but I actually want to include organizations that may not be enterprises.) What's Org 2.0? Well, let's talk first about Org 1.0. Org 1.0 has a "traditional" corporate form: driven by standardized operating processes and organized around departments dedicated to performing those processes. Many organizations (or parts of organizations) at least aspire to this form, analyzing and optimizing business processes, doing TQM and ISO9001 and Six Sigma, installing whatever software brings them closer to the ideal. The 1.0 organization has persistent, determined outcomes, expected inputs, and reasonably well-known tools and practices; the main challenge in Org 1.0 is coordinating the inputs and tools and practices to achieve those goals effectively and efficiently. Configuring and ordering a PC on Dell's website, assembling a car, getting the right amount of beer and iPhones to the retail stores, checking out at the supermarket; those are the kinds of things that Org 1.0 is good at doing.</p>

<p>The key is that Org 1.0 is dedicated to repeating its outcomes, perhaps better each time, and with parameterized variations, but repeating. In contrast, Org 2.0 might be doing something new all the time; that something may be similar to what it may have done before, but not in any easily-formalizable way. I made a chart.</p>

<p>Table 1: I need to fancy this post up for you people with short attention spans.</p>

<table>
<tr>
<td>1.0</td><td>	2.0</td>
</tr>
<tr><td>planning, measuring, correcting</td><td>	anticipating, reacting, adapting</td></tr>
<tr><td>checking out, paying, receiving from Amazon</td><td>	browsing, rating, reviewing items on Amazon</td></tr>
<tr><td>paving</td><td>	path-breaking</td></tr>
<tr><td>roadrunner</td><td>	wile e. coyote</td></tr>
<tr><td>channeled</td><td>	collaborative</td></tr>
<tr><td>procedures</td><td>	judgement</td></tr>
</table>

<p>Now, it's often assumed that what I've called Org 1.0 is actually just how you have to run a large organization, to be able to scale up without screwing up (after all, "repeating" is pretty much how a company scales up); and what I'm calling Org 2.0 is characteristic of small organizations, who just don't have the scale or the institutional knowledge to implement structured repeatable processes. Small firms that grow become more structured and more process-oriented: because they can, as they learn from what they do and standardize that into repeatable processes; and because they must, as informal mechanisms of communications break down when there are lots of people, and formal processes can ensure that individuals get the information they need to do their jobs.</p>

<p>That's true, and Org 1.0 represents the pinnacle of industrial achievement. The only way the world economy can work is with organizations dedicated to scaling up, in predictable and efficient and repeatable ways. Much of what Org 2.0 does is as part of or in direct service to a bigger Org 1.0.</p>

<p>But the thing is, in gaining all the scale advantages of Org 1.0, an organization loses the great advantages of Org 2.0: flexibility and adaptability, resulting from the high level of communication and overall situational awareness of each member of the organization. Yes, Org 1.0 realizes economies of scale, but at the finer grain, Org 1.0 is in fact much less efficient than Org 2.0, and the economies of scale have to offset the diseconomies. (That's something a lot of small and mid-sized companies often forget, btw. In the drive to formalize to be able to grow, they smother their own advantages.) That's why a lot of companies that work in Org 2.0 ways (architecture firms, law firms, creative agencies, research labs, medical specialists) are either small, or decentralized collections of small groups. That's why large organizations often break off smaller, less formal groups for innovation.</p>

<p>Ah, and here's where Web 2.0 comes in. Web 2.0 applications are those applications that are meant to help Org 2.0 to scale up, take advantage of specialization, and stop being so small. (Here I'll add something to Gerald's post and say that Web 2.0 applications can also help the already large ones i.e. Org 1.0 reap the benefits of Org 2.0). They help with Org 2.0-specific activities and share those characteristics: informal communications and collaboration, ad hoc inclusion of people and information, structured in ways that are easy for humans to understand (say, by faces, or by event, or by conversation, or by relationship) and synthesize. They do this so that the efficient working habits of a small group can be used by larger groups of people who are farther apart, so that we can get economies of scale, without the heavy diseconomies. They try to do this by improving communications and the sharing of information that works in small localized teams, so that it can work across larger dispersed groups of individuals. The point is to take advantage of what computer and networking technologies do to remake how and organization can operate, rather than to continue to operate it the same way, just with more speed or more cheaply, just as electrification and unit drive remade how a factory worked.</p>

<p>And so that's what we're trying to do. Just as animals and steam and electricity augmented human muscle, and earlier computer software and processes augmented human logical thinking and computation, Web 2.0 applications are meant to augment those unique human abilities that can't be automated. We're trying to produce applications that increase the power of human judgement, cognition, social understanding, inspiration, and adaptability.</p>]]>
      
   </content>
</entry>
<entry>
   <title>Installing a managed WLS as a Windows Service </title>
   <link rel="alternate" type="text/html" href="http://blogs.oracle.com/lmukadam/2009/03/installing_a_managed_wls_as_a.html" />
   <id>tag:blogs.oracle.com,2009:/lmukadam//578.10912</id>
   
   <published>2009-03-20T05:54:10Z</published>
   <updated>2009-03-20T06:31:00Z</updated>
   
   <summary>In Weblogic pre 9.x, there used to be an installSvc.cmd script which you could just double-click and your Weblogic Server would be installed as a Windows service. For a lazy hacker like me, this was very useful. After Weblogic 9.x,...</summary>
   <author>
      <name>ali.mukadam</name>
      
   </author>
   
   
   <content type="html" xml:lang="en-us" xml:base="http://blogs.oracle.com/lmukadam/">
      <![CDATA[<p>In Weblogic pre 9.x, there used to be an installSvc.cmd script which you could just double-click and your Weblogic Server would be installed as a Windows service. For a lazy hacker like me, this was very useful.</p>

<p>After Weblogic 9.x, I couldn't find the script and basically had to resort to command-line startup of the server for a while. Now, I generally don't like to have command-line startups cluttering my taskbar, especially when I'm using Windows and doing demoes. </p>

<p>So, with the help of my colleagues Ian and Devon, we wrote a script that would install a managed server as a Windows service and which you can quietly start in the background. </p>

<p>Here it is.Replace your paths as appropriate. If you use the script below, make sure that you also include the username and password in your boot.properties file (the username and password are required at startup of the server). Hang on, did I just say write a username and password in a file that can then be read by anyone? Nope. When you first start Weblogic server, the username and password values in boot.properties would be encrypted at the first run.</p>

<p>Naturally, all the usual disclaimers apply: i.e. I'm not responsible for anything etc etc.</p>

<p>================================================================<br />
set DOMAIN_NAME=mydomain<br />
set USERDOMAIN_HOME=D:\bea\user_projects\domains\mydomain<br />
set SERVER_NAME=myserver<br />
set PRODUCTION_MODE=true</p>

<p>set JAVA_OPTIONS=-Dweblogic.Stdout="D:\bea\user_projects\domains\mydomain\stdout.txt" -Dweblogic.Stderr="D:\bea\user_projects\domains\mydomain\stderr.txt" -Dweblogic.management.server="http://localhost:7001" -Dweblogic.management.discover=false</p>

<p><br />
set MEM_ARGS=-Xms512m -Xmx1024m</p>

<p>call "D:\bea\wlserver_10.0\server\bin\installSvc.cmd"<br />
================================================</p>

<p>Enjoy!</p>]]>
      
   </content>
</entry>
<entry>
   <title>TCP, UDP, Unicast, Multicast? I thought this blog was supposed to be about portal.</title>
   <link rel="alternate" type="text/html" href="http://blogs.oracle.com/lmukadam/2009/03/tcp_udp_unicast_multicast_i_th.html" />
   <id>tag:blogs.oracle.com,2009:/lmukadam//578.10553</id>
   
   <published>2009-03-03T00:15:24Z</published>
   <updated>2009-03-03T00:46:13Z</updated>
   
   <summary>I promised I would write about the features of Oracle BPM and how they relate to the different features of modern BPMS suite. I haven&apos;t had the chance to complete writing the post for a variety of reasons. I should...</summary>
   <author>
      <name>ali.mukadam</name>
      
   </author>
   
   
   <content type="html" xml:lang="en-us" xml:base="http://blogs.oracle.com/lmukadam/">
      <![CDATA[<p>I promised I would write about the features of Oracle BPM and how they relate to the different features of modern BPMS suite. I haven't had the chance to complete writing the post for a variety of reasons. I should be able to finish it soon. </p>

<p>In this post, I'll instead talk about WebCenter Interaction or more precisely, how WCI makes use of network protocols. This post was originally posted by the great <a href="http://blogs.oracle.com/lmukadam/2008/11/tribute_to_a_mentor.html">GeraldK</a> on dev2dev, so I'm publishing it here to share some of his wisdom with you. Here we go.</p>

<p>This post gets pretty low-level, but I think this is important. As much as everything in our business relies on us abstracting away things at lower levels and specializing, abstraction only works up to a point. In some ideal, interfaces are clean and well-specified and focused; the application doesn't worry about how the OS works, and the OS doesn't worry about how the hardware works, and layer 4 of the OSI model doesn't worry about how layer 3 works. All you are supposed to do as a specialist at one level is assume the levels below you just work. But does that really work? If you're writing an application, it's better if you really know how the OS works and you do have to worry about how the database stores characters, and a good OS must worry about how the hardware works, and you're on crack if you think that TCP didn't worry about how IP was implemented.</p>

<p>So here, even though we're supposed to be about web applications and services that run up above <a href="http://en.wikipedia.org/wiki/OSI_model">OSI layer 7</a>, we're going to go down n look at layer 4 (and even a bit lower)  and see what's happening. We'll discuss what the differences are between TCP and UDP, what multicast is and how and why is works and doesn't work. Trust me, it'll be useful, and it all leads to some info about how PTSpy works in G6 and some ideas on how you can use it better.</p>

<p>So, let's start with HTTP. That's the protocol that matters directly for most of what we do here. HTTP, along with most of the rest of our application networking (SQL*NET, WCI Search) run at network layer 7, the <a href="http://en.wikipedia.org/wiki/Application_layer">application layer</a>, on top of TCP which operates at layer 4. So what's TCP?</p>

<p>TCP (Transmission Control Protocol), along with UDP is one of the main underlying network protocols of the internet. Both of those are built on top of yet another one, IP (Internet Protocol). IP works one layer below TCP and UDP (layer 3). So to understand TCP, let's look at IP. We'll then work our way back up and talk about what TCP does on top of that.</p>

<p><strong>IP: Internet Protocol<br />
</strong>IP provides the basic ability to route a packet of data from one place to another. It does this by providing each "place" or "device on the network" with a specified address (the IP address) and specifying how such devices should move packets around based on the address. Now, the difference in functionality between IP and the protocol layer below it (layer 2, the data link layer, typically represented by Ethernet or WiFi) is that at layer 2, devices always know exactly how to send to every device on the network. At layer 2, either you know exactly how to get data to your destination (btw, usually represented by a "MAC address") or it's not possible to get it there. (For example, Ethernet and WiFi simply broadcast the entire packet onto the whole network, and the destination is expected to be listening for its MAC address and pick up the packet. If it's not there or not listening, Ethernet can't get it there. [And btw, network "sniffers" works by taking advantage of this broadcasting.] PPP, used in modem dial-up connections, can send everything to one destination only: the machine you dialed in to.)</p>

<p>What IP does is provide a way to connect separate networks so that devices on one network can send data to devices on another network without knowing where they are or how to get there exactly. Hence the appellation <strong>inter-net</strong>, "between networks". It does this by specifying <strong>routing rules</strong> that define what a network device does with a data packet with any destination address. Basically the rules are: if the destination is local (i.e. you know where it is because it's on the same network) send it there; otherwise, send it to one of a list of routers that vary according to the address. A router follows the exact same rules, except that it's assumed that it belongs to two or more different networks at the same time; and therefore has more local destinations, and also usually has a longer list of other routers for unknown destinations.</p>

<p>Very specifically now, IP does no more than give you the ability to send a single packet of data to a destination specified by a single IP address, and that's it. It can get that packet to any place on any network (unlike the lower level protocol), but that's about it. Significantly:<br />
<ul><br />
	<li>It does not provide notification of delivery or receipt or failure</li><br />
	<li>It does not provide any notion of "port numbers" or other ways of segregating packets at the destination IP addresses</li><br />
	<li>It does not provide two-way communications</li><br />
	<li>It does not order or otherwise group multiple packets in any particular way</li><br />
</ul></p>

<p>The simplest analogy is to think of IP like the postal service. You drop a postcard into the mail with an address on it, and somehow it makes it to the address you wrote on it. If it makes it, or if it doesn't, you don't know. When it gets to the house, you don't know if the roommate reads it. And if you want a reply, your recipient can't just write on the same card and hand it back to the mailman; they'd have to write out their own note, stamp and address it, and send it out again themselves.</p>

<p><strong>TCP: Transmission Control Protocol<br />
</strong>While IP does not provide any of those features, TCP does. If you looked at the list of the features that IP doesn't provide, and then you looked at the analogy of the postal service and said, "Huh? Of course you can have two-way communications. People used to write letters back and forth and have conversations all the time," or "Well, you could just request that either the recipient or the postal service send you back a return receipt," or "Come on, dummy, you can sequence your postcards by just writing numbers on them and telling the recipient to read them in order and let you know if any are missing," well, then, you're right. That's exactly what TCP does. It takes the basic IP (or postal service) and specifies how to use it and what to put in your message to get all those extra features.</p>

<p>So what TCP really winds up doing is implementing the concept of multiple reliable connections between IP devices. What does that mean? It means that you can send a sequence of messages (packets) about a specific conversation (port, or connection) and that the packets will be received in the same order they were sent, and that there won't be missing packets in between sent packets. (Also, there won't be duplicate packets.) It does this by attaching to every packet both a port number, to separate and identify multiple connections or conversations; and a sequence number, to let the recipient identify when data might have been lost in transmission. In addition, it specifies the recipient has to acknowledge every data byte that was received (not necessarily explicitly: it might simply say, "I've received everything up till byte 13456"; and it can also acknowledge selectively, "I've received everything between 845 and 13433") so that the sender can know if missing data needs to be resent. And finally, every connection is implicitly two-way, not just for acknowledgements, but also so that the recipient can just send data "back" rather than having to explicitly re-address (sort of the equivalent of sending a self-addressed reply envelope with every packet).</p>

<p>As you can see, if packets are getting lost or arrive out of order, there is actually quite a lot of work that TCP has to do. If we're continuing the postal service analogy, TCP is a bit like a personal assistant who collects your mail, groups it, sorts it in order, brings and reads it to you, takes your replies and organizes and sends them back. If the postal service is super-reliable, his job is easy, he's just a middleman passing paper around. If the postal service loses a lot of stuff, and/or you have a great volume of mail, he may have to do a lot of work, request that things be re-sent, and keep track of and store a lot of messages.</p>

<p><strong>UDP: User Datagram Protocol<br />
</strong>UDP on the other hand is a lot simpler. It does what IP does, but it adds the concept of a port, so that you can send messages to a specific recipient at one IP address. It doesn't have order, or connections, or two-way communication, or acknowledgements.</p>

<p>You might think that UDP is unreliable, because, you know, TCP is supposed to be the reliable one of the siblings. But in fact, over the same network segment, or over LANs with good quality gear and not excessive traffic, UDP is in practice very reliable. If there's no packet loss and packets arrive in order (which is almost always the case on a short LAN link), there's no need for any retransmissions of packets, so all the acknowledgements and waiting around of TCP is just a bunch of wasted overhead, creating latency. For applications that can tolerate packet losses (say, real-time audio and video), it's often a good choice even over not-so-good networks. It's also used for small messages and notifications. For example DHCP and DNS both use UDP. And notably, the Unix Network File System (NFS) used UDP over LANs. While you'd think a file system should have used a reliable TCP connection, the implementers of NFS felt they could get better performance using UDP and building their own mechanisms for ensuring reliability that were tuned to the application.</p>

<p>Btw, it's called "User Datagram Protocol" because it's was designed by operating system guys. "Datagram" is just another word for "packet". "User" in this case doesn't mean, like, you; it means a program on a computer that is not part of the operating system. The idea was that IP is low-level and it was used by people who write parts of the OS, while UDP provides mostly the same functionality (the datagram), but is intended for "user" (non-OS) programs.</p>

<p><strong>Multicasting</strong><br />
I simplified the TCP/IP/UDP discussion up there a little when I implied that IP (and hence UDP and TCP) would route packets from one device on a network to another device. More accurately, IP routes packets from one IP address to another IP address. The trick with <strong>multicasting</strong>, or sending the same packets of data at the same time to many devices is that certain IP addresses can be designated as multicast address and assigned to many devices at the same time.</p>

<p>The first thing to know about IP multicasting is that there only exists UDP multicasting. There's no such thing as TCP multicast. Why not? See, the point of multicast is to be efficient with the network and send the same data packet to as many different, possibly unknown computers. But each TCP connection can potentially require retransmission of different lost packets, or different delays or ordered arrival and assembly of packets. So managing and sending all that for each possible device would be resource-intensive even if it were possible, which would defeat much of the point of using multicast. (And it's not possible anyway because multicast can't know where the outbound packets actually wind up.)</p>

<p>Oh, and via back-formation, regular non-multicast UDP (and TCP) messages are called <strong>unicast</strong>.</p>

<p>The next thing to know is that multicast will often not be sent over a router to another network. There are a few reasons why:<br />
<ul><br />
<li>	A low TTL for most multicast packets: All IP packets have a time-to-live, or TTL. Unlike with DNS records, TTL on IP packets refers to the maximum number of network hops that a packet can make to get to its destination. Unicast packets typically are allowed to cross about 30 networks (i.e., get routed by, or "hop", 29 routers). Getting across the internet rarely takes more than 15 hops, so the limit is really just to kill packets if they get stuck in loops in badly configured networks. But most applications that send multicast set the TTL to a low number, often zero (where the message doesn't even leave the originating device), <br />
</li><br />
<li>	one (so it will go only to computers on the local net), or two (where it will cross a single router). It's quite rare to have an application that is intended to multicast to unknown machines over an entire campus network, much less the entire Internet. <br />
</li><br />
<li>	High TTL thresholds set on most routers: Many network routers, particularly WAN routers and internet gateway routers, have a higher TTL threshold set, such that they won't send out multicast packets whose TTL is below (say) 15. This is intended to prevent accidental leakage of multicast off a local network. <br />
</li><br />
<li>	Routers are simply not configured to route multicast at all, or only configured for specific addresses, or otherwise blocking multicast packets.<br />
</li><br />
</ul></p>

<p>UDP multicast might seem a bit exotic, but it's actually more common that you think. It's not used for web video sites like YouTube, since those need to send a video at a time each user demands, rather than at the same time for all users, and it's not used for VoIP traffic. However, it is used for a lot for discovery and automatic confguration in apps like Skype, iTunes, and uPnP. It's also used in a few places in the WCI portal.</p>

<p><strong>Spy Logging</strong><br />
Since G6 was released, Logging Spy (formerly PTSpy) and the Plumtree Logging Framework (AL-something Logging Toolkit or whatever) have worked using UDP. The application that has messages to log just sends it out via UDP. Now, recall that UDP doesn't worry about things like actual delivery and order and error correction and flow control. The message can be sent out as "fire-and-forget", or "drop it in the outbox and forget about it forever". There's no record-keeping or waiting, so it's very cheap and quick for the program to just put send the message. </p>

<p>In fact, it costs pretty much the same for a program to just send out the log message via UDP as it would for it to check to see if the message should be filtered. So, the G6 portal (and collab, and the api and automation servers, etc.) doesn't bother checking; it just sends out the UDP log message unconditionally.</p>

<p>In contrast, 5.x and earlier portal versions logged positively: every message had to be written to a file (or the screen) before the program could proceed to the next operation. This impacted performance severely enough that you could only enable tracing when you were actively debugging, and even then had to try to limit what you logged. Throwing out the UDP packet causes so little delay that G6 traces a lot more, and it sends the trace messages the whole time the program is running.</p>

<p>Now, we also have a set of programs that read these UDP packets from the network. The most familiar one is Spy itself, which captures the packets, picks out the ones you told it you wanted to see, and displays only those. There is also the Logger Service, which works similarly, but reformats the messages and writes them to a text file.</p>

<p>You might not even actually know that the Logging Framework is using UDP to send log messages, because normally the applications are set to "local logging only" which sets the packet TTL to zero, which doesn't let it leave the originating computer (but which can be picked up by a destination on the same computer). At the same time, Spy is usually installed along with the application. When you start Spying, it just picks up the packets from the local application, and it looks like the old 5.x PTSpy connecting locally to the locally-installed application. But in fact, the application and the viewer for the Spy messages are now very loosely coupled over the network, and run independently of each other.</p>

<p>While UDP does offer great performance advantages, so much so that we now can have much more detailed logging available when necessary, there is the possibility that some log messages can be lost, just because of the unreliable nature of UDP. This isn't really a disaster, but it could be annoying if you're debugging and you don't know it may be happening. It may happen when there is a lot of activity on the portal (and hence a lot of messages being sent), the network is very busy so packets are lost, or the capture program is running slowly. In practice, the most common case in which messages are lost is when the Spy program is running slowly, maybe because the machine it's on is busy, or because of some other resource issues. We've found in particular that the X-Windows Spy, when writing to the screen, can miss a lot of messages. I usually recommend using the command-line logger on Unix anyway.</p>

<p>One more thing to note is that Spy is actually sent out via UDP multicast, not unicast. This means, first of all, it's possible to have several programs picking up and reading and recording log messages from a single application. For instance, while you are looking interactively at Spy, the Logging Service can also be recording the same or a different subset of messages to a file.  Second, you can also monitor several applications remotely using a single (or multiple) programs on a remote machine. You simply need to make sure that the application "local logging only" option is set to false, and that your network and routers will route the packets from the WCI applications to the logging listeners.  Then, just open up Spy, select View->Set Filters, then Edit->Add Message Sender. Spy will look for applications that are configured to log via UDP multicast over the network (and which can reach Spy) and allow you to choose to capture and record the messages.  </p>

<p><strong>Collab Clustering<br />
</strong>The other place that we encounter UDP is when configuring Collaboration Server clustering. Collab clustering is used for cache invalidation among the Collab servers. When an object is updated on one Collab server, a message needs to be sent to all of them identifying the object. That's a small, simple message.</p>

<p>There are several configurations for setting up Collab to send the message. The two most common should be the "lan-cluster" configuration and the "lan-multicast-cluster" configuration. Both of them use UDP to send the messages. The unicast configuration requires you to list out every other server in the cluster in each server's config, but will work on any network where the servers are actually reachable to each other. The multicast setting requires less configuration and config maintenance, since you all you do is set the multicast listen address on each one to the same value, but you run the risk that the network may not support or route multicast among your servers. It's also hard to know if it's working without running network traces to look for the Collab cache invalidation messages, as for the most part Collab will run fine and no one single user is likely to notice inconsistencies in caches across different servers.</p>

<p>Well, I hope that was informative and interesting. And useful.</p>

<p></p>

<p><br />
</p>]]>
      
   </content>
</entry>
<entry>
   <title>Understanding the BPM Suite - Part 2</title>
   <link rel="alternate" type="text/html" href="http://blogs.oracle.com/lmukadam/2008/11/understanding_the_business_pro.html" />
   <id>tag:blogs.oracle.com,2008:/lmukadam//578.8630</id>
   
   <published>2008-11-17T08:00:44Z</published>
   <updated>2008-11-17T08:15:35Z</updated>
   
   <summary>Continuing from my previous post, I&apos;ll describe the rest of the components of a BPM Suite, namely: • Business Rules • Application Integration • Performance Management Business rules Business rules must be distinguished from routing rules. Routing rules are characterized...</summary>
   <author>
      <name>ali.mukadam</name>
      
   </author>
   
   <category term="bpm" label="BPM" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="en-us" xml:base="http://blogs.oracle.com/lmukadam/">
      <![CDATA[<p>Continuing from my previous post, I'll describe the rest of the components of a BPM Suite, namely:</p>

<p>•	Business Rules<br />
•	Application Integration<br />
•	Performance Management</p>

<p><u>Business rules</u></p>

<p>Business rules must be distinguished from routing rules. Routing rules are characterized by:</p>

<p>•	Simple conditions at a point in a flow<br />
•	Usually defined in the modeling environment<br />
•	Changes to rules required versioning, possibly requiring an update of the process in the engine</p>

<p>On the other hand, business rules are characterized by:</p>

<p>•	Complex conditions that can be invoked by a wide variety of triggers<br />
•	Usually defined in business rules engine (BRE) by business users<br />
•	Changes in rules do not require the republishing of the process</p>

<p><u>Application Integration</u></p>

<p>In its 2007 report on BPMS, <a href="http://www.bptrends.com/">BPTrends.com</a> identified 3 types of integration approaches:</p>

<p>•	Brittle Spaghetti<br />
•	Adapters<br />
•	Introspection</p>

<p>In the Brittle Spaghetti approach, the developer has the responsibility of writing suitable integration code. This is facilitated by sophisticated APIs that allow developers to pass the right information as parameters to third party application. The problem with this approach is that integration code tends to be scattered around through the processes. As the systems changes, the code to do this integration becomes a management nightmare.</p>

<p>With the Adapters approach, vendors provide a standard interface with which the processes communicate with the backend systems. However, they may have some limitations, particularly when your backend system goes through an upgrade.</p>

<p>With the Introspection approach, the integration is generally built around a set of generic technology adapters. The tool introspect the 3rd party applications to create a set of reusable components which can then be used in the process models. A developer uses the introspecting capabilities of the tool to explore the methods and attributes of a remote backend system either via API or Web Services. When you consider that integration costs represent 50% of a process enabled project (cited by the BPTrends report), the advantage with this approach is fairly obvious. If your backend changes, you can just re-introspect the component and make the necessary (and hopefully smaller) changes rather than wait for an updated adaptor or recode. Incidentally, Oracle BPM uses the introspection approach. </p>

<p><u>Performance Management</u></p>

<p>Performance management allows you to monitor the processes and how they are performing against your KPIs. Generally, this takes the form of pretty graphs and dashboards displaying performance measures in real-time, near real-time or showing historical trends. These performance data can then be used by line-of-business owners to seek further improvement on their process.</p>

<p>I hope you have enjoyed reading this. In my next post, I'll describe the different features and functionality of Oracle BPM and how they relate to the different components described here.</p>

<p>Cheers,<br />
Ali<br />
</p>]]>
      
   </content>
</entry>
<entry>
   <title>Understanding the BPM Suite - Part 1</title>
   <link rel="alternate" type="text/html" href="http://blogs.oracle.com/lmukadam/2008/11/understanding_the_business_pro_1.html" />
   <id>tag:blogs.oracle.com,2008:/lmukadam//578.8533</id>
   
   <published>2008-11-11T07:23:30Z</published>
   <updated>2008-11-11T07:50:38Z</updated>
   
   <summary>In my previous post, I quoted Paul Strassman and his argument about the use of technology to deliver economic results. In order to deliver these results, BPM cannot just be about improving individual processes but more importantly about improving the...</summary>
   <author>
      <name>ali.mukadam</name>
      
   </author>
   
   <category term="bpel" label="BPEL" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="bpm" label="BPM" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="bpmn" label="BPMN" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="xpdl" label="XPDL" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="en-us" xml:base="http://blogs.oracle.com/lmukadam/">
      <![CDATA[<p>In my previous post, I quoted <a href="http://www.strassmann.com/bio.php">Paul Strassman</a> and his argument about the use of technology to deliver economic results. In order to deliver these results, BPM cannot just be about improving individual processes but more importantly about improving the management of processes.  With his customary incisiveness, <a href="http://www.brsilver.com">Bruce Silver</a> comments that “the M (for management) implies continuity, the ability to constantly re-align processes to every changing market needs and company goals”. The management of processes involves answering some of these questions:</p>

<p>•	How do you discover the processes? <br />
•	How do you ensure they are aligned with organizational goals and objectives? <br />
•	How are processes designed and alternatives evaluated? <br />
•	What approach is used to collect process performance data?<br />
•	How is the process performance data used to improve existing processes?<br />
•	How are individual processes composed together to form new services?</p>

<p>Obviously, the above is not an exhaustive list but they give us a general idea about some of the key aspects of process management. This leads us to examine what should constitute a BPM Suite and its architectural building blocks. <a href="http://www.brsilver.com">Bruce Silver</a> wrote an article (I say article, it’s really more of a guide) a couple of years ago about this so I’ll summarize the points he made here.</p>

<p>Very broadly speaking, a BPM Suite consists of the following components:</p>

<p>•	Process Modeling<br />
•	Process Automation<br />
•	Process Architecture and Standards<br />
•	Business Rules<br />
•	Application Integration<br />
•	Performance Management<br />
•	Process Lifecycle</p>

<p>Let’s look at each in turn.</p>

<p><u>Process Modeling</u></p>

<p>Some BPM practitioners like to distinguish between process modeling and process design. Process modeling means creating an abstract description of a process used for documentation and analysis whereas process design means creating an executable process management application developed by IT. Whilst this accurately describes the lifecycle of traditional software development, advances in BPMS technology reduces the gap.<br />
 <br />
In a landmark <a href="http://www.amazon.com/Business-Process-Management-BPM-Third/dp/0929652339">book</a> published in 2003, Smith and Fingar introduced the notion of an <em>executable process model</em>. Essentially, an executable process model is one that is built graphically without programming but can also be deployed to a process engine to automate, integrate as well as monitor a process from the beginning to the end.  It is therefore more helpful to think of 2 types of modeling and their respective and associated tools i.e. analytical modeling and executable modeling.</p>

<p><em>Analytical modelling</em> is abstract and not bound to any proprietary implementations. However, they provide a number of functions both to traditional BPM and modern BPMS:</p>

<p>•	Capture of existing process flow in a structured diagrammatic notation<br />
•	Diagramming new or modified processes using the same notation that can associate resources, processing time, cost etc with each process activity<br />
•	Simulation of process performance based on various scenarios of process instance volume, resource allocation and other process parameters<br />
•	Analysis and reporting of service level, throughput, cost for various scenarios<br />
•	Documentation off the process in exportable format.</p>

<p>Analytical modelling is now an integral part of modern BPMS and most modelling tools now use the BPMN standard for this purpose. </p>

<p><em>Executable process modelling</em> refers to the design of an executable application through the graphical composition of process activities. Executable models also use a structured graphical notation but their implementation details depend upon the particular BPMS itself. As such, the look and feel of executable process diagrams can vary considerably between BPMS and usually dependent on the implementation itself. Most tools use a serialization format, usually XML-based, to store the process definitions such as:</p>

<p>•	XPDL from  the <a href="http://www.wfmc.org/">Workflow Management Coalition</a><br />
•	BPEL from <a href="http://www.oasis-open.org/committees/wsbpel/">OASIS</a></p>

<p><u>Process Automation</u></p>

<p>The engine is the runtime component which allows processes to run. When processes are run, the engine creates process instances. A process instance is a single enactment of a process and the engine allows you to create as many process instances of all deployed processes. Process instances can be triggered manually by a process participant or automatically by an outside event. The engine then coordinates all the different activities, some of which can be human activities while others can be automated. Generally, process participants will be able to interact with the process instances by means of a web-based portal-like application. The web application displays the list of outstanding process items on which users have to act in the form of a worklist while the automated tasks may be executed natively in the engine or remotely by calling a remote application or Web Service. Process participants may also launch new process instances from this application.</p>

<p><u>Process Architecture and Standards</u></p>

<p>In another very insightful <a href="https://www.bpminstitute.org/presentations/presentation/article/selecting-a-bpms-1/news-browse/8.html">article</a>, <a href="http://www.brsilver.com">Bruce Silver</a> identified 2 types of BPMS architectures:<br />
•	Workflow<br />
•	Service-Oriented</p>

<p>The workflow-based BPMS architecture is characterized by:</p>

<p>•	Usage of the WfMC reference model, XPDL as its basis<br />
•	Activities are assigned to roles or queues<br />
•	Strong support for human interaction but generally weaker in integration<br />
•	Tools oriented towards business analysts</p>

<p>whereas the service-oriented BPMS architecture is characterized by:</p>

<p>•	Usage of web service orchestration, in particular BPEL, as its basis<br />
•	Activites are assigned to services end-points<br />
•	Generally strong in integration but weaker for human interaction<br />
•	Tools oriented towards the developer</p>

<p>Most vendors generally agree on the common set of functionalities that should constitute a BPM Engine but they rarely do on the standards to use, or more relevantly, <em>which architecture</em> to use, or to be more accurate, which architecture to use to tackle which problem. A quick trawl on the various blogs will reveal the extent of the debate making it even more confusing for customers. But more on that in later posts.</p>]]>
      
   </content>
</entry>
<entry>
   <title>An Introduction to BPM </title>
   <link rel="alternate" type="text/html" href="http://blogs.oracle.com/lmukadam/2008/11/an_introduction_to_bpm.html" />
   <id>tag:blogs.oracle.com,2008:/lmukadam//578.8510</id>
   
   <published>2008-11-09T23:16:42Z</published>
   <updated>2008-11-09T23:37:02Z</updated>
   
   <summary>I’ll start fairly easy with an introduction of BPM. I won’t be going into products, standards etc., well not yet anyway. So, let me start by defining BPM: BPM is a strategy for managing and improving the performance of the...</summary>
   <author>
      <name>ali.mukadam</name>
      
   </author>
   
   <category term="bpm" label="BPM" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="en-us" xml:base="http://blogs.oracle.com/lmukadam/">
      <![CDATA[<p>I’ll start fairly easy with an introduction of BPM. I won’t be going into products, standards etc., well not yet anyway. So, let me start by defining BPM:<br />
 <br />
<strong><em>BPM is a strategy for managing and improving the performance of the business through the continuous optimization of business processes in a closed-loop cycle of modeling, execution and measurement.<br />
</em></strong></p>

<p>You’ll note that there’s no reference to technology, vendor, tools, methodology or any such things. In other words, to quote <a href="http://www.strassmann.com/bio.php">Paul Strassman</a> (albeit in a different context), “it’s economics  [..] technology has to be taken for granted”. You could arguably do BPM without any technology but if you do make a successful use of BPM technology, then the return on your investment is potentially much higher.</p>

<p>Let’s look at the context for the use of BPM technology in the enterprise. A business process is a complete, coordinated sequence of serial and parallel activities needed to deliver value to a customer. Some of the characteristics of business processes are:<br />
•	Enormous and complex data and business flows<br />
•	Dynamism due to rapidly changing market conditions<br />
•	Partial automation<br />
•	Dependence on human involvement and judgment<br />
•	Display of life cycle characteristics</p>

<p>As processes are the basis of planning, marketing, customer transactions, billing and reporting, they become the unit of improvement, competition, intellectual property and differentiation. </p>

<p>However, the enterprise is not organized around processes. Instead, they are organized around individual business units such as finance, legal, HR, manufacturing, sales and such. In large enterprises, this can be even replicated geographically. Each unit is generally enabled by best-of-breed applications such as CRM, billing sytems, databases and custom applications etc. This is not necessarily a bad thing. It is in fact a natural evolution of the specialization of jobs in the enterprise.<br />
 <br />
<a href="http://www.brsilver.com">Bruce Silver</a> remarked that processes that run within these single business units or on single systems (I’ll collectively call them silos) are already automated and arguably efficient enough. But the price of that automation has been the creation of new silos or “white spaces” between business units or systems. End-to-end business processes will span those silos, thus causing a loss of both context and potentially accurate and up-to-date data between these silos. This loss can have a direct influence on both worker productivity and the decisions they take.</p>

<p>Typically, what knowledge workers tend to do is use several productivity tools e.g. IM, email, documents or they just swivel around or pick up the telephone to talk to a co-worker. This shows that they can survive those the problems created by the white spaces. While they survive, they don’t necessarily thrive. This is where BPM technology shines. As Bruce Silver further remarked, BPM started as a management discipline 20 years ago as a way to think about the business in terms of key cross-functional processes i.e. how to plan it, understand it and measure it. Dr. Geary Rummler, one of the early pioneers, emphasized “managing the white space in the organization”, i.e. the handoffs between the silos where information tends to get lost.</p>

<p>As the market has only recently gained considerable momentum (in 2006 there were approximately 150 vendors!), it is only natural that there are many opinions about what exactly can be considered BPM. While some believe it that it should remain a management discipline and only provide the ability to analyze the business processes, the real returns comes from the ability to model, simulate, execute and optimize the business processes using a Business Process Management Suite. A BPMS does not simply analyze the processes of an organization but it also actively manages the processes that span it.</p>

<p><u>Process Management Challenges in the enterprise</u><br />
The rise of siloed enterprise applications has created several challenges:<br />
•	Inefficiency: process exceptions are handled manually with the result that on average, processes take too long to complete<br />
•	Rigidity: it is hard to integrate enterprise applications and much more harder to change<br />
•	Lack of compliance and control: the same processes are executed differently in different business units<br />
•	Poor visibility: management cannot measure the performance of business processes<br />
•	Inertia: requirements and rules keep changing while IT resources are already stretched to or above their maximum</p>

<p>The stakeholders don’t care about the silos. For example, our customers or business partners do not think of our silos; they think about the high quality products and services they can get from us. In other words, they want a good customer experience.</p>

<p><u>Benefits of BPM to the enterprise<br />
</u><br />
A BPMS does not replace your enterprise applications; rather it coordinates the actions of people and systems to make the processes more efficient, more flexible and more compliant.</p>

<p>A BPMS makes processes more efficient because it can automate manual tasks, handle the white spaces and manage the exceptions as well. It makes processes more agile because the processes are not controlled by a complex application whose code is difficult to modify. Rather, processes are defined graphically and these can be easily and quickly changed when desired. This lowers the cost of developing and maintaining business solutions. One of our BPM customers once reported that on average, they had to deploy a new application every <em>9 days</em>. Development, testing, change and maintenance became a serious issue. They reported substantial improvement by using Oracle BPM. It makes processes more compliant because the logic is based on well-defined and well-understood rules which reflect the policies and the best practices of the organization. Users have no choice but to execute the processes and follow the rules as they have been defined. These can also be used to show to compliance auditors that the rules have been followed.</p>

<p>Finally, a BPMS makes processes visible by ensuring that process performance along with key performance indicators can be provided to management. </p>

<p>These can rapidly translate into tangible returns on the investment in BPM. In my next post, I’ll talk about what constitutes a BPM Suite. </p>

<p>Cheers,<br />
Ali</p>]]>
      
   </content>
</entry>
<entry>
   <title>Tribute to a mentor</title>
   <link rel="alternate" type="text/html" href="http://blogs.oracle.com/lmukadam/2008/11/tribute_to_a_mentor.html" />
   <id>tag:blogs.oracle.com,2008:/lmukadam//578.8509</id>
   
   <published>2008-11-09T23:09:08Z</published>
   <updated>2008-11-11T06:56:12Z</updated>
   
   <summary>My first blog post in Oracle. So, I’ll start with a tribute to a mentor and a friend. When I first joined Plumtree 5+ years ago, there was so much to learn: Portal, search, collaboration, publisher, content, architecting the whole...</summary>
   <author>
      <name>ali.mukadam</name>
      
   </author>
   
   
   <content type="html" xml:lang="en-us" xml:base="http://blogs.oracle.com/lmukadam/">
      <![CDATA[<p>My first blog post in Oracle. So, I’ll start with a tribute to a mentor and a friend.</p>

<p>When I first joined Plumtree 5+ years ago, there was so much to learn: Portal, search, collaboration, publisher, content, architecting the whole set etc. I was thrust deep into an implementation primarily because the deployment was on UNIX and I knew UNIX (at least I knew enough to fumble my way around).</p>

<p>As you can guess, I ran into installation problems (hey that was the old 4.5WS on UNIX after all) and given the baffling nature of these problems, quite a few people stepped up to help me. But one guy stood out by the sheer quality and detailed suggestions to resolve the problems. And his solutions <em>worked</em>. Oh, he was also helping others who had hairy issues too. His name is Gerald Kanapathy.</p>

<p>A couple of months later, we had our first kick-off in Vegas and the PS team had its own breakout sessions. When Gerald was introduced as the speaker, someone behind me muttered with a mixture of both awe and reverence: “Yeah, that’s the Plumtree God”. Since then, Gerald’s reputation was cemented in my mind. In our 2004 kick-off, he was nominated (and won) for Best Employee Award or something similar and one the nominators wrote: “He’s the guy we folks in engineering go to when we are stuck.”</p>

<p>For those of you ALUI (now WebCenter Interaction) afficionados, Gerald used to run a blog on dev2dev@bea where he shared a lot of his invaluable knowledge and experience on technology, the WebCenter Interaction product and Web 2.0 with us lesser mortals. He has graciously shared the posts with me and now I can in turn share it with you. In the coming weeks, I’ll be republishing them here.</p>

<p>I hope they will be useful to you as they have been to me.</p>

<p>Cheers,<br />
Ali</p>]]>
      
   </content>
</entry>

</feed>
