<?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>greenbird Integration Technology - smart integration solutions.</title>
	<atom:link href="http://www.greenbird.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.greenbird.com</link>
	<description>SOA, integration, middleware and advanced technologies</description>
	<lastBuildDate>Tue, 15 May 2012 18:14:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Groovy</title>
		<link>http://www.greenbird.com/2012/04/groovy/</link>
		<comments>http://www.greenbird.com/2012/04/groovy/#comments</comments>
		<pubDate>Fri, 27 Apr 2012 11:56:47 +0000</pubDate>
		<dc:creator>fredrik</dc:creator>
				<category><![CDATA[Meetup]]></category>

		<guid isPermaLink="false">http://www.greenbird.com/?p=2452</guid>
		<description><![CDATA[Date: 16:00 June 20th, 2012 Location: greenbird HQ Speaker: Steinar Haugen // greenbird Integration Technology AS Steinar will do a presentation of Groovy and bring the latest Groovy news to the table. Steinar presenterer Groovy og forteller om kule og nye ting som skjer i Groovy-verden.]]></description>
			<content:encoded><![CDATA[<p>Date: <strong>16:00 June 20th, 2012</strong><br />
Location: <strong>greenbird HQ</strong><br />
Speaker: <strong>Steinar Haugen // greenbird Integration Technology AS</strong><br />
</BR><br />
Steinar will do a presentation of Groovy and bring the latest Groovy news to the table.<br />
Steinar presenterer Groovy og forteller om kule og nye ting som skjer i Groovy-verden.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.greenbird.com/2012/04/groovy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AMR communication // AMS kommunikasjon</title>
		<link>http://www.greenbird.com/2012/04/amr-communication-technologies/</link>
		<comments>http://www.greenbird.com/2012/04/amr-communication-technologies/#comments</comments>
		<pubDate>Fri, 27 Apr 2012 11:36:34 +0000</pubDate>
		<dc:creator>fredrik</dc:creator>
				<category><![CDATA[Meetup]]></category>

		<guid isPermaLink="false">http://www.greenbird.com/?p=2446</guid>
		<description><![CDATA[Date: 16:00 June 6th, 2012 Location: greenbird HQ Speaker: Kjartan Mjøsund // greenbird Integration Technology AS Kjartan will talk about communication technologies used smart metering and smart grid solutions. Kjartan holder et innlegg om fordeler og ulemper med ulike kommunikasjonsteknologier for AMS og smarte nett.]]></description>
			<content:encoded><![CDATA[<p>Date: <strong>16:00 June 6th, 2012</strong><br />
Location: <strong>greenbird HQ</strong><br />
Speaker: <strong>Kjartan Mjøsund // greenbird Integration Technology AS</strong><br />
</BR><br />
Kjartan will talk about communication technologies used smart metering and smart grid solutions.<br />
Kjartan holder et innlegg om fordeler og ulemper med ulike kommunikasjonsteknologier for AMS og smarte nett. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.greenbird.com/2012/04/amr-communication-technologies/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Integration between Mule and ActiveVOS // Integrasjon mellom Mule og ActiveVOS</title>
		<link>http://www.greenbird.com/2012/04/interaction-and-integration-between-mule-and-activevos/</link>
		<comments>http://www.greenbird.com/2012/04/interaction-and-integration-between-mule-and-activevos/#comments</comments>
		<pubDate>Fri, 27 Apr 2012 11:32:45 +0000</pubDate>
		<dc:creator>fredrik</dc:creator>
				<category><![CDATA[Meetup]]></category>

		<guid isPermaLink="false">http://www.greenbird.com/?p=2444</guid>
		<description><![CDATA[Date: 16:00 May 25th, 2012 Location: greenbird HQ Speaker: Arne Seime // greenbird Integration Technology AS Arne will talk about the interaction and integration between Mule and ActiveVOS. Arne forklarer integrasjonsmuligheter og samarbeid mellom MuleESB og BPM plattformen ActiveVOS fra ActiveEndpoints.]]></description>
			<content:encoded><![CDATA[<p>Date: <strong>16:00 May 25th, 2012</strong><br />
Location: <strong>greenbird HQ</strong><br />
Speaker: <strong>Arne Seime // greenbird Integration Technology AS</strong><br />
</BR><br />
Arne will talk about the interaction and integration between Mule and ActiveVOS.<br />
Arne forklarer integrasjonsmuligheter og samarbeid mellom MuleESB og BPM plattformen ActiveVOS fra ActiveEndpoints.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.greenbird.com/2012/04/interaction-and-integration-between-mule-and-activevos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Enterprise architecture and services</title>
		<link>http://www.greenbird.com/2012/04/enterprise-architecture-and-services/</link>
		<comments>http://www.greenbird.com/2012/04/enterprise-architecture-and-services/#comments</comments>
		<pubDate>Wed, 25 Apr 2012 17:12:22 +0000</pubDate>
		<dc:creator>Odd Christian Landmark</dc:creator>
				<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.greenbird.com/?p=2393</guid>
		<description><![CDATA[How can Enterprise Architecture be used to improve service reuse in a Service Oriented Architecture? It is about finding the right granularity of the services, and lifting the focus from the primitive services towards processes and common information concepts. Service orchestration The services you identify, design and implement are dependent on the types of services [...]]]></description>
			<content:encoded><![CDATA[<p>How can Enterprise Architecture be used to improve service reuse in a Service Oriented Architecture? It is about finding the right granularity of the services, and lifting the focus from the primitive services towards processes and common information concepts.</p>
<p><span id="more-2393"></span></p>
<p><strong>Service orchestration</strong></p>
<p>The services you identify, design and implement are dependent on the types of services you want, and how you structure them. Let us assume these layers:</p>
<ul>
<li>process orchestration &#8211; implementing business processes with both automated and manual steps.</li>
<li>activity services &#8211; implementing fully automated processes within broader business processes. The activity services may use information from different information domains, like a payment process would use both services within the “customer” and “order” domain.</li>
<li>information domain services &#8211; implementing operations on information entities, across the system portfolio, using integration services towards several systems and aggregating information.</li>
<li>integration services &#8211; implementing operations on information entities towards a single system.</li>
</ul>
<p>The service registry / repository established in a lot of IT organizations, enables reuse of already implemented services, but that alone tends to drive the actual reuse towards low-level services, like integration services towards specific systems, or quite specialized information aggregation services. The reason for this, is that process and process activity services in most cases are implemented based on a demand from an application development project, while the simpler services handling more basic information objects, implicitly match the needs for many projects to come. In order to get a higher potential for reuse of process / activity services, one needs to broaden the perspective to more application developments and, even more importantly, process improvements, at once.</p>
<p><strong>The link between EA and SOA</strong></p>
<p>EA is about planning ahead to reach a target architecture that captures the needs of the whole business, the needed capabilities of IT, and using that to scope and define the right projects, that iteratively will implement that target &#8211; through both business and IT initiatives.</p>
<p>SOA is about defining business-oriented functionality, which encapsulates what IT delivers to the business &#8211; as a whole. The most successful implementations of SOA is where you “think big, but implement small”, hence iterative implementation of the big picture.</p>
<p>The link between EA and SOA is obvious, especially when it comes the harmonization of needs across the business, and the holistic approach to IT.</p>
<p>The models within EA are the “tools” that enables the identification of the <em>right </em>services within a service oriented architecture. Examples of this are:</p>
<ul>
<li>a process map, and the process design of business critical processes, can be used to find the process and activity services that would create most value for the business, f.ex. by explicitly enabling most reuse</li>
<li>conceptual and logical information models within the information architecture, should be the basis for a common object model in a SOA context, hence also  information domain / information entity services.</li>
<li>in order to find the right consumers of services, and the right providers of system interfaces, used by integrations services, functional application architecture and system architecture are two important enterprise-wide architectural perspectives.</li>
</ul>
<p>By identifying which different types of information entities that flow through the business processes, and establishing a common ground for important information objects, you have a very good starting point for defining information services that could be reused in those processes. F.ex. if a customer, seen from a business perspective, is either a private or a corporate customer, and these two types of customers have little in common, the service composition should reflect that, hence a service simply called “CustomerService” would probably be inadequate and very difficult to make reusable.</p>
<p><strong>EA is an enabler for reusable process activity services</strong></p>
<p>An organization must be dedicated to enterprise architecture work if it wants to take advantage of the possible EA/SOA synergy effects. Both the business units and the IT departments should think of enterprise architecture as a way of defining the goals the business and IT want to achieve and, more specifically, which processes they want to improve.</p>
<div id="attachment_2397" class="wp-caption alignnone" style="width: 560px"><a href="http://www.greenbird.com/wp-content/uploads/2012/04/process-map1.jpg"><img class=" wp-image-2397  " src="http://www.greenbird.com/wp-content/uploads/2012/04/process-map1.jpg" alt="process map with value chains" width="550" height="275" /></a><p class="wp-caption-text">process map with value chains</p></div>
<ul>
<li>From the to-be process map, one needs to choose which value chains or which business processes from different value chains that are to be implemented. An insurance company may choose to improve the whole value chain for car insurance customers, or choose to improve the claim handling for all insurance types.</li>
<li>Business processes that, from a conceptual perspective, have overlapping sub-process or process activity definitions should be identified, so that coherent processes could be improved together, either in a single project or through coordinated projects.</li>
<li>Then these processes must be designed in more detail, from a business perspective, with the emphasis on how they want things to work, not the limitations of today.</li>
<li>These processes must then be analyzed together, in what I call a process / activity matrix</li>
</ul>
<ol>
<ul>
<li>similar activities in different processes can now be identified, and these represent potentially common activities, hence reusable activity <em>services. </em>For a public organization managing a lot of different applications (building permits, kindergarten applications etc.), there are some decisions that could be automated, while others need to stay manual. The activity automation candidates here would imply good candidates for service reuse as well.</li>
<li>some activities in the different processes may be doing some common “sub-activities”, but differ too much to constitute a potential reuse &#8211; in this case the activities should be modularized or consolidated, in order to find the common activities, hence the reusable services with the most adequate granularity. Within a manual decision process, the activities that publish or send the decisions may still be automated, hence reused from the automated decision activity.</li>
</ul>
</ol>
<div id="attachment_2398" class="wp-caption alignnone" style="width: 560px"><a href="http://www.greenbird.com/wp-content/uploads/2012/04/process-activity-matrix.jpg"><img class=" wp-image-2398 " src="http://www.greenbird.com/wp-content/uploads/2012/04/process-activity-matrix.jpg" alt="process / activity matrix" width="550" height="161" /></a><p class="wp-caption-text">process / activity matrix</p></div>
<p><strong>Using tools to further enhance reuse potential</strong></p>
<p>It is impossible to discuss such potentially complex intellectual tasks without mentioning tooling. If all business processes, their sub-processes, their automatic and manual activities, are modeled and designed in the same tool, and it is all well structured in a common repository, the steps mentioned above will become much smoother.</p>
<p>Consider this scenario: A business analyst in a bank models the loan application process, in which he defines an activity called “evaluate customer”. That activity is later linked to a service that implements this evaluation, which implies a relation to a credit check service as well. Somewhere else in the same bank, another business analyst models the customer registration process, where the need for screening the customers becomes apparent. Then he sees the “evaluate customer” activity in the repository of business processes, so he decides to put that activity in his own process. Then he has implicitly created a relation between his process and a couple of existing or planned activity services, which means that those services are going to be reused.</p>
<p><strong>Enterprise architecture &#8211; planning &#8211; improvements &#8211; services</strong></p>
<p>So, back to where we started: enabling service reuse through enterprise-wide architecture activities &#8211; can you achieve this in practice?</p>
<p>As I’ve already mentioned, it requires dedication from both business representatives and IT architects, and clear mandates to those who are in between: enterprise architects. If EA is used as the basis for project portfolio management, and the organization is serious about business process management and service oriented architecture, taking advantage of the link between EA and SOA is just the natural step for harvesting the actual benefits of being service oriented.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.greenbird.com/2012/04/enterprise-architecture-and-services/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>greenbird joins the Norwegian Smartgrid Centre</title>
		<link>http://www.greenbird.com/2012/04/greenbird-joins-smartgrid-centr/</link>
		<comments>http://www.greenbird.com/2012/04/greenbird-joins-smartgrid-centr/#comments</comments>
		<pubDate>Wed, 25 Apr 2012 15:30:30 +0000</pubDate>
		<dc:creator>Thorsten Heller</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[integration]]></category>
		<category><![CDATA[middleware]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[smart grid]]></category>
		<category><![CDATA[smart integration]]></category>
		<category><![CDATA[smart metering]]></category>

		<guid isPermaLink="false">http://www.greenbird.com/?p=2373</guid>
		<description><![CDATA[greenbird Solutions AS joins the Norwegian Smartgrid Centre &#8211; the national centre for smart grid technology. The Norwegian Smartgrid Centre works on a broad front to ensure that society has access to the necessary expertise in connection with the establishment of, and adaptation to, a new, improved energy supply system. The goal is a safe, [...]]]></description>
			<content:encoded><![CDATA[<p>greenbird Solutions AS joins the Norwegian Smartgrid Centre &#8211; the national centre for smart grid technology.</p>
<p><a href="http://www.greenbird.com"><img class="alignnone size-full wp-image-649" title="Smartgrid Center" src="http://www.greenbird.com/wp-content/uploads/2012/04/smartgridsenter.jpg" alt="" /></a></p>
<p>The Norwegian Smartgrid Centre works on a broad front to ensure that society has access to the necessary expertise in connection with the establishment of, and adaptation to, a new, improved energy supply system. The goal is a safe, efficient and environmentally friendly system providing better utilization of the electricity supply grid and increased use of renewable energy sources.</p>
<p>greenbird Solutions AS provides an advanced SOA based integration middleware platform for smart metering (rollout and operations) and smart grid solutions.</p>
<p>greenbird will bring in its experience and expert knowledge within smart integration solutions to contribute to the Smartgrid Centre&#8217;s activities such as research, teaching, business development and commercialisation, laboratory, testing and demonstration projects, network building or information.</p>
<p>For more info, please visit <a class="commonLink" href="http://www.greenbird.com/smart-metering/">greenbird&#8217;s smart metering and smart grid focus area</a> or take a look at <a class="commonLink" href="http://smartgrids.no/content/103/About-the-Centre">the Norwegian Smartgrid Cntre&#8217;s webside [external link].</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.greenbird.com/2012/04/greenbird-joins-smartgrid-centr/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Smart metering data quality with Talend Open Studio // Datakvalitet for AMS med Talend Open Studio</title>
		<link>http://www.greenbird.com/2012/04/talend-and-how-its-used-in-project-zalo/</link>
		<comments>http://www.greenbird.com/2012/04/talend-and-how-its-used-in-project-zalo/#comments</comments>
		<pubDate>Wed, 25 Apr 2012 15:01:58 +0000</pubDate>
		<dc:creator>fredrik</dc:creator>
				<category><![CDATA[Meetup]]></category>

		<guid isPermaLink="false">http://www.greenbird.com/?p=2426</guid>
		<description><![CDATA[Date: 16:00 May 9th, 2012 Location: greenbird HQ Speaker: Andreas Bade, Christian Nedregård // greenbird Integration Technology AS Andreas and Christian will give an introduction to Talend Open Studio and will explain how it was used to build a data quality management system for smart metering. Andreas og Christian gir en innføring i Talend Open [...]]]></description>
			<content:encoded><![CDATA[<p>Date: <strong>16:00 May 9th, 2012</strong><br />
Location: <strong>greenbird HQ</strong><br />
Speaker: <strong>Andreas Bade, Christian Nedregård // greenbird Integration Technology AS</strong><br />
</BR><br />
Andreas and Christian will give an introduction to Talend Open Studio and will explain how it was used to build a data quality management system for smart metering.<br />
Andreas og Christian gir en innføring i Talend Open Studio og hvordan teknologien har blitt brukt for å utvikle en løsning for datakvalitet og strukturdatahåndtering for AMS. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.greenbird.com/2012/04/talend-and-how-its-used-in-project-zalo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Consulting lessons, part 1 // konsulentregler, del 1</title>
		<link>http://www.greenbird.com/2012/04/consulting-lessons-part-1/</link>
		<comments>http://www.greenbird.com/2012/04/consulting-lessons-part-1/#comments</comments>
		<pubDate>Wed, 25 Apr 2012 15:00:45 +0000</pubDate>
		<dc:creator>fredrik</dc:creator>
				<category><![CDATA[Meetup]]></category>

		<guid isPermaLink="false">http://www.greenbird.com/?p=2419</guid>
		<description><![CDATA[Date: 16:00 April 25th, 2012 Location: greenbird HQ Speaker: Thorsten Heller // greenbird Integration Technology AS Thorsten will present some general consulting lessons he has put toghether over the last years. Thorsten presenterer et utvalg av &#8220;sine&#8221; konsulentregler som han har skrevet ned de siste årene. alt fra profeter, windmøller, elefanter og krokodiller&#8230;.]]></description>
			<content:encoded><![CDATA[<p>Date: <strong>16:00 April 25th, 2012</strong><br />
Location: <strong>greenbird HQ</strong><br />
Speaker: <strong>Thorsten Heller // greenbird Integration Technology AS</strong><br />
</BR><br />
Thorsten will present some general consulting lessons he has put toghether over the last years.<br />
Thorsten presenterer et utvalg av &#8220;sine&#8221; konsulentregler som han har skrevet ned de siste årene. alt fra profeter, windmøller, elefanter og krokodiller&#8230;.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.greenbird.com/2012/04/consulting-lessons-part-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Technebies</title>
		<link>http://www.greenbird.com/2012/04/technebies/</link>
		<comments>http://www.greenbird.com/2012/04/technebies/#comments</comments>
		<pubDate>Tue, 24 Apr 2012 11:44:37 +0000</pubDate>
		<dc:creator>fredrik</dc:creator>
				<category><![CDATA[Meetup]]></category>

		<guid isPermaLink="false">http://www.greenbird.com/?p=2449</guid>
		<description><![CDATA[Date: 16:00 April 11th, 2012 Location: greenbird HQ Speaker: Steinar Haugen // greenbird Integration Technology AS Steinar presents Technebies &#8211; a solution for testing and measuring programming skills. Steinar presenterer Technebies &#8211; en løsning for å teste og måle utviklings-skills.]]></description>
			<content:encoded><![CDATA[<p>Date: <strong>16:00 April 11th, 2012</strong><br />
Location: <strong>greenbird HQ</strong><br />
Speaker: <strong>Steinar Haugen // greenbird Integration Technology AS</strong><br />
</BR><br />
Steinar presents Technebies &#8211; a solution for testing and measuring programming skills.<br />
Steinar presenterer Technebies &#8211; en løsning for å teste og måle utviklings-skills.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.greenbird.com/2012/04/technebies/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Data Quality for Smart Metering</title>
		<link>http://www.greenbird.com/2012/04/data-quality-for-smart-metering/</link>
		<comments>http://www.greenbird.com/2012/04/data-quality-for-smart-metering/#comments</comments>
		<pubDate>Tue, 03 Apr 2012 17:35:08 +0000</pubDate>
		<dc:creator>Thorsten Heller</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[data quality]]></category>
		<category><![CDATA[integration]]></category>
		<category><![CDATA[smart integration]]></category>
		<category><![CDATA[smart metering]]></category>
		<category><![CDATA[talend]]></category>

		<guid isPermaLink="false">http://www.greenbird.com/?p=2350</guid>
		<description><![CDATA[greenbird is developing an adaptable solution platform to analyze and manage data quality for smart metering rollout and smart metering operations. Utilizing greenbird Energetics and Talend Open Studio for Data Quality, greenbird&#8217;s Smart Metering Data Quality Platform collects information from core business applications (CIS, NIS, MDM, AM, etc.) profiles and analyzes data generates metrics monitors [...]]]></description>
			<content:encoded><![CDATA[<p>greenbird is developing an adaptable solution platform to analyze and manage data quality for smart metering rollout and smart metering operations.<br />
<a href="http://www.greenbird.com"><img class="alignnone size-full wp-image-649" title="greenbird Smart Metering Data Quality Platform" src="http://www.greenbird.com/wp-content/uploads/2012/04/quality-control.jpg" width="200" alt="" /></a><br />
Utilizing <a class="commonLink" href="http://www.greenbird.com/energetics-platform/">greenbird Energetics</a> and Talend Open Studio for Data Quality, greenbird&#8217;s Smart Metering Data Quality Platform</p>
<ul>
<li>collects information from core business applications (CIS, NIS, MDM, AM, etc.)</li>
<li>profiles and analyzes data</li>
<li>generates metrics</li>
<li>monitors and reports data quality</li>
</ul>
<p>greenbird&#8217;s Smart Metering Data Quality Platform helps DSOs, grid companies and utilities to overcome data quality issues and integration challenges with smart metering rollout and smart metering operations.</p>
<p>For more info regarding greenbird&#8217;s Smart Metering Data Quality Platform, please contact <a class="commonLink" href="mailto:info@greenbird.com">info[a]greenbird.com</a>.    </p>
]]></content:encoded>
			<wfw:commentRss>http://www.greenbird.com/2012/04/data-quality-for-smart-metering/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adding JUnit support for webMethods integration server</title>
		<link>http://www.greenbird.com/2012/02/adding-junit-support-for-webmethods-integration-server/</link>
		<comments>http://www.greenbird.com/2012/02/adding-junit-support-for-webmethods-integration-server/#comments</comments>
		<pubDate>Sat, 25 Feb 2012 21:00:09 +0000</pubDate>
		<dc:creator>Christian Nedregård</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[integration]]></category>
		<category><![CDATA[JUnit]]></category>
		<category><![CDATA[soa]]></category>
		<category><![CDATA[testing]]></category>
		<category><![CDATA[webmethods]]></category>

		<guid isPermaLink="false">http://www.greenbird.com/?p=2094</guid>
		<description><![CDATA[greenbird has created a simple JUnit-based framework to enable effortless and comprehensive unit- and functional testing of webMethods Integration Server Flow elements. Introduction greenbird is working with Europe’s leading Credit Management Services company, Intrum Justitia, to create a SOA enabled integration solution targeting the energy industry in Norway. The solution expose a set of generic [...]]]></description>
			<content:encoded><![CDATA[<p>greenbird has created a simple JUnit-based framework to enable effortless and comprehensive unit- and functional testing of webMethods Integration Server Flow elements. </p>
<p><span id="more-2094"></span><br />
<strong>Introduction</strong><br />
greenbird is <a title="Intrum Justitia" href="http://www.greenbird.com/showcase/intrum/" target="_blank">working with</a> Europe’s leading Credit Management Services company, Intrum Justitia, to create a SOA enabled integration solution targeting the energy industry in Norway.<br />
The solution expose a set of generic APIs plus a number of client specific adapters and integrates with a back end debt collection system by exchanging flat files. A large amount of integration points and data transformations are involved.</p>
<p>The solution is implemented on <a href="http://www.softwareag.com/corporate/products/wm/application_integration/integration_server/overview/default.asp">webMethods Integration Server</a> from Software AG, a best of breed integration platform with a &#8220;point and click&#8221; based IDE called webMethods Developer.</p>
<p>Integration Server has great support for SOA enablement and application integration. It also has great support for manual testing, including a debugger with stepping and breakpoint capabilities.<br />
It does however not come with built in support for automatic testing.</p>
<p>We are following an agile process and must be able to continuously handle new and changing requirements. Due to the &#8220;point and click&#8221; nature of the Integration Server IDE a lot of manual work is involved when refactoring existing features and adding new ones. It was therefore even more important than usual for us to write robust unit and integration tests to discover bugs and regressions as early as possible.</p>
<p>We wanted to use a testing framework to make the process of writing and maintaining high quality tests as effortless as possible. There are a few commercial frameworks that enables the writing of automatic tests directly in Integration Server but we wanted to leverage existing infrastructure and skill-sets based on Java and the <a href="http://www.junit.org/">JUnit</a> framework. We found an Open Source JUnit based framework called <a href="http://wmunit.sourceforge.net/">wmUnit</a> but the project has been inactive since 2006 and lacked some of the features we wanted. In the end we decided to write a simple framework ourselves.</p>
<p>These were the main requirements for our framework:</p>
<ol>
<li>The tests must be able to run in a <a href="http://en.wikipedia.org/wiki/Continuous_integration">Continuous Integration</a> set up.</li>
<li>We must be able to write the tests as regular JUnit tests.</li>
<li>The plumbing involved when doing remote calls to the Integration Server must be invisible.</li>
<li>It must be very easy to produce input data.</li>
<li>It must be very easy to perform assertions on the data returned by the Integration Server.</li>
</ol>
<p>The requirement regarding Continuous Integration support was easily attained by fulfilling the requirement that the tests should be regular JUnit tests. There is a whole plethora of CI products supporting JUnit based projects.</p>
<p>The rest of this article gives an overview of how we implemented the other requirements.</p>
<p><strong>JUnit based tests</strong></p>
<p>We created a generic JUnit based superclass that makes the utilities described below easily available for test subclasses. We based the framework on the latest version of JUnit to ensure that the tests could be written using modern paradigms such as test annotations and <a href="http://code.google.com/p/hamcrest/">Hamcrest matchers</a>.</p>
<p><strong>Transparent log-in and session management</strong></p>
<p>The superclass takes care of logging into the right Integration Server and maintaining a logged on <a href="http://documentation.softwareag.com/webmethods/wmsuites/wmsuite8_ga/Integration_Server_and_Process_Engine/8-0-SP1_Integration_Server_Java_API_Reference/com/wm/app/b2b/client/Context.html">Context</a> for the tests.</p>
<p><strong>Transparent invocation and service selection</strong></p>
<p>By using a <a href="http://en.wikipedia.org/wiki/Convention_over_configuration">convention over configuration</a> approach the superclass is able to determine what Integration Server service is under test simply by analyzing the fully qualified name of the test class.<br />
The convention is that the tests are placed in a package reflecting the folder structure of the service and named according to the following pattern: <em>&lt;service name&gt;Test</em>.<br />
E.g.: To test the service <em>my.folder.structure:myService</em> you create a test with the following fully qualified name: <em>my.folder.structure.MyServiceTest</em>.<br />
This enables tests to invoke the service under test with no configuration what so ever:</p>
<pre class="brush: java; title: ; notranslate">
invoke(inData);
</pre>
<p><strong>Cursor management</strong></p>
<p>Integration Server returns data in <a href="http://documentation.softwareag.com/webmethods/wmsuites/wmsuite8_ga/Integration_Server_and_Process_Engine/8-0-SP1_Integration_Server_Java_API_Reference/com/wm/data/IData.html">IData</a> structures. IData requires that you access data by opening a cursor. The cursor needs to be destroyed after use. The test superclass manages the top level cursor so that simple return values can be looked up without thinking about resource management:</p>
<pre class="brush: java; title: ; notranslate">
IDataCursor responseCursor = invoke(inData);
String result = getString(responseCursor, &quot;result&quot;);
</pre>
<p><strong>IData builder DSL </strong></p>
<p>The IData programming model is very verbose and requires resource management. Building even the simplest multi-level input documents is time consuming and error prone.<br />
As an example we&#8217;re going to build an IData structure reflecting the following document model:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;rootElement&gt;
        &lt;subElement&gt;string value&lt;/subElement&gt;
        &lt;subDocument&gt;
                &lt;name1&gt;value 1&lt;/name1&gt;
                &lt;name2&gt;value 2&lt;/name2&gt;
         &lt;/subDocument&gt;
&lt;/rootElement&gt;
</pre>
<p>This would require the following IData code:</p>
<pre class="brush: java; title: ; notranslate">
IDataCursor cursor = null;

IData subDocument = IDataFactory.create();
cursor = subDocument.getCursor();
IDataUtil.put(cursor, &quot;name1&quot;, &quot;value 1&quot;);
IDataUtil.put(cursor, &quot;name2&quot;, &quot;value 2&quot;);
cursor.destroy();

IData rootElement = IDataFactory.create();
cursor = rootElement.getCursor();
IDataUtil.put(cursor, &quot;subElement&quot;, &quot;string value&quot;);
IDataUtil.put(cursor, &quot;subDocument&quot;, subDocument);
cursor.destroy();

IData document = IDataFactory.create();
cursor = document.getCursor();
IDataUtil.put(cursor, &quot;rootElement&quot;, rootElement);
cursor.destroy();
</pre>
<p>We wanted to be able to easily define smaller documents directly in the test code so we created a simple Java based <a href="http://en.wikipedia.org/wiki/Domain-specific_language">Domain Specific Language</a> (DSL) that hides the complexities of the IData API. Here&#8217;s our example document model implemented using the DSL:</p>
<pre class="brush: java; title: ; notranslate">
IData document = doc(
        el(&quot;rootElement&quot;, doc(
                 el(&quot;subElement&quot;, &quot;string value&quot;)
                .el(&quot;subDocument&quot;, doc(
                         el(&quot;name1&quot;, &quot;value 1&quot;)
                        .el(&quot;name2&quot;, &quot;value 2&quot;)
                ))
        ))
);
</pre>
<p>The DSL enabled us to quickly define documents, elements and lists without worrying about the IData programming api and resource management.</p>
<p><strong>Converting XML to IData</strong></p>
<p>The DSL is suitable for smaller input documents, but when the document size get bigger it&#8217;s usually sensible to maintain the test data separately from the test code. Integration Server provides a couple of services for for converting XML to IData (<em>pub.xml:xmlStringToXMLNode</em> and <em>pub.xml:xmlNodeToDocument</em>). We leveraged these services to enable the tests to store larger input documents in an intuitive XML format. Our example document can simply be saved on the format described above:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;rootElement&gt;
        &lt;subElement&gt;string value&lt;/subElement&gt;
        &lt;subDocument&gt;
                &lt;name1&gt;value 1&lt;/name1&gt;
                &lt;name2&gt;value 2&lt;/name2&gt;
         &lt;/subDocument&gt;
&lt;/rootElement&gt;
</pre>
<p>The input data structure can then be loaded into the test using the following one-liner:</p>
<pre class="brush: java; title: ; notranslate">
IData inputData = toIData(&quot;my_test.xml&quot;);
</pre>
<p><strong>Converting IData to XML for easy querying</strong></p>
<p>Querying an IData document using the Integration Server Java API is just as verbose and error prone as building one. We decided we rather wanted to work with XML since there are many Java tools for querying XML documents.<br />
Again we leveraged an existing Integration Server service (<em>pub.xml:documentToXMLString</em>) to convert incoming IData structures to XML documents.</p>
<p>We chose the <a href="http://docs.oracle.com/javase/6/docs/api/javax/xml/xpath/XPath.html">XPath</a> utility from the Java SDK as our query tool. We also created a little wrapper for it (<em>XPathRoot</em>) to make it simpler to use.</p>
<p>This made it easy for tests to query even the most complex IData document using xpath:</p>
<pre class="brush: java; title: ; notranslate">
String xml = toXML(myData);
XPathRoot docRoot = xPath(xml);
String value2 = docRoot.value(&quot;/rootElement/subDocument/name2&quot;);
</pre>
<p>..or if you prefer a one-liner:</p>
<pre class="brush: java; title: ; notranslate">
String value2 = xPath(toXML(myData)).value(&quot;/rootElement/subDocument/name2&quot;);
</pre>
<p><strong>FTP support</strong></p>
<p>It is very easy to set up an FTP endpoint on Integration Server so that services can be called with the content of files received from clients. Integration Server can also return the result of the service invocation as a file with a name on the pattern <em>&lt;input filename&gt;.out</em>. This makes FTP a viable transport for synchronous <a href="http://en.wikipedia.org/wiki/Request-response">request/response</a> style service invocations.</p>
<p>We created a simple way to test our synchronous FTP endpoints by integrating the <a href="http://commons.apache.org/net/">Apache Commons Net</a> FTP client into our test superclass. Files can now be transmitted and the response received by a one-liner:</p>
<pre class="brush: java; title: ; notranslate">
String resultXml = ftpStore(&quot;file_name_to_put.txt&quot;, inputStream);
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.greenbird.com/2012/02/adding-junit-support-for-webmethods-integration-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

