<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Armedia &#187; Architecture</title>
	<atom:link href="http://www.armedia.com/blog/category/software-development/architecture/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.armedia.com/blog</link>
	<description>Armedia Blog</description>
	<lastBuildDate>Thu, 29 Jul 2010 16:32:32 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>So long, farewell, auf Wiedersehen, eRoom</title>
		<link>http://www.armedia.com/blog/2010/06/so-long-farewell-auf-wiedersehen-eroom/</link>
		<comments>http://www.armedia.com/blog/2010/06/so-long-farewell-auf-wiedersehen-eroom/#comments</comments>
		<pubDate>Fri, 11 Jun 2010 20:23:41 +0000</pubDate>
		<dc:creator>Colin Stephenson</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Data Migration]]></category>
		<category><![CDATA[Documentum]]></category>
		<category><![CDATA[Enterprise Content Management]]></category>
		<category><![CDATA[XML]]></category>
		<category><![CDATA[Alfresco]]></category>
		<category><![CDATA[Centerstage]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[Collaboration]]></category>
		<category><![CDATA[EMC]]></category>
		<category><![CDATA[eRoom]]></category>
		<category><![CDATA[ETL]]></category>
		<category><![CDATA[Migrate]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[transformation]]></category>

		<guid isPermaLink="false">http://www.armedia.com/blog/?p=420</guid>
		<description><![CDATA[A simple goal – “export, transform, load” – the destination is a matter of choice. EMC eRoom is going away.  It has been marked as End of Life (EOL) so what next?  EMC Documentum have 2 options: EMC Documentum Collaboration Services; EMC Documentum Centerstage.  Armedia’s immediate goal is to support Collaboration Services, then Centerstage but [...]]]></description>
			<content:encoded><![CDATA[<p>A simple goal – “<a href="http://en.wikipedia.org/wiki/Extract,_transform,_load" target="_blank">export, transform, load</a>” – the destination is a matter of choice.</p>
<p><a href="http://www.emc.com/products/family/eroom-family.htm">EMC eRoom</a> is going away.  It has been marked as End of Life (<a href="http://en.wikipedia.org/wiki/End-of-life_%28product%29">EOL</a>) so what next? <a href="http://www.emc.com/domains/documentum/index.htm"> EMC Documentum</a> have 2 options: EMC Documentum Collaboration Services; <a href="http://www.emc.com/products/detail/software/centerstage.htm">EMC Documentum Centerstage</a>.  Armedia’s immediate goal is to support Collaboration Services, then Centerstage but why stop there?  Why limit a client’s choice.</p>
<p>Armedia&#8217;s eRoom migration story is in 3 acts (and yes, I have been listening to some test pieces that I used to play in my <a href="http://www.downshirebrass.com/">brass banding</a> days &#8211; check out <a href="http://www.philipsparke.com/year_of_the_dragon%20BB.htm">Year of the Dragon</a> by <a href="http://www.philipsparke.com/">Philip Sparke</a>).</p>
<p><span style="text-decoration: underline;">Act I – The Export</span></p>
<p>Getting the content out of eRoom into an understandable format.  Of course, its not just the content, there is  a large quantity of metadata in eRoom as well.  Act I – The Export deals solely with interrogating eRoom and generating a document detailing everything about eRoom.  From communities to Files.  From eRoom Setup to databases – we mean everything.  The result: a well-formed XML document</p>
<p><span style="text-decoration: underline;">Act II – The Transformation</span></p>
<p>As with any classic performance, after the captivating opening, Act II deals with getting to know the characters.  In this case, the transformation gets to know the XML document and gains a deep understanding of the objects held within.  The transformation is responsible for also generating a secondary XML document. This is formed to support the ingestion to a new Content Management System (<a href="http://en.wikipedia.org/wiki/Content_management_system">CMS</a>) and / or Collaboration System.  Currently the supported transformation is for EMC Documentum Collaboration Services.  This can easily be extended due to the flexible architecture of this utility and is simply a case of transforming XML.</p>
<p><span style="text-decoration: underline;">Act III – The Load</span></p>
<p>The closing act is the build up to the dramatic climax which leaves the audience going “WOW!”.  eRoom Migration aims to achieve the same “WOW!”.  Now that the XML has been transformed you can sit back and let the load run automatically.  That’s it.  By using the ingestion engine of <a href="http://www.armedia.com/products/suite/">Caliente!</a> loading all the content and metadata is simple.  Just let eRoom Migration take care of everything for you.  The only thing it does not do is say “WOW!” – we leave that to you.</p>
<p>Over the next few weeks I plan to talk in more detail about the approach taken and dig deeper into the 3 different pieces of the migration effort.  For those eRoom users, what do you see yourselves using in the near future?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.armedia.com/blog/2010/06/so-long-farewell-auf-wiedersehen-eroom/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>OSGi for business applications</title>
		<link>http://www.armedia.com/blog/2010/01/osgi-for-business-applications/</link>
		<comments>http://www.armedia.com/blog/2010/01/osgi-for-business-applications/#comments</comments>
		<pubDate>Fri, 29 Jan 2010 16:39:06 +0000</pubDate>
		<dc:creator>David Miller</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://www.armedia.com/blog/?p=255</guid>
		<description><![CDATA[OSGi is a dynamic module system for Java.  An OSGi system is a network of components that communicate via defined interfaces.  Each component is deployable, manageable, and updatable, with predictable effects on the other deployed components.  Each component can be stopped, started, deployed, and undeployed without having to shut down the component host.  Sound familiar?  [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://en.wikipedia.org/wiki/Osgi">OSGi</a> is a dynamic module system for Java.  An OSGi system is a network of components that communicate via defined interfaces.  Each component is deployable, manageable, and updatable, with predictable effects on the other deployed components.  Each component can be stopped, started, deployed, and undeployed without having to shut down the component host.  Sound familiar?  This is service-oriented architecture (SOA) in a single JVM&#8230; All the goodness of SOA, with none of the badness.</p>
<p>If you are a Java developer, or the administrator for a JEE system, most likely you are using OSGi already.  The Eclipse development environment is <a href="http://www.eclipse.org/osgi/">OSGi-based</a>: Eclipse modules are OSGI components.  Almost every application server is based on OSGi: <a href="http://community.jboss.org/wiki/JBossOSGi">JBoss</a>, <a href="http://blog.eisele.net/2009/10/preview-weblogic-dm-server-weblogic.html">Weblogic</a>, <a href="http://osgi.dzone.com/articles/simplified-enterprise-osgi">WebSphere</a>.</p>
<p>Using OSGi for a business application should affect your design.  Most systems allocate technical requirements to components.  For the most part, these components live only in the architecture and design.  In most all the projects I&#8217;ve ever worked on, the deliverable Java code lives in big honkin&#8217; jar files with little or no traceability back to the architecture and design.  Inside the jar file, every class has access to every other class, and the internal dependencies end up spreading all over the place.  Reasoning about the code base, or pulling out smaller features for reuse elsewhere, becomes very difficult.</p>
<p>In a well-designed OSGi architecture, each logical component from the architecture and design should become one OSGi <em>bundle</em> (the OSGi jargon for <em>component</em>).  Clients have access only to the public interface of each bundle; the implementation remains inaccessible.  Instead of a handful of big honkin&#8217; monolithic jar files, you end up with many small well-defined bundles.  This direct correspondence of one architecture/design artifact (a <em>component</em>) to one development/runtime artifact (a <em>bundle</em>) is what I like the most about OSGi.</p>
<p>Some benefits of a network of well-defined, small components:</p>
<ol>
<li>Easy to support different implementations of the same interface.  When development starts, you can quickly release <em>stub</em> bundles of the interfaces your team is responsible for; other teams consume your stub bundle to write their own bundles.  As you complete real implementations of each interface, your clients can replace their stubs with the real thing, without missing a beat.</li>
<li>Clients can upgrade only the bundles they&#8217;re interested in.  With one big honkin&#8217; jar file, every client has to upgrade every time you release, even if they don&#8217;t need the defect fixes or new features in this release.  With a network of small bundles, each client only gets what they really need.</li>
<li>An end to classpath hell.  The OSGi runtime can host different versions of each bundle.</li>
<li>Supposing you are a software vendor, you can package your applications as a set of bundles.  You can offer a basic cheaper system with a few bundles, and value-added features implemented as extra bundles.  Your clients that don&#8217;t want or need a <a href="http://www.armedia.com/blog/2010/01/my-name-is-niem/">NIEM interface</a>, and your clients that want it very much, are both happy.</li>
</ol>
<p>There are some drawbacks to OSGi for business applications.</p>
<ol>
<li>Currently using OSGi with plain ol&#8217; Web applications can take some work.  Products like the <a href="http://www.springsource.com/products/dmserver">SpringSource dm Server</a> aim to make this easier.  Also, the <a href="http://www.osgi.org">OSGi Alliance</a> is working on <a href="http://www.osgi.org/blog/2010/01/enterprise-specifications.html">Enterprise specifications</a> to define how OSGi can be used with JNDI, data sources, JPA, etc.</li>
<li>Java developers have to become a little more aware of design issues.  Most Java programmers I work with want to get their features implemented and defects resolved with as little time and thought as possible.  This is the very genesis of the big honkin&#8217; jar files I keep mentioning&#8230; It takes little time or thought to slam out one more class and add it to the one big honkin&#8217; jar file.  This problem should get easier with better tool support.  For example, the <a href="http://www.springsource.com/products/sts">Spring Tool Suite</a> and <a href="http://www.jetbrains.com/idea/whatsnew/index.html#OSGi_Application_Development">IntelliJ IDEA</a> have first-class support for OSGi development.</li>
</ol>
<p>InfoQ has an excellent series of blogs to help you get started with OSGi development: <a href="http://www.infoq.com/articles/modular-java-what-is-it">Part 1</a>, <a href="http://www.infoq.com/articles/modular-java-static-modularity">Part 2</a>, <a href="http://www.infoq.com/articles/modular-java-dynamic-modularity">Part 3</a>, <a href="http://www.infoq.com/articles/modular-java-declarative-modules">Part 4</a>.  Peter Kriens&#8217; <a href="http://www.osgi.org/blog/">blog </a>is a great way to keep up with OSGi news and events.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.armedia.com/blog/2010/01/osgi-for-business-applications/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
