<?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>Enterprise IT Consultant Views on Technologies and Trends &#187; Open</title>
	<atom:link href="http://itknowledgeexchange.techtarget.com/enterprise-IT-tech-trends/tag/open/feed/" rel="self" type="application/rss+xml" />
	<link>http://itknowledgeexchange.techtarget.com/enterprise-IT-tech-trends</link>
	<description>Everything from Mainframes to Cloud</description>
	<lastBuildDate>Fri, 10 May 2013 20:03:12 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>GeoTools &#8211; Try out GIS for your applications</title>
		<link>http://itknowledgeexchange.techtarget.com/enterprise-IT-tech-trends/geotools-try-out-gis-for-your-applications/</link>
		<comments>http://itknowledgeexchange.techtarget.com/enterprise-IT-tech-trends/geotools-try-out-gis-for-your-applications/#comments</comments>
		<pubDate>Fri, 13 May 2011 15:01:37 +0000</pubDate>
		<dc:creator>Sasirekha R</dc:creator>
				<category><![CDATA[Geographic]]></category>
		<category><![CDATA[GeoTools]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[OGC]]></category>
		<category><![CDATA[Open]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[Standard]]></category>

		<guid isPermaLink="false">http://itknowledgeexchange.techtarget.com/enterprise-IT-tech-trends/?p=306</guid>
		<description><![CDATA[GeoTools &#8211; Open Source GeoSpatial Toolkit worth trying out GeoTools is a free, open source Java geospatial toolkit for working with both vector and raster data. GeoTools is associated with the GeoAPI project that creates a vendor-neutral set of geospatial, Java interfaces derived from OGC specifications. GeoTools is a general purpose geospatial library with a large [...]]]></description>
				<content:encoded><![CDATA[<p><strong>GeoTools &#8211; Open Source GeoSpatial Toolkit worth trying out</strong></p>
<p>GeoTools is a free, open source Java geospatial toolkit for working with both vector and raster data. GeoTools is associated with the GeoAPI project that creates a vendor-neutral set of geospatial, Java interfaces derived from OGC specifications.</p>
<p>GeoTools is a general purpose geospatial library with a large feature set including:</p>
<ul>
<li>Create and Analyze graphs and networks</li>
<li>Powerful &#8220;schema assisted&#8221; parsing technology using XML Schema to bind to GML content.</li>
<li>Interact with OGC web services with both Web Map Server and Web Feature Server support</li>
<li>JDBC plug-ins for DB2, H2, PostGIS, MySQL, SpatialLite, SQL Server<span id="more-306"></span></li>
</ul>
<p>GeoTools implements Open Geospatial Consortium (OGC) specifications as they are developed including:</p>
<ul>
<li>Support for OGC Grid Coverage implementation</li>
<li>Symbology using OGC Styled Layer Descriptor (SLD) specification</li>
<li>Attribute and spatial filters using OGC Filter Encoding specification</li>
<li>Supports Java Topology Suite (JTS), an implementation of OGC Simple Features Specification &#8211; that covers 2D constructs like Point, Line and Polygon. JTS allows 3D shapes (by having a third point) to be represented, but not used for calculations.</li>
<li>Coordinate reference system and transformation support (for providing meaning to the Geometry or shapes of JTS)</li>
<li>GeoTools plans to support OpenGIS ISO Geometry Interfaces for 3D and curves.</li>
</ul>
<p>GeoTools includes two Renderers:</p>
<ul>
<li>LiteRenderer &#8211; a stateless, low memory renderer, particularly useful in server-side environments</li>
<li>J2D &#8211; a stateful renderer with optimizations for update rate and good for interactive client-side displays</li>
</ul>
<p>GeoTools supports additional formats through the use of Open plug-in system. The formats supported by an application can be controlled by including ONLY the required plug-ins. The plug-ins are available for raster formats &#8211; geotiff, gtopo30, world plus image files using common image formats such as JPEG, TIFF, GIF and PNG, imagemosaic, imagepyramid, JP2K. Plug-ins for the ImageIO-EXT project allows GeoTools to read additional raster formats from GDAL.</p>
<p>The GeoTools library forms a software &#8220;stack&#8221; with each jar building on the previous one (ref. <a href="http://docs.geotools.org/latest/userguide/welcome/geotools.html">http://docs.geotools.org/latest/userguide/welcome/geotools.html</a>). GeoTools provides API (application programming interfaces) both for representing the data structures as well as to access public classes to execute a function. Only the jars needed for an application can be included. For referencing, gt-opengis, gt-referencing and gt-metadata are required. Similarly to use Data, you need gt-api, gt-data, gt-main, jts, gt-opengis, gt-referencing, gt-opengis, gt-metadata.</p>
<p>GeoTools code is distributed under the GNU Lesser General Public License (LGPL) and can be used for commercial applications. If the GeoTools library itself is modified, then you have to publish the source code to those changes to the users of your application (or optionally submit it back to GeoTools).</p>
<p>GeoTools uses a modular architecture with high extensibility allowing additional functionality to be easily incorporated. Modules with a gold star rating indicating their quality (3 or more stars means great) is listed in <a href="http://docs.codehaus.org/display/GEOTOOLS/Module+Matrix">http://docs.codehaus.org/display/GEOTOOLS/Module+Matrix</a>.</p>
<p>GeoTools can be used to access GIS data in many file formats and spatial databases, filter and analyze data in terms of spatial and non-spatial attributes, compose and display maps with complex styling and work with an extensive range of map projections.</p>
<p>Geographic Information Systems (GIS) are expected to become more and more useful in IT (as a picture is worth thousand words) and GeoTools is a good way to start exploring it and applying it in reallife applications &#8211; as it supports a large number of formats and more standardized (though some of the APIs are not &#8211; though the public access API are expected to remain stable).</p>
<!-- wpms-network-global-inserts -->]]></content:encoded>
			<wfw:commentRss>http://itknowledgeexchange.techtarget.com/enterprise-IT-tech-trends/geotools-try-out-gis-for-your-applications/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ubuntu 11.04, another milestone in making Linux desktop Mainstream</title>
		<link>http://itknowledgeexchange.techtarget.com/enterprise-IT-tech-trends/ubuntu-1104-another-milestone-in-making-linux-desktop-mainstream/</link>
		<comments>http://itknowledgeexchange.techtarget.com/enterprise-IT-tech-trends/ubuntu-1104-another-milestone-in-making-linux-desktop-mainstream/#comments</comments>
		<pubDate>Mon, 09 May 2011 08:28:30 +0000</pubDate>
		<dc:creator>Sasirekha R</dc:creator>
				<category><![CDATA[Canonical]]></category>
		<category><![CDATA[Desktop]]></category>
		<category><![CDATA[Open]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://itknowledgeexchange.techtarget.com/enterprise-IT-tech-trends/?p=304</guid>
		<description><![CDATA[Ubuntu 11.04, another milestone in making Linux desktop Mainstream Ubuntu 11.04, code named &#8220;Natty Narwhal, released recently, has got a new look and feel for Ubuntu and has taken a major step in the right direction attracting both the desktop and netbook users. The Linux Kernel 2.6.38 which includes a patch that boosts the performance [...]]]></description>
				<content:encoded><![CDATA[<p><strong>Ubuntu 11.04, another milestone in making Linux desktop Mainstream</strong></p>
<p>Ubuntu 11.04, code named &#8220;Natty Narwhal, released recently, has got a new look and feel for Ubuntu and has taken a major step in the right direction attracting both the desktop and netbook users. The Linux Kernel 2.6.38 which includes a patch that boosts the performance of the kernel across desktops is part of Natty and users upgrading to Ubuntu 11.04 can also expect great performance improvements.</p>
<p>Unquestionably, the <strong>new Unity Interface</strong> is the most appreciated by the users and it is said that for new users, the features are so intuitive making it easy to adapt. Ubuntu 11.04 ships with <strong>Compiz</strong> that offers settings such as Backlight always on, launcher animations, urgent animations, and special window transparency options. Those users who had considered Unity slow and buggy and as a major drawback of Ubuntu now agree that it is on par with other major desktop experience.<span id="more-304"></span></p>
<p>The new <strong>launcher</strong> that sits on the left-hand side of your screen is to make getting to the favourite tools and applications quick and easy. The new Unity interface supports drag and drop, providing easier file management.</p>
<p>The new <strong>dashboard</strong>, that appears when you click on the Ubuntu logo on the top-left corner, makes it simpler to access shortcuts and search for applications and programs. Now you get fast and easy access to email, music, pictures and others.</p>
<p>The <strong>Workspaces</strong>, enables by clicking the Workspaces icon in the launcher, simplify managing multiple windows (keeping track of open windows). By using Workspaces, you can make all your active spaces to pop up and easily move different windows.</p>
<p>But since the new interface has quite a few significant changes, earlier users can avoid it and continue using the earlier Classic Interface instead. It is also pointed out that the new interface is quite welcome and worth getting used to. More details on Unity at.</p>
<p>The new Unity Interface is based on Compiz that relies heavily on OpenGL and it creates a problem working with low-end graphic cards (which impacts Ubuntu&#8217;s know ability of running on most PCs including the ones with outdated configurations). Unity 2D project, <a href="https://launchpad.net/unity-2d">https://launchpad.net/unity-2d</a>, aims to provide a Unity environment on hardware platforms that don&#8217;t support Unity&#8217;s Open GL requirements.</p>
<p><strong>Banshee 2.0</strong> (instead of Rhythmbox) is the default music player in Ubuntu 11.04. As pointed out in <a href="http://banshee.fm/download/archives/2.0.0/">http://banshee.fm/download/archives/2.0.0/</a>, it has taken six months of 36 developers and can be considered quite successful in both the aspects of bug fixes and new features. Banshee 2.0 provides Artist/Album Browser Track Actions, ‘Play After&#8217; Queue options, video support, audiobooks support etc. There are some doubts raised about the stability of Banshee compared to Rhythmbox (mainly based on experience of earlier versions) but most point out that the new features make Banchee match up with the competing products like iTunes and Windows Media Player.</p>
<p><strong>LibreOffice</strong>, the forked office suite with the same features as OpenOffice, is the default office suite in Ubuntu 11.04. LibreOffice team effort in cleaning up the code, and provide a more frequent update and bug fixes (compared to OpenOffice, especially after the taking over of Sun by Oracle) is quite appreciated by one and all.</p>
<p>Ubuntu One, that provides 2GB of space for keeping one&#8217;s files on the cloud allowing users to access their contacts, notes, or bookmarks from any computer with an internet connection is now got a better user interface and well integrated with Ubuntu.</p>
<p>Ubuntu, that is available for free (really), can be downloaded to a CD and run without having to install it in the machine. With it becoming quite easy to use, it is expected most users who try would ultimately install it.  Ubuntu installation using Ubiquity now includes options to Install side by side (dual boot), Upgrade, or Replace an existing Ubuntu Installation. The lack of viruses and worms &#8211; compared to other major desktop OSes &#8211; is another factor expected to boost Ubuntu usage.</p>
<p>Ubuntu 11.04 seems to be really on the way to make &#8220;Linux Desktop Mainstream&#8221; as originally discussed in <a href="http://itknowledgeexchange.techtarget.com/enterprise-IT-tech-trends/ubuntu-linux-desktop-becoming-mainstream/">http://itknowledgeexchange.techtarget.com/enterprise-IT-tech-trends/ubuntu-linux-desktop-becoming-mainstream/</a>.</p>
<!-- wpms-network-global-inserts -->]]></content:encoded>
			<wfw:commentRss>http://itknowledgeexchange.techtarget.com/enterprise-IT-tech-trends/ubuntu-1104-another-milestone-in-making-linux-desktop-mainstream/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Advanced Mashup Scripting in EMML &#8211; Part I</title>
		<link>http://itknowledgeexchange.techtarget.com/enterprise-IT-tech-trends/advanced-mashup-scripting-in-emml-part-i/</link>
		<comments>http://itknowledgeexchange.techtarget.com/enterprise-IT-tech-trends/advanced-mashup-scripting-in-emml-part-i/#comments</comments>
		<pubDate>Fri, 25 Mar 2011 07:50:13 +0000</pubDate>
		<dc:creator>Sasirekha R</dc:creator>
				<category><![CDATA[EMML]]></category>
		<category><![CDATA[Mashup]]></category>
		<category><![CDATA[OMA]]></category>
		<category><![CDATA[Open]]></category>
		<category><![CDATA[Standard]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://itknowledgeexchange.techtarget.com/enterprise-IT-tech-trends/?p=252</guid>
		<description><![CDATA[EMML Advanced Mashup Techniques &#8211; Part I Mashups are expected to be used by the business users directly (and not require programming skill) and the tag language EMML makes it easy to learn and use. Using the simple statements and commands of EMML, quite a few useful mashups can be created. As usage of Mashup [...]]]></description>
				<content:encoded><![CDATA[<p><strong><span style="text-decoration: underline">EMML Advanced Mashup Techniques &#8211; Part I</span></strong></p>
<p>Mashups are expected to be used by the business users directly (and not require programming skill) and the tag language EMML makes it easy to learn and use. Using the simple statements and commands of EMML, quite a few useful mashups can be created.</p>
<p>As usage of Mashup accelerates, the tendency to create more powerful and complex mashups would follow.<span id="more-252"></span> In this blog, I have tried to give the crux of some of these advanced techniques.</p>
<p><strong><span style="text-decoration: underline">Web clipping for direct use of HTML</span></strong><strong></strong></p>
<p>Using the web clipping (or Screen scraping) technique, you can get the entire HTML from any URL as a service response. The EMML Reference Runtime Engine converts the HTML retrieved by the &lt;directinvoke&gt; statement is to XHTML in the http://www.w3.org/1999/xhtml namespace. You can filter, combine or transform with XHTML to create your own output.</p>
<p>Example of &lt;directInvoke&gt; resulting in web clipping:</p>
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="638" valign="top">&lt;operation name=&#8221;queryGoogle&#8221;&gt;</td>
</tr>
<tr>
<td width="638" valign="top">  &lt;output name=&#8221;result&#8221; type=&#8221;document&#8221;&gt;</td>
</tr>
<tr>
<td width="638" valign="top">    &lt;res:queries/&gt;</td>
</tr>
<tr>
<td width="638" valign="top">  &lt;/output&gt;</td>
</tr>
<tr>
<td width="638" valign="top">  &lt;directinvoke outputvariable = &#8220;$searchresult&#8221;</td>
</tr>
<tr>
<td width="638" valign="top">     endpoint=&#8221;http://www.google.com/search?q=EMML&#8221;/&gt;</td>
</tr>
<tr>
<td width="638" valign="top">  &lt;foreach variable=&#8221;$query&#8221; items=&#8221;$searchresult//xhtml:a[@class='l']&#8220;&gt;</td>
</tr>
<tr>
<td width="638" valign="top">    &lt;appendresult outputvariable=&#8221;$result&#8221;&gt;</td>
</tr>
<tr>
<td width="638" valign="top">      &lt;res:itemlink&gt;{$query/@href}&lt;/res:itemlink&gt;</td>
</tr>
<tr>
<td width="638" valign="top">    &lt;/appendresult&gt;</td>
</tr>
<tr>
<td width="638" valign="top">  &lt;/foreach&gt;</td>
</tr>
<tr>
<td width="638" valign="top">&lt;/operation&gt;</td>
</tr>
</tbody>
</table>
<p>The itemlink list in the XML result is as follows:</p>
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="638" valign="top">&lt;itemlink href=&#8221;http:// en.wikipedia.org/wiki/EMML/&#8221;/&gt;</td>
</tr>
<tr>
<td width="638" valign="top">&lt;itemlink href=&#8221;http:// www.openmashup.org/omadocs/v1.0/index.html&#8221;/&gt;</td>
</tr>
<tr>
<td width="638" valign="top">&#8230;</td>
</tr>
</tbody>
</table>
<p><strong><span style="text-decoration: underline">Normalizing Data for Effective Joins, Grouping or Filtering</span></strong></p>
<p>Mashups &#8211; as the name suggests &#8211; is expected to get results from different services (not designed to work with each other). Though similar data is obtained from these services invoked, they would not be in identical forms. For effective usage of joins, grouping or filtering these results from different services, normalization of data to a single representation becomes essential. Creating a custom XPath function is the best method to normalize data.</p>
<p>The following example shows joining mortgage rates from two web sites &#8211; one refers to the APR and the second uses custom terms:</p>
<p>Create the custom XPath function &#8211; to normalize the custom terminology &#8211; as a Java class myFinanceFunction that extends org.oma.emml.client.EMMLUserFunction.</p>
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="638" valign="top">public class MyFinanceFunctions extends EMMLUserFunction {</td>
</tr>
<tr>
<td width="638" valign="top">static Set mortgageAliases = new HashSet();</td>
</tr>
<tr>
<td width="638" valign="top">static { mortgageAliases.add(&#8220;5/1 Orange Mortgage&#8221;); }</td>
</tr>
<tr>
<td width="638" valign="top">public static String mortgage(String data) {</td>
</tr>
<tr>
<td width="638" valign="top">  if (mortgageAliases.contains(data))</td>
</tr>
<tr>
<td width="638" valign="top">    return &#8220;5-Year ARM&#8221;;</td>
</tr>
<tr>
<td width="638" valign="top">  return data; }</td>
</tr>
<tr>
<td width="638" valign="top">}</td>
</tr>
</tbody>
</table>
<p>Compile this class, adding <em>web-apps-home</em><em>/emml/WEB-INF/lib/emml.jar</em> to the classpath. Deploy the compiled class to web-apps-home/emml/WEB-INF/classes for the EMML Engine that host the mashups using this function.</p>
<p>Add a <strong>namespace</strong> for the class as an xmlns attribute to the &lt;mashup&gt; tag that uses this function.</p>
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="638" valign="top">xmlns:finance=&#8221;java:com.mycompany.mashups.MyFinanceFunctions&#8221;</td>
</tr>
<tr>
<td width="638" valign="top">name=&#8221;MortgageComparisons&#8221;&gt;</td>
</tr>
</tbody>
</table>
<p>Use the custom function in the XPath expressions in the &lt;join&gt; statement (or where data needs to be normalized).</p>
<table class="MsoTableGrid" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td style="padding-bottom: 0in;padding-left: 5.4pt;width: 6.65in;padding-right: 5.4pt;padding-top: 0in;border: #c0c0c0" width="638" valign="top">
<p class="MsoNormal" style="text-align: justify;margin: 0in 0in 0pt"><span class="keyword"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;font-size">&lt;output name=&#8221;result&#8221; type=&#8221;document&#8221;/&gt; </span></span></p>
</td>
</tr>
<tr>
<td style="padding-bottom: 0in;padding-left: 5.4pt;width: 6.65in;padding-right: 5.4pt;padding-top: 0in;border: #c0c0c0" width="638" valign="top">
<p class="MsoNormal" style="text-align: justify;margin: 0in 0in 0pt"><span class="keyword"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;font-size"><span>  </span>&lt;join outputvariable=&#8221;$result&#8221; </span></span></p>
</td>
</tr>
<tr>
<td style="padding-bottom: 0in;padding-left: 5.4pt;width: 6.65in;padding-right: 5.4pt;padding-top: 0in;border: #c0c0c0" width="638" valign="top">
<p class="MsoNormal" style="text-align: justify;margin: 0in 0in 0pt"><span class="keyword"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;font-size"><span>    </span>joincondition=&#8221;$feed1/feed/finance:mortgage(Product) = </span></span></p>
</td>
</tr>
<tr>
<td style="padding-bottom: 0in;padding-left: 5.4pt;width: 6.65in;padding-right: 5.4pt;padding-top: 0in;border: #c0c0c0" width="638" valign="top">
<p class="MsoNormal" style="text-align: justify;margin: 0in 0in 0pt"><span class="keyword"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;font-size"><span>    </span>$feed2/feed/finance:mortgage(Product)&#8221;/&gt; </span></span></p>
</td>
</tr>
<tr>
<td style="padding-bottom: 0in;padding-left: 5.4pt;width: 6.65in;padding-right: 5.4pt;padding-top: 0in;border: #c0c0c0" width="638" valign="top">
<p class="MsoNormal" style="text-align: justify;margin: 0in 0in 0pt"><span class="keyword"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;font-size"><span>  </span>&lt;display message=&#8221;result = &#8221; expr=&#8221;$result&#8221;/&gt; </span></span></p>
</td>
</tr>
<tr>
<td style="padding-bottom: 0in;padding-left: 5.4pt;width: 6.65in;padding-right: 5.4pt;padding-top: 0in;border: #c0c0c0" width="638" valign="top">
<p class="MsoNormal" style="text-align: justify;margin: 0in 0in 0pt"><span class="keyword"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;font-size">&#8230;.</span></span></p>
</td>
</tr>
</tbody>
</table>
<p><strong><span style="text-decoration: underline">Removing Duplicates With Filtering</span></strong></p>
<p>To remove duplicates in a mashup, simply merge, join or group results. Sort the combined results (If needed) based on the key field that determines uniqueness to ensure that duplicates are contiguous. Use &lt;filter&gt; with a filtering expression that compares the key value of either the preceding or following &#8216;item&#8217; to determine if this &#8216;item&#8217; is unique. The filter expression can use the axis feature in XPath to compare preceding or following items.</p>
<p>Following is a simple &lt;filter&gt; statement:</p>
<p>&lt;filter inputvariable=&#8221;$a&#8221; outputvariable=&#8221;$a&#8221; filterexpr=&#8221;/rss/channel/item[contains(title,'Java')" /&gt;]</p>
<p>In addition to the default XPath axis &#8211; the child axis, you can refer to previous nodes (<em>preceding / preceding-sibling</em>), following nodes (<em>following / following-sibling</em>), the parent node, ancestor nodes, descendant nodes and others. You can also use wildcards like <em>following::* </em>or <em>following::node()</em> to identify all following nodes of any name.</p>
<p>The following example checks the title of each item (after merging results from two RSS services) to remove duplicates:</p>
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="638" valign="top">  &lt;!&#8211; merge the results &#8211;&gt;</td>
</tr>
<tr>
<td width="638" valign="top">  &lt;merge inputvariables=&#8221;$feed1, $feed2&#8243; outputvariable=&#8221;result&#8221;/&gt;</td>
</tr>
<tr>
<td width="638" valign="top">  &lt;!&#8211; filter for unique items based on title &#8211;&gt;</td>
</tr>
<tr>
<td width="638" valign="top">  &lt;filter inputvariable=&#8221;$result&#8221; outputvariable=&#8221;$result&#8221;</td>
</tr>
<tr>
<td width="638" valign="top">    filterexpr=&#8221;/rss/channel/item[not(preceding::title = ./title)]&#8221; /&gt;</td>
</tr>
</tbody>
</table>
<p>I shall cover some more techniques in the second part of this blog. The Advanced Mashup Techniques are detailed in <a href="http://www.openmashup.org/omadocs/v1.0/emml/advMashupIntro.html">http://www.openmashup.org/omadocs/v1.0/emml/advMashupIntro.html</a>.</p>
<!-- wpms-network-global-inserts -->]]></content:encoded>
			<wfw:commentRss>http://itknowledgeexchange.techtarget.com/enterprise-IT-tech-trends/advanced-mashup-scripting-in-emml-part-i/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mashup Scripting using EMML from OMA</title>
		<link>http://itknowledgeexchange.techtarget.com/enterprise-IT-tech-trends/mashup-scripting-using-emml-from-oma/</link>
		<comments>http://itknowledgeexchange.techtarget.com/enterprise-IT-tech-trends/mashup-scripting-using-emml-from-oma/#comments</comments>
		<pubDate>Thu, 24 Mar 2011 11:46:35 +0000</pubDate>
		<dc:creator>Sasirekha R</dc:creator>
				<category><![CDATA[EMML]]></category>
		<category><![CDATA[Mashup]]></category>
		<category><![CDATA[OMA]]></category>
		<category><![CDATA[Open]]></category>
		<category><![CDATA[Standard]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://itknowledgeexchange.techtarget.com/enterprise-IT-tech-trends/?p=242</guid>
		<description><![CDATA[Mashup Scripting using EMML from OMA Open Mashup Alliance (OMA) is a consortium aimed at successful use of Enterprise Mashup technologies and adoption of an open language &#8211; Enterprise Mashup Markup Language (EMML) &#8211; that promotes Enterprise Mashup interoperability and portability. EMML is an XML language to describe the processing flow for a mashup. The [...]]]></description>
				<content:encoded><![CDATA[<p><strong>Mashup Scripting using EMML from OMA</strong></p>
<p>Open Mashup Alliance (OMA) is a consortium aimed at successful use of Enterprise Mashup technologies and adoption of an open language &#8211; Enterprise Mashup Markup Language (EMML) &#8211; that promotes Enterprise Mashup interoperability and portability. EMML is an XML language to describe the processing flow for a mashup. The OMA provides the EMML schema and also a reference runtime implementation that processes mashup scripts written in EMML.<span id="more-242"></span></p>
<p>The EMML package can be downloaded from <a href="http://www.openmashup.org/download" target="_blank">http://www.openmashup.org/download</a>. Before installing the EMML package, install the JDK (1.5 or above) and Tomcat 5.5 or another compatible application server. EMML samples can be downloaded from <a href="http://www.openmashup.org/download" target="_blank">http://www.openmashup.org/download</a>.</p>
<p>You can create a mashup script using any XML editor. Adding the EMML schema, <em>emml-install</em>/EMMLSpec.xsd, to the XML editor &#8211; enables the editor to provide syntax assistance and validation. A Mashup script &#8211; an XML file that uses EMML &#8211; is created to define:</p>
<ul>
<li>the services and operations to be used by the mashup and</li>
<li>the actions to apply to service responses to construct the results of the mashup.</li>
</ul>
<p>Following is a simple mashup script that invokes a service (most viewed stories) and filters the output (business).</p>
<address>&lt;?xml version=&#8221;1.0&#8243;?&gt;</address>
<address>&lt;mashup name=&#8221;NewsStories&#8221;</address>
<address>    xmlns=&#8221;www.openemml.org/2009-04-15/EMMLSchema&#8221;</address>
<address>    xsi:schemaLocation=&#8221;www.openemml.org/2009-04-15/EMMLSchema</address>
<address>      ../schema/EMMLSpec.xsd&#8221;</address>
<address>    xmlns:xsi=&#8221;http://www.w3.org/2001/XMLSchema-instance&#8221; &gt;</address>
<address>  &lt;variables&gt;</address>
<address>    &lt;variable name=&#8221;stories&#8221; type=&#8221;document&#8221;/&gt;</address>
<address>  &lt;/variable&gt;</address>
<address>  &lt;output name=&#8221;result&#8221; type=&#8221;document&#8221;/&gt;</address>
<address>  &lt;directinvoke endpoint=&#8221;http://rss.news.yahoo.com/rss/mostviewed&#8221;</address>
<address>      method=&#8221;GET&#8221; outputvariable=&#8221;stories&#8221;/&gt;</address>
<address>  &lt;filter inputvariable=&#8221;stories&#8221;</address>
<address>      filterexpr=&#8221;matches($stories/rss/channel/item/description,&#8217;Business&#8217;)&#8221;</address>
<address>      outputvariable=&#8221;result&#8221;/&gt;</address>
<address>&lt;/mashup&gt;</address>
<p> Two categories of elements are added to mashups:</p>
<ul>
<li><strong>Declarations</strong> for variables, parameters, data sources, namespaces, macros or metadata.</li>
<li><strong>Statements</strong> that perform actions &#8211; to invoke services, control flow, act on the results or use custom statements defined in macros &#8211; for the mashup.</li>
</ul>
<p><strong>Variables and Parameters</strong></p>
<p>Variables and parameters <strong>must</strong> be declared (explicitly or implicitly) before they are used in any other EMML statement. Variables and parameters have a name, a datatype, data (a value), a scope (global or local) and optionally a default value. Variables can be created implicitly by assigning a name to the outputvariable attribute for any statement.</p>
<ul>
<li>&lt;input&gt; is an optional element to declare parameters that can be used as input to mashup, operation or macro.</li>
<li>&lt;output&gt; is the parameter that holds the result returned from a mashup, operation or macro.</li>
<li>&lt;variables&gt; is a list of variables to use for input, output or to hold any intermediate data or document content in the flow of mashup processing.</li>
</ul>
<p><strong>Accessing a database</strong></p>
<p>To invoke SQL queries or statements, &lt;datasource&gt; with connection information for the database must be declared.  Each &lt;datasource&gt; declaration must have a URL that defines the JDBC connection and database login information (or) a JNDI name for connections to the database. Connection information can also be set dynamically as follows:</p>
<address>&lt;datasource url=&#8221;$system.datasourceURL&#8221;</address>
<address>   driverclassname=&#8221;$system.datasourceDriver&#8221;</address>
<address>   username=&#8221;$system.dbUserName&#8221; password=&#8221;$system.dbPassword&#8221;/&gt;</address>
<p>Note that, to use a &lt;datasource&gt;, you must add the JAR files containing JDBC drivers for your data source to the EMML Reference Runtime Engine classpath and add configuration for these drivers.</p>
<p>Use <a href="http://www.openmashup.org/omadocs/v1.0/emml/sqlRefCmd.html#jbid093NEN003UI">&lt;sql&gt;</a>to issue individual SQL queries to a data source &#8211; for example:</p>
<address>&lt;sql query=&#8221;select CUST_ID, CUST_NAME from CUSTOMERS</address>
<address>  where CUST_ID = :customerId&#8221; outputvariable=&#8221;$customers&#8221; /&gt;</address>
<p>Use <a href="http://www.openmashup.org/omadocs/v1.0/emml/sqlUpdateRefCmd.html#jbid093NF0AA0HT">&lt;sqlUpdate&gt;</a> to execute any other SQL statement against a data source &#8211; for example:</p>
<address>&lt;sqlUpdate statement=&#8221;update credentials set</address>
<address>    user_id = &#8216;newuser&#8217; where id = &#8217;1004&#8242;&#8221;</address>
<address>    outputvariable=&#8221;$updateResult&#8221;/&gt;</address>
<p>&lt;sql&gt; and &lt;sqlUpdate&gt; can also be used to invoke stored procedures. SQL transactions can be managed using <a href="http://www.openmashup.org/omadocs/v1.0/emml/sqlBeginTransactionRefCmd.html#jbid093NF0GA0PF">&lt;sqlBeginTransaction&gt;</a>, <a href="http://www.openmashup.org/omadocs/v1.0/emml/sqlCommitRefCmd.html#jbid093NF0H0FPN">&lt;sqlCommit&gt;</a> and <a href="http://www.openmashup.org/omadocs/v1.0/emml/sqlRollbackRefCmd.html#jbid093NF0I0Z30">&lt;sqlRollback&gt;</a>. EMML currently does not support distributed transactions.</p>
<p><strong>Accessing a Web Service</strong></p>
<p>Using <a href="http://www.openmashup.org/omadocs/v1.0/emml/directinvokeRefCmd.html#jbid093KF0N0TBI">&lt;directinvoke&gt;</a>, you can invoke a publically accessible web service or website. In case of service invocation error, the EMML Reference Runtime Engine returns error information in two built-in variables: faultcode and faultmessage.</p>
<p><strong>Transforming Intermediate Results</strong></p>
<p>The mashup statements that can be used to select specific results, sort results, or otherwise transform the data in variables include:</p>
<ul>
<li><a href="http://www.openmashup.org/omadocs/v1.0/emml/assignRefCmd.html#jbid093KEK00SPF">&lt;assign&gt;</a> &#8211; to assign values or copy part of all of a variable</li>
<li><a href="http://www.openmashup.org/omadocs/v1.0/emml/filterRefCmd.html#jbid093KF40802L">&lt;filter&gt;</a> &#8211; to filter a variable</li>
<li><a href="http://www.openmashup.org/omadocs/v1.0/emml/groupRefCmd.html#jbid093KG0J03BL">&lt;group&gt;</a> &#8211; to group data in a variable and optionally filter or sort</li>
<li><a href="http://www.openmashup.org/omadocs/v1.0/emml/sortRefCmd.html#jbid093NEJ00AY4">&lt;sort&gt;</a> &#8211; to sort a variable</li>
<li><a href="http://www.openmashup.org/omadocs/v1.0/emml/annotateRefCmd.html#jbid093KE4006Y4">&lt;annotate&gt;</a> &#8211; to add nodes and data to a variable</li>
<li><a href="http://www.openmashup.org/omadocs/v1.0/emml/xsltRefCmd.html#jbid0985F0DJ0UI">&lt;xslt&gt;</a> &#8211; to transform data using XSLT stylesheets</li>
</ul>
<p>Additionally, XPath functions can be used to transform data, change datatypes, perform calculations or determine boolean conditions.</p>
<p>Using the <a href="http://www.openmashup.org/omadocs/v1.0/emml/scriptRefCmd.html#jbidemmlrefscript">&lt;script&gt;</a> statement, user-defined code can be executed within mashup processing. JavaScript and JRuby 1.0 are the scripting languages currently supported.</p>
<p><strong>Combining Service Results</strong></p>
<p>Results of two or more component services can be combined using:</p>
<p>1. <a href="http://www.openmashup.org/omadocs/v1.0/emml/mergeRefCmd.html#jbid093NE0F0Q30">&lt;merge&gt;</a> &#8211; to merge service results that have homogenous, document-type structures (similar to database union operation)</p>
<p>2. <a href="http://www.openmashup.org/omadocs/v1.0/emml/joinRefCmd.html#jbid093NC0VK0YK">&lt;join&gt;</a> &#8211; to define how the data from disparate variables should be joined. Variable data should have repetitive structures that are related based on some criteria &#8211; say, the foreign keys that define the relation. It is comparable to inner joins for databases.</p>
<p>3. <a href="http://www.openmashup.org/omadocs/v1.0/emml/outerJoinXquery.html#jbid0824CM00T5Z">XQuery</a> &#8211; to obtain outer joins in mashups.</p>
<p><strong>Constructing the Mashup Result, Input or Intermediate Variables</strong></p>
<p>The following statements can be used to define the structure of the result that is returned from a mashup, or to construct complex input parameters or any complex intermediate variable:</p>
<ul>
<li><a href="http://www.openmashup.org/omadocs/v1.0/emml/constructorRefCmd.html#jbid093KF0G504Y">&lt;constructor&gt;</a> to construct a well-formed document.</li>
<li><a href="http://www.openmashup.org/omadocs/v1.0/emml/appendresultRefCmd.html#jbid093KED0I0YK">&lt;appendresult&gt;</a> to add one or more well-formed items to a variable.</li>
<li><a href="http://www.openmashup.org/omadocs/v1.0/emml/selectRefCmd.html#jbid093NE1070QN">&lt;select&gt;</a> (within &lt;mashup&gt;, &lt;operation&gt; or &lt;macro&gt;)</li>
<li>&lt;select&gt; within a &lt;join&gt; command to select specific items within a set of repeating items. See <a href="http://www.openmashup.org/omadocs/v1.0/emml/joinRefCmd.html#jbid093NC0VK0YK">&lt;join&gt;</a>.</li>
<li><a href="http://www.openmashup.org/omadocs/v1.0/emml/groupRefCmd.html#jbid093KG0J03BL">&lt;group&gt;</a> constructs repeating structures from sorted and optionally filtered node sets.</li>
</ul>
<p>Literal XML can also be used to construct the contents of variables or input parameters.</p>
<p><strong>Controlling Mashup Processing Flow</strong></p>
<p>The mashup commands to control the processing flow for a mashup operation includes:</p>
<ul>
<li><a href="http://www.openmashup.org/omadocs/v1.0/emml/ifRefCmd.html#jbid093KG0P094B">&lt;if&gt;</a> for conditional processing</li>
<li><a href="http://www.openmashup.org/omadocs/v1.0/emml/forRefCmd.html#jbid093KG0G0FAX">&lt;for&gt;</a> for looping based on simple counts</li>
<li><a href="http://www.openmashup.org/omadocs/v1.0/emml/foreachRefCmd.html#jbid093KG0A0UTS">&lt;foreach&gt;</a> for looping through a set of nodes. This can be simple iterative loops or loops can be processed concurrently.</li>
<li><a href="http://www.openmashup.org/omadocs/v1.0/emml/whileRefCmd.html#jbid093NF0NA0E9">&lt;while&gt;</a> for looping as long as a condition is true</li>
<li><a href="http://www.openmashup.org/omadocs/v1.0/emml/breakRefCmd.html#jbid093KF0F04E9">&lt;break&gt;</a> to forceably stop looping statements</li>
<li><a href="http://www.openmashup.org/omadocs/v1.0/emml/multiFlows.html#jbid073EBC00K30">Concurrent Mashup Processing Flows</a> using <a href="http://www.openmashup.org/omadocs/v1.0/emml/parallelRefCmd.html#jbid093NE0MD0RO">&lt;parallel&gt;</a>.</li>
<li><a href="http://www.openmashup.org/omadocs/v1.0/emml/sqlTransactionCmds.html#jbid0946BA00Q5Z">SQL Transactions</a> using <a href="http://www.openmashup.org/omadocs/v1.0/emml/sqlBeginTransactionRefCmd.html#jbid093NF0GA0PF">&lt;sqlBeginTransaction&gt;</a>, <a href="http://www.openmashup.org/omadocs/v1.0/emml/sqlCommitRefCmd.html#jbid093NF0H0FPN">&lt;sqlCommit&gt;</a> and <a href="http://www.openmashup.org/omadocs/v1.0/emml/sqlRollbackRefCmd.html#jbid093NF0I0Z30">&lt;sqlRollback&gt;</a>.</li>
</ul>
<p>Using <a href="http://www.openmashup.org/omadocs/v1.0/emml/emml-metaRefCmd.html#jbid093KF0UL07U">&lt;emml-meta&gt;</a> and <a href="http://www.openmashup.org/omadocs/v1.0/emml/user-metaRefCmd.html#jbidemmlrefuser-meta">&lt;user-meta&gt;</a>, metadata can be declared to allow setting of processing flags or pass other information to applications that will use a mashup, use a macro or handle mashup results.</p>
<p>EMML, like any other tag language, is quite simple to use and can be used by business users to create mashups quickly. EMML also supports various statements and commands that can be used to create complex Mashups depending on the needs of the user.</p>
<!-- wpms-network-global-inserts -->]]></content:encoded>
			<wfw:commentRss>http://itknowledgeexchange.techtarget.com/enterprise-IT-tech-trends/mashup-scripting-using-emml-from-oma/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
