• Home
  • RSS Feed
  • Log in

Java in Telecommunications – Order Management API in a Service Oriented Architecture
Posted by Gero Vermaas at around evening time: June 6th, 2007

In the previous episodes in this series we started from a high level Java in the Telecommunications industry, zoomed in on Telemanagement Forum and the basics of OSS/J, described the basics of the Order Management API and now we'll discuss why the Order Management API fits perfectly in an Service Oriented Architecture (SOA). Why is this a relevant question? Virtually any organization does with order management in one way or another and many organizations are currently evaluating or realizing SOAs. Reason enough to check if the Order Management API fits in an SOA.

SOA is the most hyped TLA over the last years... Because SOA is so hyped and every vendor is trying to give a definition that's a perfect match for their product, we decided to not start with an SOA definition in our JavaOne and TMW presentations. Instead we took a more practical approach and compiled a list of concepts that are important for an SOA. We then checked if the Order Management API applied these concepts. The more concepts applied, the better the fit for use of the Order Management API in a SOA. An easy and efficient approach.

Below is the list of concepts we identified and per concept how this is applied in the Order Management API.

Service reuse Services exposed by the API can be reused for different types of Orders and are not bound to any specific business process.
Modular and autonomous <meta name="GENERATOR" content="OpenOffice.org 2.0 (Linux)" /><meta name="AUTHOR" content="Gero Vermaas" /><meta name="CREATED" content="20070329;13524000" /><meta name="CHANGEDBY" content="Gero Vermaas" /><meta name="CHANGED" content="20070606;17002900" /><br /> <style type="text/css"><!-- @page { size: 8.5in 11in; margin: 0.79in } TD P { margin-bottom: 0in } P { margin-bottom: 0.08in } --> </style> <p>The OM API is modular because it supports various types of Orders and each implementation can extend the types of Order supported. New order types can be plugged in without changing the API. From the larger architecture perspective an OM API implementation can be seen as a module with a clear task: Order Management. It does for example not cover inventory management or CRM.The OM API is autonomous because it does not depend on other APIs to be implemented. If you implement the OM API, you have a fully functional Order Management system which can work autonomously.</td> </tr> <tr> <td valign="top">Coarse grained</td> <td><meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8" /><title /><meta name="GENERATOR" content="OpenOffice.org 2.0 (Linux)" /><meta name="AUTHOR" content="Gero Vermaas" /><meta name="CREATED" content="20070329;13524000" /><meta name="CHANGEDBY" content="Gero Vermaas" /><meta name="CHANGED" content="20070606;17002900" /><br /> <style type="text/css"> <!-- @page { size: 8.5in 11in; margin: 0.79in } TD P { margin-bottom: 0in } P { margin-bottom: 0.08in } --> </style> <p>It is coarse grained becuase it allows for creation and starting of Orders by one call. There is no nitty-gritty interaction needed to create orders.</td> </tr> <tr> <td valign="top">Asynchronous</td> <td><meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8" /><title /><meta name="GENERATOR" content="OpenOffice.org 2.0 (Linux)" /><meta name="AUTHOR" content="Gero Vermaas" /><meta name="CREATED" content="20070329;13524000" /><meta name="CHANGEDBY" content="Gero Vermaas" /><meta name="CHANGED" content="20070606;17002900" /><br /> <style type="text/css"> <!-- @page { size: 8.5in 11in; margin: 0.79in } TD P { margin-bottom: 0in } P { margin-bottom: 0.08in } --> </style> <p>Asynchronous interactions are supported by the events that are available on all integration profiles (EJB, XML/JMS and web services) and of course for the XML/JMS profile all interactions are asynchronous.</td> </tr> <tr> <td valign="top">Stateless</td> <td><meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8" /><title /><meta name="GENERATOR" content="OpenOffice.org 2.0 (Linux)" /><meta name="AUTHOR" content="Gero Vermaas" /><meta name="CREATED" content="20070329;13524000" /><meta name="CHANGEDBY" content="Gero Vermaas" /><meta name="CHANGED" content="20070606;17002900" /><br /> <style type="text/css"> <!-- @page { size: 8.5in 11in; margin: 0.79in } TD P { margin-bottom: 0in } P { margin-bottom: 0.08in } --> </style> <p>While interacting with an OM implementation there is no stateful session being maintained (with the exception of execution large queries in which the result can be queried in batches).</td> </tr> <tr> <td valign="top">Composable</td> <td><meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8" /><title /><meta name="GENERATOR" content="OpenOffice.org 2.0 (Linux)" /><meta name="AUTHOR" content="Gero Vermaas" /><meta name="CREATED" content="20070329;13524000" /><meta name="CHANGEDBY" content="Gero Vermaas" /><meta name="CHANGED" content="20070606;17002900" /><br /> <style type="text/css"> <!-- @page { size: 8.5in 11in; margin: 0.79in } TD P { margin-bottom: 0in } P { margin-bottom: 0.08in } --> </style> <p>The services exposed by the API can be used in larger business flows.</td> </tr> <tr> <td valign="top">Described services</td> <td><meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8" /><title /><meta name="GENERATOR" content="OpenOffice.org 2.0 (Linux)" /><meta name="AUTHOR" content="Gero Vermaas" /><meta name="CREATED" content="20070329;13524000" /><meta name="CHANGEDBY" content="Gero Vermaas" /><meta name="CHANGED" content="20070606;17002900" /><br /> <style type="text/css"> <!-- @page { size: 8.5in 11in; margin: 0.79in } TD P { margin-bottom: 0in } P { margin-bottom: 0.08in } --> </style> <p>The services exposed by the API are well described via the XSDs (XML/JMS and webservice profiles), Javadoc (EJB profile).</td> </tr> <tr> <td valign="top">Ubiquitous domain language/model</td> <td><meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8" /><title /><meta name="GENERATOR" content="OpenOffice.org 2.0 (Linux)" /><meta name="AUTHOR" content="Gero Vermaas" /><meta name="CREATED" content="20070329;13524000" /><meta name="CHANGEDBY" content="Gero Vermaas" /><meta name="CHANGED" content="20070606;17002900" /><br /> <style type="text/css"> <!-- @page { size: 8.5in 11in; margin: 0.79in } TD P { margin-bottom: 0in } P { margin-bottom: 0.08in } --> </style> <p>All entities used in the API are based on the <a title="Telemanagement Shared Information and Data Model" href="http://www.tmforum.org/browse.aspx?catid=1684">TelemanagementForums Shared Information and Data model</a>. This provides the ubiquitous language.<br /> Please be aware that only generic elements of this model are used to ensure that the API is not bound to telecommunications specific systems only.</td> </tr> <tr> <td valign="top">Reliable messaging</td> <td><meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8" /><title /><meta name="GENERATOR" content="OpenOffice.org 2.0 (Linux)" /><meta name="AUTHOR" content="Gero Vermaas" /><meta name="CREATED" content="20070329;13524000" /><meta name="CHANGEDBY" content="Gero Vermaas" /><meta name="CHANGED" content="20070606;17002900" /><br /> <style type="text/css"> <!-- @page { size: 8.5in 11in; margin: 0.79in } TD P { margin-bottom: 0in } P { margin-bottom: 0.08in } --> </style> <p>Reliable messaging is supported through the JMS profile (and in future probably also for web service profile using the WS-Reliable Messaging standard).</td> </tr> <tr> <td valign="top">Loosely coupled</td> <td><meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8" /><title /><meta name="GENERATOR" content="OpenOffice.org 2.0 (Linux)" /><meta name="AUTHOR" content="Gero Vermaas" /><meta name="CREATED" content="20070329;13524000" /><meta name="CHANGEDBY" content="Gero Vermaas" /><meta name="CHANGED" content="20070606;17002900" /><br /> <style type="text/css"> <!-- @page { size: 8.5in 11in; margin: 0.79in } TD P { margin-bottom: 0in } P { margin-bottom: 0.08in } --> </style> <p>Loose coupling is provided through the XML/JMS and web services profile.</td> </tr> <tr> <td valign="top">XML Document based</td> <td><meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8" /><title /><meta name="GENERATOR" content="OpenOffice.org 2.0 (Linux)" /><meta name="AUTHOR" content="Gero Vermaas" /><meta name="CREATED" content="20070329;13524000" /><meta name="CHANGEDBY" content="Gero Vermaas" /><meta name="CHANGED" content="20070606;17002900" /><br /> <style type="text/css"> <!-- @page { size: 8.5in 11in; margin: 0.79in } TD P { margin-bottom: 0in } P { margin-bottom: 0.08in } --> </style> <p>Both the XML/JMS and web services profile use XML based message exchanges.</td> </tr> <tr> <td valign="top">Interoperable</td> <td><meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8" /><title /><meta name="GENERATOR" content="OpenOffice.org 2.0 (Linux)" /><meta name="AUTHOR" content="Gero Vermaas" /><meta name="CREATED" content="20070329;13524000" /><meta name="CHANGEDBY" content="Gero Vermaas" /><meta name="CHANGED" content="20070606;17002900" /><br /> <style type="text/css"> <!-- @page { size: 8.5in 11in; margin: 0.79in } TD P { margin-bottom: 0in } P { margin-bottom: 0.08in } --> </style> <p>The web services profile support interoperability with other implementation technologies. Interoperability is also supported by the XML/JMS profile since many JMS providers provide APIs for non-Java clients.</td> </tr> </table> <p style="margin-bottom: 0in"> <p style="margin-bottom: 0in">These are all the concepts that apply to the Order Management API. The following concepts are not addressed by the Order Management API and I'll explain why:</p> <p style="margin-bottom: 0in"> <table width="665" cellspacing="0" cellpadding="0" border="0"> <tr valign="top"> <td style="width: 230px">Versioning</td> <td style="width: 435px">There is no standard way for versioning of (for example) orders without breaking already connected clients. For example, when you'd add an attribute to an Order on the server, clients that validate the XML against the XML Schema will break.There are some ways to deal with this, but the Order Management API (or the OSS/J APIs in general) dooes not define how this situation should be handled. Luckily the Order Management API does provide support for dynamic attributes and by using these the problem becomes less urgent, but it is something that should be addressed in the future.</td> </tr> <tr> <td valign="top"><meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8" /><title /><meta name="GENERATOR" content="OpenOffice.org 2.0 (Linux)" /><meta name="AUTHOR" content="Gero Vermaas" /><meta name="CREATED" content="20070329;13524000" /><meta name="CHANGEDBY" content="Gero Vermaas" /><meta name="CHANGED" content="20070606;17002900" /><br /> <style type="text/css"> <!-- @page { size: 8.5in 11in; margin: 0.79in } TD P { margin-bottom: 0in } P { margin-bottom: 0.08in } --> </style> <p>Policy Driven, Registry and discovery, Orchestration</td> <td valign="top"><meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8" /><title /><meta name="GENERATOR" content="OpenOffice.org 2.0 (Linux)" /><meta name="AUTHOR" content="Gero Vermaas" /><meta name="CREATED" content="20070329;13524000" /><meta name="CHANGEDBY" content="Gero Vermaas" /><meta name="CHANGED" content="20070606;17002900" /><br /> <style type="text/css"> <!-- @page { size: 8.5in 11in; margin: 0.79in } TD P { margin-bottom: 0in } P { margin-bottom: 0.08in } --> </style> <p>These concepts should not be defined by one single system in a SOA, but are the responsibility of the SOA eco-system. Order Management API implementations can perfectly participate in a policy driven SOA, or be registered and discovered, or be used by and orchestration engine, but, the API does and should not define how this is realized.</td> </tr> <tr> <td valign="top"><meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8" /><title /><meta name="GENERATOR" content="OpenOffice.org 2.0 (Linux)" /><meta name="AUTHOR" content="Gero Vermaas" /><meta name="CREATED" content="20070329;13524000" /><meta name="CHANGEDBY" content="Gero Vermaas" /><meta name="CHANGED" content="20070606;17002900" /><br /> <style type="text/css"> <!-- @page { size: 8.5in 11in; margin: 0.79in } TD P { margin-bottom: 0in } P { margin-bottom: 0.08in } --> </style> <p>Security</td> <td valign="top"><meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8" /><title /><meta name="GENERATOR" content="OpenOffice.org 2.0 (Linux)" /><meta name="AUTHOR" content="Gero Vermaas" /><meta name="CREATED" content="20070329;13524000" /><meta name="CHANGEDBY" content="Gero Vermaas" /><meta name="CHANGED" content="20070606;17002900" /><br /> <style type="text/css"> <!-- @page { size: 8.5in 11in; margin: 0.79in } TD P { margin-bottom: 0in } P { margin-bottom: 0.08in } --> </style> <p>The Order Management API itself does not specify how security should be addressed, but because it builds on the JavaEE and web service specifications, the security features of JavaEE and web services can be used to address security needs.</td> </tr> </table> <p style="margin-bottom: 0in"> <p style="margin-bottom: 0in">In summary the Order Management API conforms to most of the relevant SOA concepts. If you're in a situation where an Order Management system needs to be integrated into an SOA, consider the <a href="https://jsr264-public.dev.java.net/">Order Management API (JSR264)</a>. In case you're missing important SOA concepts, let me know, then I'll explain if and how the Order Management API applies these concepts.</p> <p style="margin-bottom: 0in"> <p style="margin-bottom: 0in"> <p style="margin-bottom: 0in">This entry roughly covered the second part of our JavaOne and TMW presentations. What's next... not sure yet, but I'll be back with more Java and telco related posts. Suggestions are welcome <img src='http://blog.xebia.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p> <div class="addtoany_share_save_container"><ul class="addtoany_list"><li><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fblog.xebia.com%2F2007%2F06%2F06%2Fjava-in-telecommunications-%25e2%2580%2593-order-management-api-in-a-service-oriented-architecture%2F&linkname=Java%20in%20Telecommunications%20%E2%80%93%20Order%20Management%20API%20in%20a%20Service%20Oriented%20Architecture"><img src="http://blog.xebia.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a></li></ul></div><!--'(more...)', strip_teaser, 'more_file'); --> </div> <div class="view-content"> <p class="postmetadata"> Filed under <a href="http://blog.xebia.com/category/java/" title="View all posts in Java" rel="category tag">Java</a>, <a href="http://blog.xebia.com/category/soa/" title="View all posts in SOA" rel="category tag">SOA</a>, <a href="http://blog.xebia.com/category/telecommunications/" title="View all posts in Telecommunications" rel="category tag">Telecommunications</a> | <a href="http://blog.xebia.com/2007/06/06/java-in-telecommunications-%e2%80%93-order-management-api-in-a-service-oriented-architecture/#comments" title="Comment on Java in Telecommunications – Order Management API in a Service Oriented Architecture">1 Comment »</a></p> </div> <div class="view-content"><br /><br /> </div> </div> </div> </div> </div> </div> </div> <!-- You can start editing here. --> <div class="content-wrapper"> <div id="content" class="sidebar-right"> <h2 class="title">One Response to “Java in Telecommunications – Order Management API in a Service Oriented Architecture”</h2> <div class="node-wrapper"> <div class="node-content"> <div class="node-bg-fix"> <div class="view view-article-overview view-id-article_overview view-display-id-page_1 view-dom-id-1"> <div class="view-header"> <div class="navigation"> <div class="alignleft"></div> <div class="alignright"></div> </div> <ol class="commentlist"> <hr /><br /> <div id="div-comment-24013"> <div id="author-info" class="comment-author vcard"> <strong><cite class="fn"><a href='http://blog.xebia.com/2007/11/16/order-management-in-converging-environments/' rel='external nofollow' class='url'>Xebia Blog</a></cite> Says:</strong> <div class="comment-meta commentmetadata">Posted at: <a href="http://blog.xebia.com/2007/06/06/java-in-telecommunications-%e2%80%93-order-management-api-in-a-service-oriented-architecture/comment-page-1/#comment-24013">November 16, 2007 at 10:32 am</a></div> </div> <p>[...] It integrates easily into a SOA, see previous blog posting. [...]</p> <div class="reply"> </div> </div> </li> </ol> <hr /><br /> <div id="respond"> <h3>Leave a Reply</h3> <div class="cancel-comment-reply"> <small><a rel="nofollow" id="cancel-comment-reply-link" href="/2007/06/06/java-in-telecommunications-%e2%80%93-order-management-api-in-a-service-oriented-architecture/comment-page-1/#respond" style="display:none;">Click here to cancel reply.</a></small> </div> <form action="http://blog.xebia.com/wp-comments-post.php" method="post" id="commentform"> <p><input type="text" name="author" id="author" value="" size="22" tabindex="1" aria-required='true' /> <label for="author"><small>Name (required)</small></label></p> <p><input type="text" name="email" id="email" value="" size="22" tabindex="2" aria-required='true' /> <label for="email"><small>Mail (will not be published) (required)</small></label></p> <p><input type="text" name="url" id="url" value="" size="22" tabindex="3" /> <label for="url"><small>Website</small></label></p> <!--<p><small><strong>XHTML:</strong> You can use these tags: <code><a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> </code></small></p>--> <p><textarea name="comment" id="comment" cols="85%" rows="10" tabindex="4"></textarea></p> <p><input name="submit" type="submit" id="submit" tabindex="5" value="Submit Comment" /> <input type='hidden' name='comment_post_ID' value='235' id='comment_post_ID' /> <input type='hidden' name='comment_parent' id='comment_parent' value='0' /> </p> </form> </div> </div> </div> </div> </div> </div> </div> </div> </div> <div class="navigation"> <div class="older"> </div> </div> <div id="sidebar-right" class="display-blocks"> <a href="http://www.xebialabs.com"><img alt="Deployment automation for Java application running on Websphere, WebLogic and JBoss" title="Deployment automation for Java application running on Websphere, WebLogic and JBoss"" src="http://blog.xebia.com/wp-content/uploads/2010/02/XebiaBlogDownloadDeployit.png"/></a> <br /><br /> <!-- Archives --> <div class="clear-block block block-views"> <h2>Archives</h2> <div class="block-wrapper"> <div class="content"><div class="view"> <div class="view-content"> <div class="item-list"> <ul> <li><div class=\"views-field-title\"><span class=\"field-content\"><a href='http://blog.xebia.com/2010/03/' title='March 2010'>March 2010</a></span></div></li> <li><div class=\"views-field-title\"><span class=\"field-content\"><a href='http://blog.xebia.com/2010/02/' title='February 2010'>February 2010</a></span></div></li> <li><div class=\"views-field-title\"><span class=\"field-content\"><a href='http://blog.xebia.com/2010/01/' title='January 2010'>January 2010</a></span></div></li> <li><div class=\"views-field-title\"><span class=\"field-content\"><a href='http://blog.xebia.com/2009/12/' title='December 2009'>December 2009</a></span></div></li> <li><div class=\"views-field-title\"><span class=\"field-content\"><a href='http://blog.xebia.com/2009/11/' title='November 2009'>November 2009</a></span></div></li> <li><div class=\"views-field-title\"><span class=\"field-content\"><a href='http://blog.xebia.com/2009/10/' title='October 2009'>October 2009</a></span></div></li> <li><div class=\"views-field-title\"><span class=\"field-content\"><a href='http://blog.xebia.com/2009/09/' title='September 2009'>September 2009</a></span></div></li> <li><div class=\"views-field-title\"><span class=\"field-content\"><a href='http://blog.xebia.com/2009/08/' title='August 2009'>August 2009</a></span></div></li> <li><div class=\"views-field-title\"><span class=\"field-content\"><a href='http://blog.xebia.com/2009/07/' title='July 2009'>July 2009</a></span></div></li> <li><div class=\"views-field-title\"><span class=\"field-content\"><a href='http://blog.xebia.com/2009/06/' title='June 2009'>June 2009</a></span></div></li> <li><div class=\"views-field-title\"><span class=\"field-content\"><a href='http://blog.xebia.com/2009/05/' title='May 2009'>May 2009</a></span></div></li> <li><div class=\"views-field-title\"><span class=\"field-content\"><a href='http://blog.xebia.com/2009/04/' title='April 2009'>April 2009</a></span></div></li> </ul> </div> </div> </div> </div> </div> </div> <!-- Sites --> <div class="clear-block block block-views"> <h2>Xebia Sites</h2> <div class="block-wrapper"> <div class="content"><div class="view"> <div class="view-content"> <div class="item-list"> <ul> <li><a href="http://www.xebia.com">Xebia Corporate</a></li> <li><a href="http://www.xebia.fr">Xebia France</a></li> <li><a href="http://www.xebiaindia.com">Xebia India</a></li> </ul> </div> </div> </div> </div> </div> </div> <!-- Categories --> <div class="clear-block block block-views"> <h2>Categories</h2> <div class="block-wrapper"> <div class="content"><div class="view"> <div class="view-content"> <div class="item-list"> <ul> <li class="cat-item cat-item-2"><div class=''views-field-title'><span class='field-content'><a href="http://blog.xebia.com/category/java/" title="View all posts filed under Java">Java</a> (282) </span></div></li> <li class="cat-item cat-item-20"><div class=''views-field-title'><span class='field-content'><a href="http://blog.xebia.com/category/agile/" title="View all posts filed under Agile">Agile</a> (109) </span></div></li> <li class="cat-item cat-item-5"><div class=''views-field-title'><span class='field-content'><a href="http://blog.xebia.com/category/general/" title="View all posts filed under General">General</a> (50) </span></div></li> <li class="cat-item cat-item-15"><div class=''views-field-title'><span class='field-content'><a href="http://blog.xebia.com/category/testing/" title="View all posts filed under Testing">Testing</a> (42) </span></div></li> <li class="cat-item cat-item-18"><div class=''views-field-title'><span class='field-content'><a href="http://blog.xebia.com/category/performance/" title="View all posts filed under Performance">Performance</a> (42) </span></div></li> <li class="cat-item cat-item-13"><div class=''views-field-title'><span class='field-content'><a href="http://blog.xebia.com/category/hibernate/" title="View all posts filed under Hibernate">Hibernate</a> (36) </span></div></li> <li class="cat-item cat-item-35"><div class=''views-field-title'><span class='field-content'><a href="http://blog.xebia.com/category/scrum/" title="View all posts filed under Scrum">Scrum</a> (33) </span></div></li> <li class="cat-item cat-item-29"><div class=''views-field-title'><span class='field-content'><a href="http://blog.xebia.com/category/podcast/" title="View all posts filed under Podcast">Podcast</a> (31) </span></div></li> <li class="cat-item cat-item-38"><div class=''views-field-title'><span class='field-content'><a href="http://blog.xebia.com/category/architecture/" title="View all posts filed under Architecture">Architecture</a> (31) </span></div></li> <li class="cat-item cat-item-10"><div class=''views-field-title'><span class='field-content'><a href="http://blog.xebia.com/category/spring/" title="View all posts filed under Spring">Spring</a> (28) </span></div></li> <li class="cat-item cat-item-23"><div class=''views-field-title'><span class='field-content'><a href="http://blog.xebia.com/category/soa/" title="View all posts filed under SOA">SOA</a> (24) </span></div></li> <li class="cat-item cat-item-19"><div class=''views-field-title'><span class='field-content'><a href="http://blog.xebia.com/category/maven/" title="View all posts filed under Maven">Maven</a> (22) </span></div></li> <li class="cat-item cat-item-28"><div class=''views-field-title'><span class='field-content'><a href="http://blog.xebia.com/category/project-management/" title="View all posts filed under Project Management">Project Management</a> (22) </span></div></li> <li class="cat-item cat-item-123"><div class=''views-field-title'><span class='field-content'><a href="http://blog.xebia.com/category/middleware/" title="View all posts filed under Middleware">Middleware</a> (23) <ul class='children'> <li class="cat-item cat-item-284"><div class=''views-field-title'><span class='field-content'><a href="http://blog.xebia.com/category/middleware/deployment/" title="View all posts filed under Deployment">Deployment</a> (14) </span></div></li> </ul> </span></div></li> <li class="cat-item cat-item-30"><div class=''views-field-title'><span class='field-content'><a href="http://blog.xebia.com/category/flex/" title="View all posts filed under Flex">Flex</a> (17) </span></div></li> <li class="cat-item cat-item-177"><div class=''views-field-title'><span class='field-content'><a href="http://blog.xebia.com/category/jpa/" title="View all posts filed under JPA">JPA</a> (17) </span></div></li> <li class="cat-item cat-item-14"><div class=''views-field-title'><span class='field-content'><a href="http://blog.xebia.com/category/eclipse/" title="View all posts filed under Eclipse">Eclipse</a> (15) </span></div></li> <li class="cat-item cat-item-222"><div class=''views-field-title'><span class='field-content'><a href="http://blog.xebia.com/category/xebialabs/" title="View all posts filed under Xebia Labs">Xebia Labs</a> (15) </span></div></li> <li class="cat-item cat-item-31"><div class=''views-field-title'><span class='field-content'><a href="http://blog.xebia.com/category/quality-assurance/" title="View all posts filed under Quality Assurance">Quality Assurance</a> (14) </span></div></li> </ul> </div> </div> </div> </div> </div> </div> <!-- Tag Cloud --> <div class="clear-block block block-views"> <h2>Tag Cloud</h2> <div class="block-wrapper"> <div class="content"><div class="view"> <div class="view-content"> <div class="item-list"> <ul> <a href='http://blog.xebia.com/tag/xml/' class='tag-link-12' title='3 topics' rel="tag" style='font-size: 8.56pt;'>XML</a> <a href='http://blog.xebia.com/tag/groovy/' class='tag-link-37' title='4 topics' rel="tag" style='font-size: 9.12pt;'>Groovy</a> <a href='http://blog.xebia.com/tag/grails/' class='tag-link-34' title='4 topics' rel="tag" style='font-size: 9.12pt;'>Grails</a> <a href='http://blog.xebia.com/tag/maven/' class='tag-link-19' title='6 topics' rel="tag" style='font-size: 10.24pt;'>Maven</a> <a href='http://blog.xebia.com/tag/agile-awareness-workshop/' class='tag-link-86' title='3 topics' rel="tag" style='font-size: 8.56pt;'>Agile Awareness Workshop</a> <a href='http://blog.xebia.com/tag/hibernate/' class='tag-link-13' title='4 topics' rel="tag" style='font-size: 9.12pt;'>Hibernate</a> <a href='http://blog.xebia.com/tag/closures/' class='tag-link-72' title='2 topics' rel="tag" style='font-size: 8pt;'>Closures</a> <a href='http://blog.xebia.com/tag/scala/' class='tag-link-276' title='8 topics' rel="tag" style='font-size: 11.36pt;'>Scala</a> <a href='http://blog.xebia.com/tag/testing/' class='tag-link-15' title='5 topics' rel="tag" style='font-size: 9.68pt;'>Testing</a> <a href='http://blog.xebia.com/tag/functional-programming/' class='tag-link-172' title='4 topics' rel="tag" style='font-size: 9.12pt;'>Functional Programming</a> <a href='http://blog.xebia.com/tag/poppendieck/' class='tag-link-93' title='2 topics' rel="tag" style='font-size: 8pt;'>Poppendieck</a> <a href='http://blog.xebia.com/tag/lean/' class='tag-link-94' title='3 topics' rel="tag" style='font-size: 8.56pt;'>Lean</a> <a href='http://blog.xebia.com/tag/intellij/' class='tag-link-44' title='4 topics' rel="tag" style='font-size: 9.12pt;'>IntelliJ</a> <a href='http://blog.xebia.com/tag/fitnesse/' class='tag-link-97' title='4 topics' rel="tag" style='font-size: 9.12pt;'>fitnesse</a> <a href='http://blog.xebia.com/tag/ajax/' class='tag-link-36' title='2 topics' rel="tag" style='font-size: 8pt;'>Ajax</a> <a href='http://blog.xebia.com/tag/spring/' class='tag-link-10' title='2 topics' rel="tag" style='font-size: 8pt;'>Spring</a> <a href='http://blog.xebia.com/tag/soa/' class='tag-link-23' title='7 topics' rel="tag" style='font-size: 10.8pt;'>SOA</a> <a href='http://blog.xebia.com/tag/xebia/' class='tag-link-95' title='4 topics' rel="tag" style='font-size: 9.12pt;'>Xebia</a> <a href='http://blog.xebia.com/tag/esb/' class='tag-link-189' title='4 topics' rel="tag" style='font-size: 9.12pt;'>esb</a> <a href='http://blog.xebia.com/tag/java/' class='tag-link-2' title='27 topics' rel="tag" style='font-size: 22pt;'>Java</a> <a href='http://blog.xebia.com/tag/product-owner/' class='tag-link-78' title='4 topics' rel="tag" style='font-size: 9.12pt;'>product owner</a> <a href='http://blog.xebia.com/tag/qcon/' class='tag-link-166' title='4 topics' rel="tag" style='font-size: 9.12pt;'>qcon</a> <a href='http://blog.xebia.com/tag/architecture/' class='tag-link-38' title='4 topics' rel="tag" style='font-size: 9.12pt;'>Architecture</a> <a href='http://blog.xebia.com/tag/scrum/' class='tag-link-35' title='14 topics' rel="tag" style='font-size: 14.72pt;'>Scrum</a> <a href='http://blog.xebia.com/tag/seam/' class='tag-link-225' title='3 topics' rel="tag" style='font-size: 8.56pt;'>Seam</a> <a href='http://blog.xebia.com/tag/semantic-web/' class='tag-link-76' title='2 topics' rel="tag" style='font-size: 8pt;'>Semantic Web</a> <a href='http://blog.xebia.com/tag/javaone/' class='tag-link-45' title='4 topics' rel="tag" style='font-size: 9.12pt;'>JavaOne</a> <a href='http://blog.xebia.com/tag/performance/' class='tag-link-18' title='8 topics' rel="tag" style='font-size: 11.36pt;'>Performance</a> <a href='http://blog.xebia.com/tag/agile/' class='tag-link-20' title='25 topics' rel="tag" style='font-size: 20.88pt;'>Agile</a> <a href='http://blog.xebia.com/tag/introduction-to-agile/' class='tag-link-88' title='3 topics' rel="tag" style='font-size: 8.56pt;'>Introduction to Agile</a> </ul> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> <!--?php wp_footer(); ?--> <script type="text/javascript"> var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E")); </script> <script type="text/javascript"> try { var pageTracker = _gat._getTracker("UA-9457407-3"); pageTracker._trackPageview(); } catch(err) {}</script> </body> </html>