<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>comSysto.com</title>
	<atom:link href="http://blog.comsysto.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.comsysto.com</link>
	<description>CRM Performance &#124; Enterprise 2.0 &#124; Web 2.0 &#124; Collective Intelligence &#124; SCRUM &#124; Spring &#124; Apache Wicket &#124; Oracle &#124; Business Intelligence &#124; Consulting</description>
	<lastBuildDate>Sat, 21 Aug 2010 11:15:26 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='blog.comsysto.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://1.gravatar.com/blavatar/fcf433742acc8ff8f69d2c46738b2559?s=96&#038;d=http://s2.wp.com/i/buttonw-com.png</url>
		<title>comSysto.com</title>
		<link>http://blog.comsysto.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://blog.comsysto.com/osd.xml" title="comSysto.com" />
	<atom:link rel='hub' href='http://blog.comsysto.com/?pushpress=hub'/>
		<item>
		<title>Java 4-ever</title>
		<link>http://blog.comsysto.com/2010/08/21/java-4-ever/</link>
		<comments>http://blog.comsysto.com/2010/08/21/java-4-ever/#comments</comments>
		<pubDate>Sat, 21 Aug 2010 11:14:54 +0000</pubDate>
		<dc:creator>Daniel Bartl</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.comsysto.com/?p=661</guid>
		<description><![CDATA[One of the most compelling dramas of our time<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.comsysto.com&blog=8304660&post=661&subd=comsysto&ref=&feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>One of the most compelling dramas of our time <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  </p>
<p><span style="text-align:center; display: block;"><a href="http://blog.comsysto.com/2010/08/21/java-4-ever/"><img src="http://img.youtube.com/vi/9QFK1cLhytY/2.jpg" alt="" /></a></span></p><br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/comsysto.wordpress.com/661/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/comsysto.wordpress.com/661/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/comsysto.wordpress.com/661/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/comsysto.wordpress.com/661/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/comsysto.wordpress.com/661/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/comsysto.wordpress.com/661/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/comsysto.wordpress.com/661/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/comsysto.wordpress.com/661/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/comsysto.wordpress.com/661/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/comsysto.wordpress.com/661/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/comsysto.wordpress.com/661/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/comsysto.wordpress.com/661/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/comsysto.wordpress.com/661/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/comsysto.wordpress.com/661/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.comsysto.com&blog=8304660&post=661&subd=comsysto&ref=&feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.comsysto.com/2010/08/21/java-4-ever/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/347118f16dfb4646052129d32fc1a258?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">danielbartl</media:title>
		</media:content>

		<media:content url="http://img.youtube.com/vi/9QFK1cLhytY/2.jpg" medium="image" />
	</item>
		<item>
		<title>Community-Firma</title>
		<link>http://blog.comsysto.com/2010/06/30/community-firma/</link>
		<comments>http://blog.comsysto.com/2010/06/30/community-firma/#comments</comments>
		<pubDate>Wed, 30 Jun 2010 15:35:30 +0000</pubDate>
		<dc:creator>Tomislav Zorc</dc:creator>
				<category><![CDATA[Collective Intelligence]]></category>
		<category><![CDATA[Enterprise 2.0]]></category>
		<category><![CDATA[Social Networking Software]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[Semantic Web]]></category>
		<category><![CDATA[semantisches Web]]></category>
		<category><![CDATA[web 3.0]]></category>

		<guid isPermaLink="false">http://blog.comsysto.com/?p=624</guid>
		<description><![CDATA[Swiss-Re spricht es klar aus: Das Unternehmen als eine real existierende Community braucht die elektronische Abbildung, um den Informationsfluß zwischen den Mitarbeitern im komplexen Marktgeschehen auf Hochtouren zu bringen. http://www.cio.de/strategien/methoden/2235769/?qle=rssfeed_ Langfristiger Markterfolg und keine kurzfristigen ROI-Betrachtungen werden Swiss-Re Recht geben!<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.comsysto.com&blog=8304660&post=624&subd=comsysto&ref=&feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Swiss-Re spricht es klar aus: Das Unternehmen als eine real existierende Community braucht die elektronische Abbildung, um den Informationsfluß zwischen den Mitarbeitern im komplexen Marktgeschehen auf Hochtouren zu bringen.</p>
<p><a href="http://www.cio.de/strategien/methoden/2235769/?qle=rssfeed_">http://www.cio.de/strategien/methoden/2235769/?qle=rssfeed_</a></p>
<p>Langfristiger Markterfolg und keine kurzfristigen ROI-Betrachtungen werden Swiss-Re Recht geben!</p><br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/comsysto.wordpress.com/624/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/comsysto.wordpress.com/624/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/comsysto.wordpress.com/624/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/comsysto.wordpress.com/624/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/comsysto.wordpress.com/624/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/comsysto.wordpress.com/624/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/comsysto.wordpress.com/624/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/comsysto.wordpress.com/624/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/comsysto.wordpress.com/624/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/comsysto.wordpress.com/624/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/comsysto.wordpress.com/624/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/comsysto.wordpress.com/624/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/comsysto.wordpress.com/624/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/comsysto.wordpress.com/624/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.comsysto.com&blog=8304660&post=624&subd=comsysto&ref=&feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.comsysto.com/2010/06/30/community-firma/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fe000e7c795e272018699bd16fb3a708?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Tomislav Zorc</media:title>
		</media:content>
	</item>
		<item>
		<title>Agiler Firmenausflug zum Bodensee</title>
		<link>http://blog.comsysto.com/2010/06/28/agiler-firmenausflug-zum-bodensee/</link>
		<comments>http://blog.comsysto.com/2010/06/28/agiler-firmenausflug-zum-bodensee/#comments</comments>
		<pubDate>Mon, 28 Jun 2010 21:36:48 +0000</pubDate>
		<dc:creator>Daniel Bartl</dc:creator>
				<category><![CDATA[Events & Fun]]></category>

		<guid isPermaLink="false">http://blog.comsysto.com/?p=547</guid>
		<description><![CDATA[Anbei ein paar Fotos von unserem letzten Firmenausflug zum Bodensee. Es war ein wunderschöner Segelausflug und ein entspannendes, nicht allzu windiges, aber dafür ein sehr sonniges Wochenende, das wir auf 3 Segelbooten verbringen durften. Ungefähr genauso wie es auch sein sollte, damit alle Geeks wieder heil nach Hause zurückkommen Leider dürfen wir keine unserer vielen Videoaufnahmen [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.comsysto.com&blog=8304660&post=547&subd=comsysto&ref=&feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Anbei ein paar Fotos von unserem letzten Firmenausflug zum Bodensee. Es war ein wunderschöner Segelausflug und ein entspannendes, nicht allzu windiges, aber dafür ein sehr sonniges Wochenende, das wir auf 3 Segelbooten verbringen durften. Ungefähr genauso wie es auch sein sollte, damit alle Geeks wieder heil nach Hause zurückkommen <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><a rel="attachment wp-att-557" href="http://blog.comsysto.com/2010/06/28/agiler-firmenausflug-zum-bodensee/img_5149/"><img class="size-large wp-image-557 alignnone" title="IMG_5149" src="http://comsysto.files.wordpress.com/2010/06/img_5149.jpg?w=632" alt="" /></a></p>
<p><a rel="attachment wp-att-555" href="http://blog.comsysto.com/2010/06/28/agiler-firmenausflug-zum-bodensee/img_5042/"><img class="size-large wp-image-555 alignnone" title="IMG_5042" src="http://comsysto.files.wordpress.com/2010/06/img_5042.jpg?w=632" alt="" /></a></p>
<p><a rel="attachment wp-att-556" href="http://blog.comsysto.com/2010/06/28/agiler-firmenausflug-zum-bodensee/img_5090/"><img class="alignnone size-large wp-image-556" title="IMG_5090" src="http://comsysto.files.wordpress.com/2010/06/img_5090.jpg?w=632" alt="" /></a></p>
<p><a rel="attachment wp-att-554" href="http://blog.comsysto.com/2010/06/28/agiler-firmenausflug-zum-bodensee/img_5013/"><img class="alignnone size-large wp-image-554" title="IMG_5013" src="http://comsysto.files.wordpress.com/2010/06/img_5013.jpg?w=632" alt="" /></a></p>
<p><a rel="attachment wp-att-553" href="http://blog.comsysto.com/2010/06/28/agiler-firmenausflug-zum-bodensee/dsc_4378/"><img class="alignnone size-large wp-image-553" title="DSC_4378" src="http://comsysto.files.wordpress.com/2010/06/dsc_4378.jpg?w=632" alt="" /></a></p>
<p><a rel="attachment wp-att-551" href="http://blog.comsysto.com/2010/06/28/agiler-firmenausflug-zum-bodensee/dsc_3949/"><img class="alignnone size-large wp-image-551" title="DSC_3949" src="http://comsysto.files.wordpress.com/2010/06/dsc_3949.jpg?w=632" alt="" /></a></p>
<p><a rel="attachment wp-att-550" href="http://blog.comsysto.com/2010/06/28/agiler-firmenausflug-zum-bodensee/bondensee_2010-348/"><img class="alignnone size-large wp-image-550" title="Bondensee_2010.348" src="http://comsysto.files.wordpress.com/2010/06/bondensee_2010-348.jpg?w=632" alt="" /></a></p>
<p><a rel="attachment wp-att-549" href="http://blog.comsysto.com/2010/06/28/agiler-firmenausflug-zum-bodensee/bondensee_2010-316/"><img class="alignnone size-large wp-image-549" title="Bondensee_2010.316" src="http://comsysto.files.wordpress.com/2010/06/bondensee_2010-316.jpg?w=632" alt="" /></a></p>
<p><a rel="attachment wp-att-548" href="http://blog.comsysto.com/2010/06/28/agiler-firmenausflug-zum-bodensee/bondensee_2010-200/"><img class="alignnone size-large wp-image-548" title="Bondensee_2010.200" src="http://comsysto.files.wordpress.com/2010/06/bondensee_2010-200.jpg?w=632" alt="" /></a></p>
<p><a rel="attachment wp-att-552" href="http://blog.comsysto.com/2010/06/28/agiler-firmenausflug-zum-bodensee/dsc_4340/"><img class="alignnone size-large wp-image-552" title="DSC_4340" src="http://comsysto.files.wordpress.com/2010/06/dsc_4340.jpg?w=632" alt="" /></a></p>
<p>Leider dürfen wir keine unserer vielen Videoaufnahmen hier veröffentlichen, weil wir inzwischen alle Rechte an diesen an Disney abgetreten haben. Als Gegenleistung hat Disney daraus aber diesen tollen <a href="http://www.youtube.com/watch?v=QuH1tbEq0r8&amp;" target="_blank">Film</a> für uns gemacht.</p><br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/comsysto.wordpress.com/547/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/comsysto.wordpress.com/547/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/comsysto.wordpress.com/547/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/comsysto.wordpress.com/547/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/comsysto.wordpress.com/547/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/comsysto.wordpress.com/547/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/comsysto.wordpress.com/547/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/comsysto.wordpress.com/547/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/comsysto.wordpress.com/547/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/comsysto.wordpress.com/547/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/comsysto.wordpress.com/547/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/comsysto.wordpress.com/547/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/comsysto.wordpress.com/547/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/comsysto.wordpress.com/547/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.comsysto.com&blog=8304660&post=547&subd=comsysto&ref=&feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.comsysto.com/2010/06/28/agiler-firmenausflug-zum-bodensee/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/347118f16dfb4646052129d32fc1a258?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">danielbartl</media:title>
		</media:content>

		<media:content url="http://comsysto.files.wordpress.com/2010/06/img_5149.jpg" medium="image">
			<media:title type="html">IMG_5149</media:title>
		</media:content>

		<media:content url="http://comsysto.files.wordpress.com/2010/06/img_5042.jpg" medium="image">
			<media:title type="html">IMG_5042</media:title>
		</media:content>

		<media:content url="http://comsysto.files.wordpress.com/2010/06/img_5090.jpg" medium="image">
			<media:title type="html">IMG_5090</media:title>
		</media:content>

		<media:content url="http://comsysto.files.wordpress.com/2010/06/img_5013.jpg" medium="image">
			<media:title type="html">IMG_5013</media:title>
		</media:content>

		<media:content url="http://comsysto.files.wordpress.com/2010/06/dsc_4378.jpg" medium="image">
			<media:title type="html">DSC_4378</media:title>
		</media:content>

		<media:content url="http://comsysto.files.wordpress.com/2010/06/dsc_3949.jpg" medium="image">
			<media:title type="html">DSC_3949</media:title>
		</media:content>

		<media:content url="http://comsysto.files.wordpress.com/2010/06/bondensee_2010-348.jpg" medium="image">
			<media:title type="html">Bondensee_2010.348</media:title>
		</media:content>

		<media:content url="http://comsysto.files.wordpress.com/2010/06/bondensee_2010-316.jpg" medium="image">
			<media:title type="html">Bondensee_2010.316</media:title>
		</media:content>

		<media:content url="http://comsysto.files.wordpress.com/2010/06/bondensee_2010-200.jpg" medium="image">
			<media:title type="html">Bondensee_2010.200</media:title>
		</media:content>

		<media:content url="http://comsysto.files.wordpress.com/2010/06/dsc_4340.jpg" medium="image">
			<media:title type="html">DSC_4340</media:title>
		</media:content>
	</item>
		<item>
		<title>Agiles Projektmanagement mit Scrum</title>
		<link>http://blog.comsysto.com/2010/06/16/agiles-projektmanagement-mit-scrum/</link>
		<comments>http://blog.comsysto.com/2010/06/16/agiles-projektmanagement-mit-scrum/#comments</comments>
		<pubDate>Wed, 16 Jun 2010 15:45:47 +0000</pubDate>
		<dc:creator>Peter Dmytrasz</dc:creator>
				<category><![CDATA[Scrum]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[Projektmanagement]]></category>
		<category><![CDATA[Scrum Product Vision]]></category>
		<category><![CDATA[Agil]]></category>
		<category><![CDATA[Softwareentwicklung]]></category>

		<guid isPermaLink="false">http://blog.comsysto.com/?p=471</guid>
		<description><![CDATA[Zur Einleitung eine Metapher eines Softwareentwicklungsprojekts mit seinen jeweiligen Akteuren Was ist Scrum eigentlich? Nun ja, die Bedeutung von Scrum kann man auf zwei unterschiedliche Weisen erläutern. Einerseits ist Scrum definiert als agiles – also flexibles – Projektmanagementverfahren welches hauptsächlich in Softwareentwicklungsprojekten eingesetzt wird. Hierbei wird viel Wert auf Wissensmanagement – sprich die Weiterbildung der [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.comsysto.com&blog=8304660&post=471&subd=comsysto&ref=&feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><strong>Zur Einleitung eine Metapher eines Softwareentwicklungsprojekts mit seinen jeweiligen Akteuren</strong></p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<p><strong><span style="font-weight:normal;"><a rel="attachment wp-att-538" href="http://blog.comsysto.com/2010/06/16/agiles-projektmanagement-mit-scrum/schaukel-projekt-10-3/"><img class="alignnone size-thumbnail wp-image-538" title="schaukel-projekt-10" src="http://comsysto.files.wordpress.com/2010/06/schaukel-projekt-102.jpg?w=150&#038;h=112" alt="" width="150" height="112" /></a></span></strong></p>
<p><strong> Was ist Scrum eigentlich? </strong></p>
<p>Nun ja, die Bedeutung von Scrum kann man auf zwei unterschiedliche Weisen erläutern. Einerseits ist Scrum definiert als agiles – also flexibles – Projektmanagementverfahren welches hauptsächlich in Softwareentwicklungsprojekten eingesetzt wird. Hierbei wird viel Wert auf Wissensmanagement – sprich die Weiterbildung der Mitarbeiter – gelegt. Der eigentliche Prozess besteht aus mehreren, verschachtelten Schleifen – sogenannten Sprints – in denen Feedback an den Projektleiter – ScrumMaster – zu bisherigen Ergebnissen gegeben wird. Andererseits ist Scrum einfach die deutsche Übersetzung für „Gedränge“, was möglicherweise mit den zahlreichen Projektmitgliedern und deren Koordination in einem Scrum-Projekt zu tun hat.</p>
<p>Entwickelt wurde Scrum durch Ken Schwaber, Jeff Sutherland und Mike Beedle. Beide haben das Vorgehensmodell erstmals 1995 auf der OOPSLA (Object-Oriented Programming, Systems, Languages &amp; Applications) in den USA vorgestellt und in den folgenden Jahren etabliert.</p>
<p>Aufgrund ihrer mangelnden Flexibilität sind die meisten Projektmanagement-Methode für Softwareentwicklungs-Projekte nur beschränkt geeignet. Abhängigkeiten zwischen einzelnen Teams oder Akteuren legen einen starren Zeitplan vor und verhindern Parallelarbeiten. Zusätzlich werden Prozesse, Pläne und Dokumentationen in klassischen Phasenmodellen hoch priorisiert, was wenig Raum für Kreativität und Innovationen lässt.</p>
<p>Im Februar 2001 wurde das Agile Manifest veröffentlicht, welches Werte für die Agile Softwareentwicklung enthält. Dieses Dokument bildet das Fundament der Prozessdefinition von Scrum. Das Agile Manifesst enthält folgende Kernpunkte:</p>
<p>1. Individuen und Interaktionen gelten mehr als Prozesse und Tools.<br />
2. Funktionierende Programme gelten mehr als ausführliche Dokumentation.<br />
3. Die stetige Zusammenarbeit mit dem Kunden steht über Verträgen.<br />
4. Der Mut und die Offenheit für Änderungen steht über dem Befolgen eines festgelegten Plans.</p>
<p><strong><br />
Welche Rollen existieren in Scrum-Projekten?</strong></p>
<p>In einem Scrum-Projekt agieren viele Protagonisten miteinander, um den Projekterfolg zu garantieren. Für Gewöhnlich werden nur drei Rollen in Scrum-Projekten definiert (ScrumMaster, Team und Product Owner). Boris Gloger erweitert dieses Modell jedoch um die Akteure Manager, Customer und End User. Dieses Szenario wird im Folgenden vorgestellt und um diese Rollen sowie deren Verknüpfungen verständlicher darzustellen, wird hier die Metapher einer Filmproduktion verwendet.</p>
<p><em>1. ScrumMaster – Der Regisseur<br />
</em>Der ScrumMaster ist der Leiter des Teams und der Moderator der regelmäßigen Meetings. Er muss das Team vor von Außen einwirkenden Faktoren beschützen, die den Projektverlauf gefährden oder behindern könnten. Seine Aufgabe ist weiterhin, dass die agilen Richtlinien eingehalten und umgesetzt werden. Auf diese Weise steigert er die Produktivität seines Teams.</p>
<p><em>2. Team – Die Schauspieler<br />
</em>Das Team liefert das Endprodukt ab und ist verantwortlich für dessen Qualität. Die Anforderungen des Kunden und der End User werden aufgenommen und analysiert und im Anschluss daran umgesetzt. Im Grunde wird alles, das Design, die Funktionalitäten, die Tests, etc., vom Team implementiert und durchgeführt. Hierzu ist eine enge Zusammenarbeit mit dem Product Owner notwendig, um die strategische Ausrichtung des Softwareentwicklungsprojekts stetig neu zu definieren.</p>
<p><em>3. Manager – Der Studioboss<br />
</em>Das Management ermöglicht eine angemessene Umgebung für das Scrum-Team, definiert Strukturen und erzeugt Stabilität. Es arbeitet eng mit dem ScrumMaster zusammen um die Richtlinien, falls nötig, neu zu skizzieren.</p>
<p><em>4. Customer – Der Produzent<br />
</em>Der Kunde ist typischerweise die Person, welche vom Scrum-Team das finale Endprodukt überreicht bekommt. Kunden sind meist Manager in Unternehmen, welche externe Organisationen damit beauftragen, Produkte für sie zu entwickeln.</p>
<p><em>5. Product Owner – Der Drehbuchautor<br />
</em>Der Product Owner hat in gewissem Sinne die Unternehmens-Brille auf. Er hat eine klare Vision, wie das Produkt aussehen soll und welche Haupt-Charakteristika es erfüllen soll. Nach jedem Sprint wird das Ergebnis durch ihn begutachtet und abgenommen. Die Hauptaufgabe des Product Owners ist es sicherzustellen, dass das Team nur an den, für die Organisation wichtigsten Backlog Items arbeitet und sie dazu mit den notwendigen Informationen zeitnah zu versorgen. Er ist verantwortlich für den Return on Investment – also die Rentabilität.</p>
<p><em>6. End User – Das Publikum<br />
</em>Der End User kann anhand vieler, verschiedener Rollen definiert werden. Er kann eine Person aus der Marketing-Abteilung sein, ein Consultant oder ein Domain-Experte. Die Liste ließe sich beliebig lang erweitern, doch der Punkt ist, der End User kennt die Anforderungen, weil er sie selbst aufgestellt hat. Somit hat er eine gewisse Erwartungshaltung gegenüber dem Produkt und eine fundierte Wissensbasis in dessen Einsatzgebiet. Dieses Wissen gibt er an das Team weiter, welche es für die Umsetzung nutzen sollte.</p>
<p><strong><br />
Welche Artefakte gibt es in Scrum?</strong></p>
<p>Um ein Scrum-Projekt erfolgreich abzuschließen, bedienen sich Scrum-Teams sogenannter Artefakte. Das sind Tools oder Ergebnisse von Aktivitäten welche im Projekt eine professionelle Arbeitsgestaltung ermöglichen. Die effizienteste und effektivste Form der Kommunikation in Projekten ist nach wie vor die face to face-Kommunikation, so dass in diesem Sinne Artefakte mit anderen Kommunikationsformen durch diese ersetzt werden. Die agile Softwareentwicklung beinhaltet ein Artefakt, auf das unter keinen Umständen verzichtet werden kann, nämlich auslieferbaren Code. Da sich die Film-Metapher auch hier zum näheren Verständnis eignet, wird sie auch auf diese Thematik angewendet.</p>
<p><em>1. Impediment Backlog – Die Fehlerliste<br />
</em>In dieser Liste werden Hindernisse und Risiken aufgezeichnet, welche dem Scrum-Team Probleme bereiten könnten. Dem ScrumMaster dient Auflistung dazu, seine nächsten Aktionen zu planen um diese Barrieren zu minimieren oder zu beseitigen.</p>
<p><em>2. Product Backlog – Das Drehbuch<br />
</em>Im Product Backlog werden Geschichten, Anforderungen, Funktionalitäten, etc. notiert. Diese Liste entspricht im Grunde einem Katalog an Kriterien, welche das Scrum-Team in Zukunft abliefern möchte. Die Backlog Items dieses Dokuments sind nach dem Wert für das Unternehmen und der Kapitalrendite (Return on Investment) sortiert.</p>
<p><em>3. Selected Product Backlog – Die Szenen<br />
</em>Eine Szene ist ein Teil des gesamten Films. So etwa kann man auch das Selected Product Backlog verstehen. Hier werden die Spezifikationen des Product Backlog aufgelistet, welche für den aktuellen Sprint umgesetzt werden müssen.</p>
<p><em>4. Potential Shippable Product Increment – Eine Episode<br />
</em>Am Ende eines Sprints liefert das Scrum-Team ein potentiell lieferfähiges Produkt-Inkrement ab, an dem nicht mehr gearbeitet werden muss. Falls die Entwicklung zu diesem Zeitpunkt eingestellt werden müsste, ist das ein bereits funktionsfähiger Teil des Prototypen, der bereits eingesetzt werden könnte.</p>
<p><em>5. Sprint Backlog – Der eigentliche Dreh<br />
</em>Der Sprint Backlog visualisiert die nächsten Aktivitäten für das Entwicklerteam und hilft dabei, diese zu synchronisieren, da das bei einer größeren Anzahl sehr schnell sehr unübersichtlich werden kann. Man muss aber immer im Hinterkopf behalten, dass anhand des Sprint Backlogs keine Vortschritte, sondern lediglich der aktuelle Status, bzw. die momentane Situation veranschaulicht werden.</p>
<p><strong><br />
Wie funktioniert das Tracking des Fortschritts in Scrum? </strong></p>
<p>Hierbei dient einerseits das Burn Down Chart als bewährte Methode um Fortschritte zu visualisieren. Dies geschieht unüblicherweise durch das Team selbst. Jeweils ein Burn Down Chart wird für jeden Sprint hergenommen und täglich aktualisiert. Dabei repräsentiert die vertikale Achse die Anzahl der abzuarbeitenden Tasks und die horizontale Achse die Tage des aktuellen Sprints. Bei der Erstellung eines Burn Down Charts, sollte man besonders darauf achten, es einfach zu gestalten damit das Team die regelmäßigen Updates leicht eintragen kann.</p>
<p><a rel="attachment wp-att-653" href="http://blog.comsysto.com/2010/06/16/agiles-projektmanagement-mit-scrum/burn_down_chart/"><img class="alignnone size-thumbnail wp-image-653" title="Burn_Down_Chart" src="http://comsysto.files.wordpress.com/2010/06/burn_down_chart.png?w=150&#038;h=113" alt="" width="150" height="113" /></a></p>
<p>Auf der anderen Seite kann man ergänzend zum Burn Down Chart noch das Task Board verwenden, um den Status des aktuellen Sprints festzuhalten. Hier gilt die selbe Regel wie beim Burn Down Chart, dass nur das Scrum-Team das Task Board pflegt und benutzt. Dieses Task Board kann entweder ein Software-Tool sein oder ein Whiteboard an der Wand.</p>
<p>Das Task Board lässt sich in vier Spalten unterteilen.</p>
<p><a rel="attachment wp-att-654" href="http://blog.comsysto.com/2010/06/16/agiles-projektmanagement-mit-scrum/task_board/"><img class="alignnone size-thumbnail wp-image-654" title="Task_Board" src="http://comsysto.files.wordpress.com/2010/06/task_board.png?w=150&#038;h=106" alt="" width="150" height="106" /></a></p>
<p><a rel="attachment wp-att-476" href="http://blog.comsysto.com/2010/06/16/agiles-projektmanagement-mit-scrum/task-board-final/"></a><em>1. Selected Product Backlog (Stories)<br />
</em>Hier werden alle Product Backlog Items / Stories eingetragen, welche das Team in diesem Sprint erledigen möchte. Dabei wird – zur besseren Übersicht – auch gleich eine Priorisierung von Wichtigem nach Unwichtigem angewandt.</p>
<p><em>2. Tasks To Do<br />
</em>Die Tasks die noch nicht gestartet wurden aber noch erledigt werden müssen, haben ihren Platz in dieser Spalte. Sie ergeben sich aus den Sprint Planning Meetings oder während man den Sprint ausführt.</p>
<p><em>3. Work in Progress<br />
</em>Sobald ein Teammitglied einen Task beginnt, nimmt er die Karte mit diesem Task und bringt sie in der Spalte Work in Progress an. Ist eine Aufgabe seit dem letzten Daily Scrum in dieser Spalte, erhält sie eine Markierung, für gewöhnlich mit einem roten Punkt. Bleiben Tasks länger als einen Tag in Bearbeitung, kann man sie auch in Untertasks aufteilen. Verhindert etwas die Erfüllung eines bestimmten Tasks, wird die Karte auch mit einem roten Punkt markiert und das Hindernis dazu geschrieben.</p>
<p><em>4. Done<br />
</em>Sobald ein Task erledigt ist, wird die Karte vom jeweiligen Teammitglied in der Spalte Done angebracht. Im Anschluss daran wird die nächste Aufgabe in Angriff genommen. Was als „erledigt“ definiert wird kann vorher in einem Brainstorming spezifiziert werden.</p>
<p><strong><br />
Welche Meetings gibt es in Scrum-Projekten? </strong></p>
<p>Wie in jedem gut organisierten Projekt ist ein guter Zeitplan das A und O und macht so einen Großteil des Erfolges aus. In Scrum wird das Projekt über den kompletten Zeitraum von einer Vielzahl unterschiedlicher Meetings und Meeting-Typen begleitet. Welche das sind, wird anhand folgender Grafik veranschaulicht und im Anschluss erläutert.</p>
<p><a rel="attachment wp-att-655" href="http://blog.comsysto.com/2010/06/16/agiles-projektmanagement-mit-scrum/scrum_cycle/"><img class="alignnone size-thumbnail wp-image-655" title="Scrum_Cycle" src="http://comsysto.files.wordpress.com/2010/06/scrum_cycle.png?w=150&#038;h=97" alt="" width="150" height="97" /></a></p>
<p><em>1. Estimation Meeting<br />
</em>Den Beginn eines jeden Sprints leitet das Estimation Meeting ein. Es dient dazu die Backlog Items und deren Größe kennenzulernen. Dabei schätzt das Team selbst ab, wieviel Arbeit es sich zumutet, so dass ein Optimum gefunden wird. Die Teammitglieder bekommen weiterhin einen Überblick darüber, was sie in den nächsten Projektphasen erwartet.</p>
<p><em>2. Sprint Planning Meeting – Part 1<br />
</em>Das Ziel des ersten Sprint Planning Meetings ist herauszufinden was der End User im Detail haben möchte. Dadurch haben die Entwickler ein klares Bild davon, was der End User braucht und somit, was implementiert werden soll.</p>
<p><em>3. Sprint Planning Meeting – Part 2<br />
</em>Im zweiten Teil des Sprint Planning Meetings geht es hauptsächlich um das Design der zu implementierenden Lösung. Am Ende dieses Meetings weiß das Entwicklerteam wie die benötigten Funktionalitäten umgesetzt werden können.</p>
<p><em>4. Daily Scrum<br />
</em>Das Daily Scrum ist ein relativ kurzer Statusbericht jedes Teams, in dem der aktuelle Stand sowie Hindernisse mit dem ScrumMaster besprochen werden. Dieser Termin findet – wie der Name bereits erahnen lässt – jeden Tag statt und dabei werden die täglichen Aktivitäten geplant. Als hilfreiche Tool lassen sich hier das Task Board und das Burn Down Chart empfehlen.</p>
<p><em>5. Sprint Review<br />
</em>Am Ende eines jeden Sprints wird dem End User im Rahmen des Sprint Review das aktuelle Ergebnis präsentiert und im Anschluss daran eine Feedbackrunde an das Entwicklerteam angesetzt. Die Rückmeldung nutzt das Scrum-Team nun um neue Backlog Items zu erstellen oder bestehende zu modifizieren.</p>
<p><em>6. Sprint Retrospective<br />
</em>Dieses letzte Meeting kann mit einer medizinischen Diagnose des Ergebnisses verglichen werden. Hier gilt es Themen zu finden bei denen Verbesserungsbedarf besteht. Dies lässt sich gut mit zwei Flipcharts machen, auf denen die Überschirften „What went well?“ und „What could be improved?“ notiert sind. Nun schreiben die Teammitglieder ihre Ideen dazu auf Post-Its und füllen so die Flipcharts, welche im Anschluss diskutiert werden.</p>
<p><strong><br />
Wo liegt der Unterschied zwischen Scrum und anderen Vorgehensmodellen im Projektmanagement?</strong></p>
<p>Wie wir bereits im ersten Kapitel gelernt haben, ist Scrum ein agiles Projektmanagement-Vorgehensmodell. Das bedeutet, dass die Kreativität und Flexibilität der Mitarbeiter gefördert werden soll indem Regeln und bürokratische Aufwände auf ein Minimum reduziert werden. Die Frage nach dem richtigen Vorgehensmodell lässt sich ganz einfach beantworten, wenn man darüber nachdenkt was der Output des Projekts sein wird.  Hierzu soll uns das Beispiel der Schiffsentwicklung dienen. Inwiefern würde sich Scrum in einem solchen Vorhaben eignen? Nehmen wir an die Schiffbau-Ingeneure treffen sich täglich zu ihrem Daily Scrum Meeting und pflegen ein Task Board. Dabei können die meisten Arbeiter noch gar nicht beginnen, weil das Design des Schiffs noch nicht fertig ist. Das hat schließlich Auswirkungen auf Faktoren wie Material und Technik. Ist dieser Punkt abgeschlossen können die Mitarbeiter der Materialbeschaffung loslegen und werden die Teile geliefert ist als nächstes die Montage an der Reihe. Hierbei handelt es sich um ein klassisches Wasserfallmodell. Sobald ein Mitarbeiter seine Aufgabe abschließt, beginnt der nächste mit seiner.</p>
<p>In der Softwareentwicklung eignet sich ein solches Verfahren nicht, da meist Parallelarbeit möglich ist. Das ist das Spielfeld auf dem Scrum spielt. Es gibt jedoch weitere anerkannte Modelle in der Softwareentwicklung. Extreme Programming ist – wie Scrum – ein Vertreter der agilen Softwareentwicklung. Dabei werden fortlaufende Iterationen betrachtet, die eine schrittweise Annäherung an die Anforderung des Kunden zum Ziel haben.</p>
<p>Das Spiralmodell ist – im Gegensatz zu Scrum – kein agiles, sondern ein generisches Vorgehensmodell in der Softwareentwicklung. Dieses Modell muss man sich als Spirale welche in vier Quadranten aufgeteilt ist, vorstellen. Die vier Abschnitte beschreiben die Festlegung der Ziele, die Risikoanalyse, die Entwicklung und Test sowie die Planung des nächsten Zyklus. Das Ende jeder Iteration beschließt immer ein Prototyp.</p>
<p>Das V-Modell lässt sich nicht so leicht in eine Schublade zu generischen oder agilen Softwareentwicklungs-Vorgehensmodellen stecken da es Elemente beider Arten in sich vereint. Die Hauptmerkmale des V-Modells sind im absteigenden Ast die Spezifikation und die immer feinere Darstellung und im aufsteigenden Ast die Realisierung und Integration.</p>
<p><strong><br />
Warum ist Scrum wirtschaftlicher als andere Methoden?</strong></p>
<p>Ist es nicht! Im Projektmanagement ist es wichtig immer das richtige Tool für eine bestimmte Aufgabe zu wählen. Manchmal ist Scrum genau das passende Werkzeug um das Projekt bestmöglich abzuschließen, allerdings gibt es Situationen in denen das eben nicht der Fall ist. Den größten Erfolg kann man in gewissen Projekten möglicherweise mit anderen agilen Vorgehensmodellen haben oder gar mit generischen wie dem Wasserfallmodell. So pauschal lässt sich das nicht sagen. Mit Scrum wurde hier ein sehr guter Ansatz vorgestellt, aber nicht die Universallösung für Softwareentwicklungsprojekte. Es erfreut sich momentan größter Beliebtheit und hat sich schon des öfteren als eines der besten Agilen Projektmanagement-Verfahren bewährt. Wenn man versucht einen Trend für die nächsten Jahre zu erkennen, so wird dieser ganz sicher in Richtung Agilität gehen.</p>
<p><strong><br />
Quellen</strong></p>
<p><a href="http://borisgloger.com/2008/07/23/scrum-rollen-das-team/"><a href="http://borisgloger.com/2008/07/23/scrum-rollen-das-team/" rel="nofollow">http://borisgloger.com/2008/07/23/scrum-rollen-das-team/</a><br />
</a><a href="http://de.wikipedia.org/wiki/Scrum"><a href="http://de.wikipedia.org/wiki/Scrum" rel="nofollow">http://de.wikipedia.org/wiki/Scrum</a><br />
</a><a href="http://scrum-fibel.de/"><a href="http://scrum-fibel.de/" rel="nofollow">http://scrum-fibel.de/</a><br />
</a><a href="http://www.controlchaos.com/"><a href="http://www.controlchaos.com/" rel="nofollow">http://www.controlchaos.com/</a><br />
</a><a href="http://www.scrum.org/"><a href="http://www.scrum.org/" rel="nofollow">http://www.scrum.org/</a><br />
</a><a href="http://en.wikipedia.org/wiki/Ken_Schwaber"><a href="http://en.wikipedia.org/wiki/Ken_Schwaber" rel="nofollow">http://en.wikipedia.org/wiki/Ken_Schwaber</a><br />
</a><a href="http://slides.liip.ch/scrum-liip-techtalk-20080923/title.html"><a href="http://slides.liip.ch/scrum-liip-techtalk-20080923/title.html" rel="nofollow">http://slides.liip.ch/scrum-liip-techtalk-20080923/title.html</a><br />
</a><a href="http://de.wikipedia.org/wiki/Agile_Softwareentwicklung"><a href="http://de.wikipedia.org/wiki/Agile_Softwareentwicklung" rel="nofollow">http://de.wikipedia.org/wiki/Agile_Softwareentwicklung</a><br />
</a><a href="http://de.wikipedia.org/wiki/Vorgehensmodell_zur_Softwareentwicklung"><a href="http://de.wikipedia.org/wiki/Vorgehensmodell_zur_Softwareentwicklung" rel="nofollow">http://de.wikipedia.org/wiki/Vorgehensmodell_zur_Softwareentwicklung</a><br />
</a><a href="http://projektmanagement-definitionen.de/scrum-naechste-generation-projektmanagements/"><a href="http://projektmanagement-definitionen.de/scrum-naechste-generation-projektmanagements/" rel="nofollow">http://projektmanagement-definitionen.de/scrum-naechste-generation-projektmanagements/</a><br />
</a><a href="http://de.wikipedia.org/wiki/Extreme_Programming"><a href="http://de.wikipedia.org/wiki/Extreme_Programming" rel="nofollow">http://de.wikipedia.org/wiki/Extreme_Programming</a><br />
</a><a href="http://de.wikipedia.org/wiki/Spiralmodell">http://de.wikipedia.org/wiki/Spiralmodell</a></p><br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/comsysto.wordpress.com/471/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/comsysto.wordpress.com/471/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/comsysto.wordpress.com/471/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/comsysto.wordpress.com/471/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/comsysto.wordpress.com/471/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/comsysto.wordpress.com/471/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/comsysto.wordpress.com/471/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/comsysto.wordpress.com/471/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/comsysto.wordpress.com/471/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/comsysto.wordpress.com/471/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/comsysto.wordpress.com/471/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/comsysto.wordpress.com/471/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/comsysto.wordpress.com/471/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/comsysto.wordpress.com/471/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.comsysto.com&blog=8304660&post=471&subd=comsysto&ref=&feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.comsysto.com/2010/06/16/agiles-projektmanagement-mit-scrum/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ae21b1f74518e3b192c349c782747a46?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">peterdmytrasz</media:title>
		</media:content>

		<media:content url="http://comsysto.files.wordpress.com/2010/06/schaukel-projekt-102.jpg?w=150" medium="image">
			<media:title type="html">schaukel-projekt-10</media:title>
		</media:content>

		<media:content url="http://comsysto.files.wordpress.com/2010/06/burn_down_chart.png?w=150" medium="image">
			<media:title type="html">Burn_Down_Chart</media:title>
		</media:content>

		<media:content url="http://comsysto.files.wordpress.com/2010/06/task_board.png?w=150" medium="image">
			<media:title type="html">Task_Board</media:title>
		</media:content>

		<media:content url="http://comsysto.files.wordpress.com/2010/06/scrum_cycle.png?w=150" medium="image">
			<media:title type="html">Scrum_Cycle</media:title>
		</media:content>
	</item>
		<item>
		<title>Test Driven Development With Apache Wicket And Spring Framework</title>
		<link>http://blog.comsysto.com/2010/06/04/test-driven-development-with-apache-wicket-and-spring-framework/</link>
		<comments>http://blog.comsysto.com/2010/06/04/test-driven-development-with-apache-wicket-and-spring-framework/#comments</comments>
		<pubDate>Fri, 04 Jun 2010 15:11:11 +0000</pubDate>
		<dc:creator>Daniel Bartl</dc:creator>
				<category><![CDATA[Apache Wicket]]></category>
		<category><![CDATA[Enterprise Java]]></category>
		<category><![CDATA[Spring]]></category>
		<category><![CDATA[Pair Programming]]></category>
		<category><![CDATA[TDD]]></category>
		<category><![CDATA[wicket]]></category>

		<guid isPermaLink="false">http://blog.comsysto.com/?p=318</guid>
		<description><![CDATA[Since the development of our own web applications is mostly based on a Spring framework for dependency injection and application configuration in general and Apache Wicket framework as a truly component-oriented web framework for the MVC part of building a web application, it&#8217;s especially important for us to get these two frameworks running together smoothly not [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.comsysto.com&blog=8304660&post=318&subd=comsysto&ref=&feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Since the development of our own web applications is mostly based on a Spring framework for dependency injection and application configuration in general and Apache Wicket framework as a truly component-oriented web framework for the MVC part of building a web application, it&#8217;s especially important for us to get these two frameworks running together smoothly not only when deployed on a running server instance itself but rather during the execution of our JUnit based integration tests as well. Thanks to the <em>WicketTester</em> API provided by the Wicket framework itself, one can easily build high-quality web applications while practicing test driven development and providing a decent set of unit and integration tests to be executed with each build. As already mentioned previously, integration and configuration of our web applications is based on a lightweight Spring container meaning that the integration of Spring&#8217;s <em>ApplicationContext</em> and a WicketTester API is essential to get our integration tests running. In order to best explain how to achieve that integration in an easy and elegant fashion in your integration test environment, we&#8217;ll first take a look at a configuration of these 2 framework beauties in a runtime environment.</p>
<p><strong>Configuration of the runtime environment</strong></p>
<p>In order to get Wicket framework up to speed when your server is up and running, you usually configure an according <em>WicketFilter</em> instance in your web application deployment descriptor file (<em>web.xml</em>) while passing it a single init parameter called <em>applicationClassName</em> that points to your main implementation class extending <em>org.apache.wicket.protocol.http.WebApplication</em> where all of your application-wide settings and initialization requirements are dealt with:</p>
<pre class="brush: xml;">
&lt;filter&gt;
    &lt;filter-name&gt;wicketfilter&lt;/filter-name&gt;
    &lt;filter-class&gt;org.apache.wicket.protocol.http.WicketFilter&lt;/filter-class&gt;
    &lt;init-param&gt;
        &lt;param-name&gt;applicationClassName&lt;/param-name&gt;
        &lt;param-value&gt;com.comsysto.webapp.MyWebApplication&lt;/param-value&gt;
    &lt;/init-param&gt;
&lt;/filter&gt;
</pre>
<p>In case you want to get Wicket application up and running while leaving the application configuration and dependency injection issues to the Spring container, the configuration to be provided within the deployment descriptor looks slightly different though:</p>
<pre class="brush: xml;">
&lt;web-app&gt;
    &lt;filter&gt;
        &lt;filter-name&gt;wicketfilter&lt;/filter-name&gt;
        &lt;filter-class&gt;org.apache.wicket.protocol.http.WicketFilter&lt;/filter-class&gt;
        &lt;init-param&gt;
            &lt;param-name&gt;applicationFactoryClassName&lt;/param-name&gt;
            &lt;param-value&gt;org.apache.wicket.spring.SpringWebApplicationFactory&lt;/param-value&gt;
        &lt;/init-param&gt;
    &lt;/filter&gt;
    &lt;listener&gt;
        &lt;listener-class&gt;org.springframework.web.context.ContextLoaderListener&lt;/listener-class&gt;
    &lt;/listener&gt;
    &lt;context-param&gt;
        &lt;param-name&gt;contextConfigLocation&lt;param-name&gt;
        &lt;param-value&gt;/WEB-INF/applicationContext.xml&lt;param-value&gt;
    &lt;/context-param&gt;
&lt;/web-app&gt;
</pre>
<p>The additional configuration part containing listener and context parameter definition is a usual, purely Spring container related configuration detail. ContextLoaderListener is an implementation of standard Servlet API ServletContextListener interface provided by the Spring framework itself and is responsible for looking up an according bean definition file(s) specified by the context param above and creating an ApplicationContext instance during servlet context initialization accordingly. When integrating an ApplicationContext instance with Wicket framework, one of the beans defined in the above mentioned Spring bean definition file has to be your own specific extension of org.apache.wicket.protocol.http.WebApplication. You can either define an according bean in the bean definition file itself:</p>
<pre class="brush: xml;">
&lt;beans&gt;
    &lt;bean id=&quot;myWebApp&quot; class=&quot;com.comsysto.webapp.MyWebApplication&quot;/&gt;
&lt;/beans&gt;
</pre>
<p>or use powerful classpath scanning feature of the Spring framework and annotate the MyWebApplication implementation with the appropriate @Component annotation accordingly while enabling the Spring container to scan the according package(s) of your application for relevant bean definitions:</p>
<pre class="brush: xml;">
&lt;beans&gt;
    &lt;context:component-scan base-package=&quot;com.comsysto.webapp&quot; /&gt;
    &lt;context:component-scan base-package=&quot;com.comsysto.webapp.service&quot; /&gt;
    &lt;context:component-scan base-package=&quot;com.comsysto.webapp.repository&quot; /&gt;
&lt;/beans&gt;
</pre>
<p>Either way, if everything goes well, you&#8217;ll get a pre-configured ApplicationContext all set up during the startup of your web container. One of the beans in the ApplicationContext will be your own extension of Wicket&#8217;s WebApplication type. SpringWebApplicationFactory implementation provided by the Wicket framework itself that you have defined as the <em>applicationFactoryClassName</em> in the configuration of your WicketFilter will then be used in order to retrieve that very same WebApplication bean out of your Spring ApplicationContext. The Factory expects one and only one extension of Wicket&#8217;s very own WebApplication type to be found within the ApplicationContext instance at runtime. If no such bean or more than one bean extending WebApplication is found in the given ApplicationContext an according IllegalStateException will be raised and initialization of your web application will fail:</p>
<pre class="brush: java;">
Map&lt;? , ?&gt; beans = BeanFactoryUtils.beansOfTypeIncludingAncestors(ac,WebApplication.class, false, false);
if (beans.size() == 0)
{
	throw new IllegalStateException(&quot;bean of type [&quot; + WebApplication.class.getName() +
			&quot;] not found&quot;);
}
if (beans.size() &gt; 1)
{
	throw new IllegalStateException(&quot;more than one bean of type [&quot; +
			WebApplication.class.getName() + &quot;] found, must have only one&quot;);
}
</pre>
<p>After the WebApplication bean has been successfully retrieved from the ApplicationContext via SpringWebApplicationFactory, WicketFilter will then, as part of its own initialization process, trigger both internalInit() and init() methods of the WebApplication bean. The latter one is the exact spot where the last piece of the runtime configuration puzzle between Wicket and Spring is to be placed :</p>
<pre class="brush: java;">
@Component
public class MyWebApplication extends WebApplication {
    @Override
    protected void init() {
        addComponentInstantiationListener(new SpringComponentInjector(this));
    }

}
</pre>
<p>SpringComponentInjector provided by the Wicket framework enables you to get dependencies from the ApplicationContext directly injected into your Wicket components by simply annotating these with the according @SpringBean annotation.</p>
<p><strong>Configuration of the JUnit based integration test environment</strong></p>
<p>One of the main features of Apache Wicket framework is the ability to easily write and run plain unit tests for your Pages and all other kinds of Components that even include the verification of the rendering process itself by using JUnit framework and the WicketTester API only. When using Spring framework for application configuration together with Wicket, as we do, you can even use the same tools to easily write and run full blown integration tests for your web application as well. All you have to do is use <a href="http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/testing.html#testcontext-framework" target="_blank">Spring&#8217;s TestContext</a> framework additionally to configure and run your JUnit based integration tests. The Spring Framework provides a set of Spring specific annotations that you can use in your integration tests in conjunction with the TestContext framework itself in order to easily configure an according ApplicationContext instance for your tests as well as for appropriate transaction management before, during and after your test execution. Following code snippet represents a simple JUnit 4 based test case using Spring&#8217;s specific annotations in order to initialize an ApplicationContext instance prior to executing the test itself:</p>
<pre class="brush: java;">
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {&quot;classpath:WEB-INF/applicationContext.xml&quot;})
@TransactionConfiguration(transactionManager = &quot;txManager&quot;, defaultRollback = false)
public class LoginPageTest {

    private WicketTester tester;

    @Autowired
    private ApplicationContext ctx;

    @Autowired
    private MyWebApplication myWebApplication;

    @Before
    public void setUp() {
        tester = new WicketTester(myWebApplication);
    }

    @Test
    @Transactional
    @Rollback(true)
    public void testRenderMyPage() {
        tester.startPage(LoginPage.class);
        tester.assertRenderedPage(LoginPage.class);
        tester.assertComponent(&quot;login&quot;, LoginComponent.class);
    }
}
</pre>
<p>By defining three annotations on the class level (see code snippet above) in your test, Spring&#8217;s TestContext framework takes care of preparing and initializing an ApplicationContext instance having all the beans defined in the according Spring context file as well as the transaction management in case your integration test includes some kind of database access. Fields marked with @Autowired annotation will be automatically dependency injected as well so that you can easily access and use these for your testing purposes. Since MyWebApplication, which extends Wicket&#8217;s WebApplication type and represents the main class of our web application, is also a bean within the ApplicationContext managed by Spring, it will also be provided to us by the test framework itself and can be easily used in order to initialize a WicketTester instance later on during the execution of the test&#8217;s setUp() method. With this kind of simple, annotation based test configuration we are able to run an integration test that verifies whether a LoginPage gets started and initialized, whether the rendering of the page runs smoothly and whether the page itself contains a LoginComponent that we possibly need in order to process user&#8217;s login successfully.</p>
<p>When you run this test though, you&#8217;ll get the following exception raised unfortunately:</p>
<pre class="brush: java;">

java.lang.IllegalStateException: No WebApplicationContext found: no ContextLoaderListener registered?
	at org.springframework.web.context.support.WebApplicationContextUtils.getRequiredWebApplicationContext(WebApplicationContextUtils.java:84)
	at org.apache.wicket.spring.injection.annot.SpringComponentInjector.&lt;init&gt;(SpringComponentInjector.java:72)
	at com.comsysto.serviceplatform.uiwebapp.MyWebApplication.initializeSpringComponentInjector(MyWebApplication.java:59)
	at com.comsysto.serviceplatform.uiwebapp.MyWebApplication.init(MyWebApplication.java:49)
	at org.apache.wicket.protocol.http.WicketFilter.init(WicketFilter.java:719)
	at org.apache.wicket.protocol.http.MockWebApplication.&lt;init&gt;(MockWebApplication.java:168)
	at org.apache.wicket.util.tester.BaseWicketTester.&lt;init&gt;(BaseWicketTester.java:219)
	at org.apache.wicket.util.tester.WicketTester.&lt;init&gt;(WicketTester.java:325)
	at org.apache.wicket.util.tester.WicketTester.&lt;init&gt;(WicketTester.java:308)
</pre>
<p>As you can see above, the Exception gets raised during the initialization of the WicketTester instance even before the actual test method gets executed. Even though we have applied rather cool and simple annotation based test configuration already described and passed in perfectly well prepared ApplicationContext instance to the WicketTester instance in the constructor, somewhere down the rabbit hole someone complained that no WebApplicationContext instance could have been found which seems to be required in order to initialize the WicketTester properly.</p>
<div id="attachment_408" class="wp-caption aligncenter" style="width: 610px"><a rel="attachment wp-att-408" href="http://blog.comsysto.com/2010/06/04/test-driven-development-with-apache-wicket-and-spring-framework/description-of-illegalstate/"><img class="size-full wp-image-408" title="Description of IllegalState" src="http://comsysto.files.wordpress.com/2010/06/description-of-illegalstate1.jpg?w=600&#038;h=268" alt="Illegal State Sequence" width="600" height="268" /></a><p class="wp-caption-text">Illegal State Sequence</p></div>
<p>The problem that we run against here is due to the fact that SpringComponentInjector during its own initialization is trying to get hold of an according Spring&#8217;s ApplicationContext instance that would normally be there in a runtime environment but does not find any since we are running in a test environment currently. SpringComponentInjector delegates to Spring&#8217;s own WebApplicationContextUtils class to retrieve the instance of ApplicationContext out of the ServletContext which is perfectly fine for a runtime environment but is unfortunately failing in a test environment:</p>
<pre class="brush: java;">
public static WebApplicationContext getRequiredWebApplicationContext(ServletContext sc)
		throws IllegalStateException {

	WebApplicationContext wac = getWebApplicationContext(sc);
	if (wac == null) {
		throw new IllegalStateException(&quot;No WebApplicationContext found: no ContextLoaderListener registered?&quot;);
	}
	return wac;
}
</pre>
<p>If you still remember we defined a ContextLoaderListener in our web.xml file as part of the configuration of our runtime environment that makes sure an according WebApplicationContext instance gets initialized and registered against the ServletContext properly. Luckily, this problem can easily be solved if we slightly change the way we initialize SpringComponentInjector in our main MyWebApplication class. Apart from the constructor that we have used so far, there is another constructor in the SpringComponentInjector class that expects the caller to provide it with an according ApplicationContext instance rather than trying to resolve one on its own:</p>
<pre class="brush: java;">
public SpringComponentInjector(WebApplication webapp, ApplicationContext ctx,
		boolean wrapInProxies)
{
	if (webapp == null)
	{
		throw new IllegalArgumentException(&quot;Argument [[webapp]] cannot be null&quot;);
	}

	if (ctx == null)
	{
		throw new IllegalArgumentException(&quot;Argument [[ctx]] cannot be null&quot;);
	}

	// store context in application's metadata ...
	webapp.setMetaData(CONTEXT_KEY, new ApplicationContextHolder(ctx));

	// ... and create and register the annotation aware injector
	InjectorHolder.setInjector(new AnnotSpringInjector(new ContextLocator(), wrapInProxies));
}
</pre>
<p>In order to use this constructor instead of the one we used previously, we now obviously need to get hold of the ApplicationContext instance on our own in our MyWebApplication implementation. The easiest way to do this is to use Spring&#8217;s own concept of <a href="http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/beans.html#beans-factory-aware" target="_blank">lifecycle callbacks</a> provided to the beans managed by the Spring container. Since our MyWebApplication is also a bean managed by the Spring container at runtime (enabled by the classpath scanning and @Component annotation on a type level), we can declare it to implement ApplicationContextAware interface which ensures that it gets provided with the ApplicationContext instance that it runs in by the Spring container itself during startup.</p>
<pre class="brush: java;">
public interface ApplicationContextAware {

	void setApplicationContext(ApplicationContext applicationContext) throws BeansException;

}
</pre>
<p>So the relevant parts of MyWebApplication type will now look something like the following code snippet:</p>
<pre class="brush: java;">
@Component
public class MyWebApplication extends WebApplication implements ApplicationContextAware {
    @Override
    protected void init() {
        addComponentInstantiationListener(new SpringComponentInjector(this, ctx, true));
    }

    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        this.ctx = applicationContext;
    }
}
</pre>
<p>For additional clarification of how MyWebApplication now relates to both Wicket and Spring framework here is an according class diagram:</p>
<div id="attachment_415" class="wp-caption aligncenter" style="width: 410px"><a rel="attachment wp-att-415" href="http://blog.comsysto.com/2010/06/04/test-driven-development-with-apache-wicket-and-spring-framework/class-diagramm/"><img class="size-full wp-image-415" title="class diagramm" src="http://comsysto.files.wordpress.com/2010/05/class-diagramm.jpg?w=400&#038;h=232" alt="MyWebApplication class diagram" width="400" height="232" /></a><p class="wp-caption-text">MyWebApplication Class Diagram</p></div>
<p>And that&#8217;s all folks! No additional modifications are required to the test itself. It&#8217;s gonna turn green now. This way you can use exactly the same Spring context configuration that you&#8217;d use in your runtime environment for running your JUnit based integration tests as well. Just grab the <a href="http://www.babble.com/CS/blogs/famecrawler/2008/11/01-07/demi_moore1_300_400.jpg" target="_blank">colleague</a> you like most and try a pair programming and test first approach with Wicket and Spring. You&#8217;ll be delighted! And if you&#8217;re not, go buy yourself one of <a href="http://www.apple.com/ipad/" target="_blank">these</a> <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</p><br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/comsysto.wordpress.com/318/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/comsysto.wordpress.com/318/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/comsysto.wordpress.com/318/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/comsysto.wordpress.com/318/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/comsysto.wordpress.com/318/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/comsysto.wordpress.com/318/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/comsysto.wordpress.com/318/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/comsysto.wordpress.com/318/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/comsysto.wordpress.com/318/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/comsysto.wordpress.com/318/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/comsysto.wordpress.com/318/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/comsysto.wordpress.com/318/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/comsysto.wordpress.com/318/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/comsysto.wordpress.com/318/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.comsysto.com&blog=8304660&post=318&subd=comsysto&ref=&feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.comsysto.com/2010/06/04/test-driven-development-with-apache-wicket-and-spring-framework/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/347118f16dfb4646052129d32fc1a258?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">danielbartl</media:title>
		</media:content>

		<media:content url="http://comsysto.files.wordpress.com/2010/06/description-of-illegalstate1.jpg" medium="image">
			<media:title type="html">Description of IllegalState</media:title>
		</media:content>

		<media:content url="http://comsysto.files.wordpress.com/2010/05/class-diagramm.jpg" medium="image">
			<media:title type="html">class diagramm</media:title>
		</media:content>
	</item>
		<item>
		<title>Apache Wicket Training von comSysto und JWeekend</title>
		<link>http://blog.comsysto.com/2010/05/07/apache-wicket-training-von-comsysto-und-jweekend/</link>
		<comments>http://blog.comsysto.com/2010/05/07/apache-wicket-training-von-comsysto-und-jweekend/#comments</comments>
		<pubDate>Fri, 07 May 2010 12:48:26 +0000</pubDate>
		<dc:creator>comsysto</dc:creator>
				<category><![CDATA[Apache Wicket]]></category>
		<category><![CDATA[Enterprise Java]]></category>
		<category><![CDATA[JEE]]></category>
		<category><![CDATA[Training]]></category>
		<category><![CDATA[Web Application]]></category>
		<category><![CDATA[Web Frontend]]></category>

		<guid isPermaLink="false">http://blog.comsysto.com/?p=290</guid>
		<description><![CDATA[Am 22. und 23. Mai 2010 organisiert die comSysto GmbH in Zusammenarbeit mit JWeekend und Wicket London User Group das erste Apache Wicket Training im deutschsprachigen Raum. Die Vermittlung der Inhalte wird an praktischen Beispielen vollzogen, so dass nach 2 Tagen eine beeindruckende, von den Teilnehmern geminsam entwicklete webbasierte Anwendung entstehen wird. In der Halbzeitpause [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.comsysto.com&blog=8304660&post=290&subd=comsysto&ref=&feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Am 22. und 23. Mai 2010 organisiert die comSysto GmbH in Zusammenarbeit mit JWeekend und Wicket London User Group das erste Apache Wicket Training im deutschsprachigen Raum.</p>
<p>Die Vermittlung der Inhalte wird an praktischen Beispielen vollzogen, so dass nach 2 Tagen eine beeindruckende, von den Teilnehmern geminsam entwicklete webbasierte Anwendung entstehen wird.</p>
<p>In der Halbzeitpause des Trainings am Samstag Abend widmen wir uns noch einem sehr wichtigen Thema &#8211; Fußball! Im Champions League Finale zwischen Bayern München und Inter Mailand werden wir selbstverständlich die Bayern auf ihrem Weg zum diesjährigen &#8220;Triple&#8221; lautstark unterstützen.</p>
<p>Mehr Informationen über die Ziele und Ablauf des Trainings finden Sie in unserem Flyer unter:</p>
<p><a class="alignleft" title="comSysto Apache Wicket Training" href="http://www.comsysto.com/flyer/ApacheWicket-CL.pdf" target="_blank">comSysto Apache Wicket Training</a><br />
</p>
<p>Bei Interesse bitte eine kurze Email an kontakt[at]comsysto.com schreiben, es sind nur noch wenige Plätze frei.</p><br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/comsysto.wordpress.com/290/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/comsysto.wordpress.com/290/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/comsysto.wordpress.com/290/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/comsysto.wordpress.com/290/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/comsysto.wordpress.com/290/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/comsysto.wordpress.com/290/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/comsysto.wordpress.com/290/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/comsysto.wordpress.com/290/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/comsysto.wordpress.com/290/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/comsysto.wordpress.com/290/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/comsysto.wordpress.com/290/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/comsysto.wordpress.com/290/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/comsysto.wordpress.com/290/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/comsysto.wordpress.com/290/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.comsysto.com&blog=8304660&post=290&subd=comsysto&ref=&feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.comsysto.com/2010/05/07/apache-wicket-training-von-comsysto-und-jweekend/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9466b624bc96c2b20f337c27da2762c9?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">comsysto</media:title>
		</media:content>
	</item>
		<item>
		<title>Einfache Kosten- und Erlösrechnung mit QlikView</title>
		<link>http://blog.comsysto.com/2010/04/26/einfache-kosten-und-erlosrechnung-mit-qlikview/</link>
		<comments>http://blog.comsysto.com/2010/04/26/einfache-kosten-und-erlosrechnung-mit-qlikview/#comments</comments>
		<pubDate>Mon, 26 Apr 2010 13:35:18 +0000</pubDate>
		<dc:creator>Tomislav Zorc</dc:creator>
				<category><![CDATA[Business Intelligence]]></category>
		<category><![CDATA[QlikView]]></category>
		<category><![CDATA[business intelligence]]></category>
		<category><![CDATA[Kostenrechnung]]></category>
		<category><![CDATA[Erlösrechnung]]></category>
		<category><![CDATA[Reporting]]></category>
		<category><![CDATA[Datenintegration]]></category>
		<category><![CDATA[Controlling]]></category>

		<guid isPermaLink="false">http://blog.comsysto.com/?p=245</guid>
		<description><![CDATA[Ausgangspunkt und fachliche Anforderungen Ein kleineres Dienstleistungsunternehmen möchte eine einfache Kosten- und Erlösrechnung einführen. Kosten- und Erlösdaten sollen aus der DATEV-Buchhaltung übernommen werden. Eine matrix-ähnliche Organisation des Unternehmens in Teams und Projekte erforderte die zweidimensionale Betrachtung der Erlöse und Kosten. Jede Buchung wird gleichzeitig immer einer Kostenstelle (Team) und einem Kostenträger (Projekt) zugeordnet. Dafür stellt [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.comsysto.com&blog=8304660&post=245&subd=comsysto&ref=&feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } --><strong>Ausgangspunkt und fachliche Anforderungen</strong></p>
<p>Ein kleineres Dienstleistungsunternehmen möchte eine einfache Kosten-  und Erlösrechnung einführen. Kosten- und Erlösdaten sollen aus der  DATEV-Buchhaltung übernommen werden. Eine matrix-ähnliche Organisation des Unternehmens in Teams und Projekte erforderte die zweidimensionale Betrachtung der Erlöse und Kosten. Jede Buchung wird gleichzeitig immer einer Kostenstelle (Team) und einem Kostenträger (Projekt) zugeordnet. Dafür stellt DATEV standardmäßig zwei vordefinierte Felder mit relativ unspektakulären Namen zur Verfügung: Kost1 und Kost2. Die Buchhaltung des Unternehmens sorgt dafür, dass Kost1 mit Kostenstelleninformation und Kost2 mit Kostenträgerinformation befüllt wird.</p>
<p>(Team = Kostenstelle = Kost1, Projekt = Kostenträger = Kost2)</p>
<p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } -->Die dritte Betrachtungsebene sind Kostenarten, die sich aus dem originären Kontenplan ergeben und für die nur eine den Kundenanforderungen entsprechende Zusammenfassung zu Kostenarten gefunden werden musste. In einem Dinstleistungsunternehmen stellen Personalkosten einen größten Block da, so dass in der ersten Ebene zwischen Personal- und übrigen Kosten unterschieden wird. Bei übrigen Kosten wird eine weitere Unterscheidung in Reisekosten, Werbungskosten, Materialkosten usw. getroffen.</p>
<p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } --><strong>Implementierung</strong></p>
<p>Nach genauerer Analyse einiger von DATEV angebotenen Controlling-Tools  fiel die “Make-Or-Buy”-Entscheidung eindeutig auf “Make”.  DATEV-Buchhaltung ermöglicht nämlich den Export von Primanota in eine semikolon-separierte Textdatei &#8220;Primanota.txt&#8221;. Die Quelle für die Fakt-Tabelle war also geboren&#8230;</p>
<p>Weitere Quellen sollen nur Stammdaten (Dimensionen und evtl. Hierarchien) zu Kostenstellen, Kostenträgern und Kostenarten halten. Aufgrund sehr weiter Verbreitung bietet sich MS Excel für die Speicherung und manuelle Datenpflege durch Buchhaltung hervorragend an.</p>
<p>Nach der Klärung aller Reporting-Anforderungen und Definition der Quellen konnte man mit der Implementierung anfangen, die sich grob in 2 Teilbereiche gliedern lässt:</p>
<p><strong>1. Dateinintegration</strong></p>
<p>Für die Datenintegration bietet QlikView eine SQL-ähnliche Skriptsprache mit einer großen Fülle an Funktionen zur Datentransformation und -aggregation. Nahezu jede beliebige Datenbank oder jedes beliebige Dateiformal lässt sich als Quelle hinzufügen und einheitlich mit anderen Quellen verbinden.</p>
<p><a rel="attachment wp-att-255" href="http://blog.comsysto.com/2010/04/26/einfache-kosten-und-erlosrechnung-mit-qlikview/qlikview_dataintegration/"><img class="alignnone size-large wp-image-255" title="QlikView_DataIntegration" src="http://comsysto.files.wordpress.com/2010/04/qlikview_dataintegration.jpg?w=632" alt="" /></a></p>
<p>Das Ergebnis des Skripts ist ein einheitliches logisches Datenmodell, das Abfragen über alle vorhandene Spalten bzw. Attribute zulässt. Somit entsteht ein logisch zusammenhängender Themenbereich, was in diesem Beispiel aus einer Fakt-Tabelle und 3 (Mini-)Dimensions-Tabellen besteht. In der Fakt-Tabelle &#8220;Primanota&#8221; haben wir neben den originären auch abgeleitete Kennzahlen und Merkmale durch Verwendung von Transformationsfunktionen definiert. Die Beziehungen zwischen den einzelnen Quellen stellt QlikView anhand der Spaltennamen fest, so dass man von Anfang an gezwungen ist, absolut saubere Namenskonventionen einzuführen.</p>
<p><a rel="attachment wp-att-253" href="http://blog.comsysto.com/2010/04/26/einfache-kosten-und-erlosrechnung-mit-qlikview/qlikview_datamodel/"><img class="alignnone size-full wp-image-253" title="QlikView_DataModel" src="http://comsysto.files.wordpress.com/2010/04/qlikview_datamodel.jpg?w=400&#038;h=270" alt="" width="400" height="270" /></a></p>
<p>Bei der Ausführung des Skriptes werden alle Quellen komprimiert (Faktor 10 &#8211; 20!) und in den Arbeitsspeicher des Rechners geladen, was eine fast unglaubliche Abfrageperformance zulässt.</p>
<p><strong>2. Reporting</strong></p>
<p>Basierend auf den im ersten Schritt definierten Merkmalen und Kennzahlen innerhalb des Themenbereich lassen sich nun Berichte in allen denkbaren Darstellungsformen aufbauen &#8211; Tabellen, Pivottabellen, einfachere Linien- oder Balken- oder komplexe Radardiagramme. Zusätzlich bietet QlikView auch einige Objekte wie Schaltflächen oder Dateineingaben, die für einen hohen Grad an Benutzerinteraktion sorgen können. Wem das Ganze immer noch nicht ausreichen sollte, hat er die Möglichkeit per VBScript oder JScript die Kontrolle selbst zu übernehmen.</p>
<p>Eine Auftelung der erstellten Tabellen, Diagramme und sonstiger Objekte auf einzelne Dashboards bzw. Seiten (in unserem Beispiel &#8220;Reports&#8221; und &#8220;Details&#8221;) ermöglicht eine klare Struktur und bessere Navigation.</p>
<p><a rel="attachment wp-att-248" href="http://blog.comsysto.com/2010/04/26/einfache-kosten-und-erlosrechnung-mit-qlikview/qlikview_reports/"><img class="alignnone size-large wp-image-248" title="QlikView_Reports" src="http://comsysto.files.wordpress.com/2010/04/qlikview_reports.jpg?w=632" alt="" /></a></p>
<p>Weitere nette Möglichkeit ist die &#8220;Ein-Klick&#8221; Umstellung einer Anzeige (z.B. Tabelle) in eine andere Anzeige (z.B. Balkendiagramm). Nachfolgend sieht man ein Balkendiagramm, der durch einen Klick aus der Tabelle &#8220;Monatsübersicht&#8221; entstanden ist.</p>
<p><a rel="attachment wp-att-261" href="http://blog.comsysto.com/2010/04/26/einfache-kosten-und-erlosrechnung-mit-qlikview/qlikview_chart/"><img class="alignnone size-medium wp-image-261" title="QlikView_Chart" src="http://comsysto.files.wordpress.com/2010/04/qlikview_chart.jpg?w=300&#038;h=142" alt="" width="300" height="142" /></a></p>
<p>Aufgrund der Tatsache, dass QlikView alle Daten im Arbeitsspeicher hält, ergibt sich auch eine sehr schnelle und von anderen BI-Werkzeugen in der Form nicht bekannte Möglichkeit der <strong>assoziativen Analyse</strong>. Durch die Auswahl eines Wertes aus einer Spalte werden alle assoziierten Werte in anderen Spalten weiß hinterlegt, die nicht-assoziierten Werte werden ausgegraut. Unter &#8220;Current Selections&#8221; sieht man auf einen Blick jede getroffene Auswahl.</p>
<p><a rel="attachment wp-att-262" href="http://blog.comsysto.com/2010/04/26/einfache-kosten-und-erlosrechnung-mit-qlikview/qlikview_associativeanalysis/"><img class="alignnone size-large wp-image-262" title="QlikView_AssociativeAnalysis" src="http://comsysto.files.wordpress.com/2010/04/qlikview_associativeanalysis.jpg?w=632" alt="" /></a></p>
<p>Assoziative Analyse mit QlikView eignet sich hervorragend für die Suche nach Datenqualitätsproblemen, eine einfache Erkennung von Mustern in den Rohdaten oder für komplexe Filterbedingungen. In unserem Beispiel verwenden wir die assoziative Analyse durch die Anzeige des Buchungskommentars für eine einfache Übersicht aller einzelnen Buchungen, die sich hinter einer Kosten- bzw. Erlössumme verstecken.</p>
<p><strong>Fazit</strong></p>
<p>Mit QlikView ist es uns gelungen innerhalb weniger Tage eine zwar einfache aber den Anforderungen völlig entsprechende Kosten- und Erlösrechnung für das kleine Dienstleistungsunternehmen aufzubauen. Schnelle Datenintegration ohne zusätzlichen Aufbau von relationalen Datenstrukuren in Form eines DWH basiert zwar auf SQL-ähnlichen Skripten und setzt einen bestimmten SQL-Kenntnisstand voraus, doch das Ganze wird durch einige Wizards entschärft, die aus den getroffenen Einstellungen den Skriptcode automatisch produzieren.</p>
<p>Im Reporting-Bereich lässt QlikView durch sehr intuitive Bedienung und viele Darstellungsmöglichkeiten keine Wünsche übrig. Erweiterung der Standardfunktionen durch VBScript oder JScript ist zwar möglich, sollte aber selten notwendig sein. Ein absolutes Alleinstellungsmerkmal ist die schon beschriebene assoziative Analyse und die &#8220;In-Memory&#8221; Datenverarbeitung mit Datenkompression, die für exzellente Performance auch mit großen Datenmengen sorgt.</p>
<p>Im Rahmen unseres Projektes wurde QlikView Personal Edition benutzt &#8211; ein Softwarepaket, das gänzlich auf dem Desktop-Rechner zu installieren ist. Für große Unternehmen mit vielen Anwendern kommt die Server Edition mit klassischer Client-Server-Architektur in Frage. Zusätzlich bietet QlikView einen sehr bequemen web-basierten sowie zwei mobile (iPhone und Android) Clients zur Verfügung.</p><br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/comsysto.wordpress.com/245/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/comsysto.wordpress.com/245/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/comsysto.wordpress.com/245/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/comsysto.wordpress.com/245/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/comsysto.wordpress.com/245/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/comsysto.wordpress.com/245/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/comsysto.wordpress.com/245/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/comsysto.wordpress.com/245/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/comsysto.wordpress.com/245/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/comsysto.wordpress.com/245/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/comsysto.wordpress.com/245/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/comsysto.wordpress.com/245/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/comsysto.wordpress.com/245/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/comsysto.wordpress.com/245/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.comsysto.com&blog=8304660&post=245&subd=comsysto&ref=&feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.comsysto.com/2010/04/26/einfache-kosten-und-erlosrechnung-mit-qlikview/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fe000e7c795e272018699bd16fb3a708?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Tomislav Zorc</media:title>
		</media:content>

		<media:content url="http://comsysto.files.wordpress.com/2010/04/qlikview_dataintegration.jpg" medium="image">
			<media:title type="html">QlikView_DataIntegration</media:title>
		</media:content>

		<media:content url="http://comsysto.files.wordpress.com/2010/04/qlikview_datamodel.jpg" medium="image">
			<media:title type="html">QlikView_DataModel</media:title>
		</media:content>

		<media:content url="http://comsysto.files.wordpress.com/2010/04/qlikview_reports.jpg" medium="image">
			<media:title type="html">QlikView_Reports</media:title>
		</media:content>

		<media:content url="http://comsysto.files.wordpress.com/2010/04/qlikview_chart.jpg?w=300" medium="image">
			<media:title type="html">QlikView_Chart</media:title>
		</media:content>

		<media:content url="http://comsysto.files.wordpress.com/2010/04/qlikview_associativeanalysis.jpg" medium="image">
			<media:title type="html">QlikView_AssociativeAnalysis</media:title>
		</media:content>
	</item>
		<item>
		<title>comSysto Offsite Meeting and white-water Rafting in Oetz, Tirol</title>
		<link>http://blog.comsysto.com/2010/01/05/comsysto-offsite-meeting/</link>
		<comments>http://blog.comsysto.com/2010/01/05/comsysto-offsite-meeting/#comments</comments>
		<pubDate>Tue, 05 Jan 2010 10:04:43 +0000</pubDate>
		<dc:creator>Tomislav Zorc</dc:creator>
				<category><![CDATA[Events & Fun]]></category>
		<category><![CDATA[comsysto]]></category>
		<category><![CDATA[nature resort]]></category>
		<category><![CDATA[offsite meeting]]></category>
		<category><![CDATA[open world]]></category>
		<category><![CDATA[rafting]]></category>
		<category><![CDATA[tirol]]></category>

		<guid isPermaLink="false">http://comsysto.wordpress.com/?p=184</guid>
		<description><![CDATA[I wanted to use the opportunity of writing my first post on our corporate blog about something absolutely not related to technology, CRM, business, SCRUM,  JEE, Intelligence or whatever &#8220;usual&#8221; topic you have read and will read here.  It should be some kind of smooth start for my blogging career&#8230; Here is what I want [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.comsysto.com&blog=8304660&post=184&subd=comsysto&ref=&feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I wanted to use the opportunity of writing my first post on our corporate blog about something absolutely not related to technology, CRM, business, SCRUM,  JEE, Intelligence or whatever &#8220;usual&#8221; topic you have read and will read here.  It should be some kind of smooth start for my blogging career&#8230;</p>
<p><a rel="attachment wp-att-219" href="http://blog.comsysto.com/2010/01/05/comsysto-offsite-meeting/img_6607/"><img class="alignnone size-medium wp-image-219" title="IMG_6607" src="http://comsysto.files.wordpress.com/2009/12/img_6607-e1262684983739.jpg?w=225&#038;h=300" alt="" width="225" height="300" /></a></p>
<p>Here is what I want to share with you &#8211; my impressions of our offsite meeting in Tirol, Austria on 26. and 27.9.2009. It was a get together for all &#8220;comSystos&#8221;, regardless of their role, position, education, business and technological background, sex, nationality, hair or skin colour. More ambitious people like Maxim would even call it &#8220;comSysto Open World&#8221;, I want to stick to something simpler like offsite meeting or get together.</p>
<p><a rel="attachment wp-att-218" href="http://blog.comsysto.com/2010/01/05/comsysto-offsite-meeting/img_6592/"><img class="alignnone size-medium wp-image-218" title="IMG_6592" src="http://comsysto.files.wordpress.com/2009/12/img_6592.jpg?w=300&#038;h=225" alt="" width="300" height="225" /></a><a rel="attachment wp-att-226" href="http://blog.comsysto.com/2010/01/05/comsysto-offsite-meeting/dsc00906/"> <img class="alignnone size-medium wp-image-226" title="DSC00906" src="http://comsysto.files.wordpress.com/2010/01/dsc00906.jpg?w=300&#038;h=225" alt="" width="300" height="225" /></a></p>
<p>We planned it as a work-fun weekend in a relaxed atmosphere and magnificent Tirol mountain and river scenery. And that&#8217;s the way it started on Saturday. We arrived to &#8220;Nature Resort&#8221; in Oetz and had our lunch with Tirol specialties on the terrace enjoying the late summer sun and glorious Tirol mountains. The work part began in the afternoon with the goal to share thoughts, informations, ideas and impressions around comSysto &#8211; projects, clients, people, planning, tools, processes, financials, strategy, goals, objectives, &#8230; Seems like it was interesting since our guides who were supposed to show us the way to the restaurant waited more than 40 minutes until everybody showed up.</p>
<p><a rel="attachment wp-att-209" href="http://blog.comsysto.com/2010/01/05/comsysto-offsite-meeting/dsc00939/"><img class="alignnone size-medium wp-image-209" title="DSC00939" src="http://comsysto.files.wordpress.com/2009/12/dsc00939.jpg?w=300&#038;h=225" alt="" width="300" height="225" /></a> <a rel="attachment wp-att-210" href="http://blog.comsysto.com/2010/01/05/comsysto-offsite-meeting/dsc00940/"><img class="alignnone size-medium wp-image-210" title="DSC00940" src="http://comsysto.files.wordpress.com/2009/12/dsc00940.jpg?w=300&#038;h=225" alt="" width="300" height="225" /></a></p>
<p>Quite late and even more hungry we started our walk to the restaurant following a trekking route through Tirol forrest. After 45 minutes and right before it got very dark we arrived to a lonely small restaurant located next to a nice mountain lake. Extremely friendly Tirol people served good food, loads of beers and home-made liquor while singing some for us not understandable and probably traditional Tirol songs. Few hours later our way back to &#8220;Nature Resort&#8221; was leading us through complete darkness, which can be experienced only in wild nature or at deep sea. Our guides had a solution once again &#8211; one real old-fashioned torch for everyone since fire is not only providing light but also keeping wild animals off! The biggest challenge was to hold the torch properly and not to burn yourself or people next to you, which is no surprise given the amount of beers and &#8220;schnapps&#8221; for dinner. Once we finally reached the resort with no losses or injuries, few of us decided to have some more drinks while the rest was smart enough and went straight to bed.</p>
<p><a rel="attachment wp-att-201" href="http://blog.comsysto.com/2010/01/05/comsysto-offsite-meeting/dsc00912/"><img class="alignnone size-medium wp-image-201" title="DSC00912" src="http://comsysto.files.wordpress.com/2009/12/dsc00912.jpg?w=300&#038;h=225" alt="" width="300" height="225" /></a> <a rel="attachment wp-att-205" href="http://blog.comsysto.com/2010/01/05/comsysto-offsite-meeting/dsc00917/"><img class="alignnone size-medium wp-image-205" title="DSC00917" src="http://comsysto.files.wordpress.com/2009/12/dsc00917.jpg?w=300&#038;h=225" alt="" width="300" height="225" /></a></p>
<p>While the smart rest was having a breakfast Sunday morning, few of us were slowly waking up and trying to fight the hangover. We had to hurry since our guides were waiting again. The fun part of our weekend was straight ahead &#8211; rafting on the Inn river! Inn has its source in a &#8220;gletscher&#8221; near St. Moritz (Switzerland). It ends in Passau (Germany) joining famous Danube. Several other smaller streams also coming down from icy and snowy mountain tops join Inn when it&#8217;s passing Tirol (Austria). A fact that Inn&#8217;s water temperature even in hottest summers hardly exceeds 7° C is not a surprise but we didn&#8217;t think about it before.</p>
<p><a rel="attachment wp-att-216" href="http://blog.comsysto.com/2010/01/05/comsysto-offsite-meeting/dsc00948/"><img class="alignnone size-medium wp-image-216" title="DSC00948" src="http://comsysto.files.wordpress.com/2009/12/dsc00948.jpg?w=300&#038;h=225" alt="" width="300" height="225" /></a> <a rel="attachment wp-att-213" href="http://blog.comsysto.com/2010/01/05/comsysto-offsite-meeting/dsc00944/"><img class="alignnone size-medium wp-image-213" title="DSC00944" src="http://comsysto.files.wordpress.com/2009/12/dsc00944.jpg?w=300&#038;h=225" alt="" width="300" height="225" /></a></p>
<p>After pressing ourselves into neoprene suites and feeling literally like &#8220;presswurst&#8221;, we had to prove our guides that everybody is smart enough to row. Sounds silly, but half an hour later I was sorry we didn&#8217;t excercise more. Dry rowing finished and we had to get wet.  Probably not less than 5° C (it felt like -25°) did the rest to our hangover &#8211; even in neoprene.</p>
<p><a rel="attachment wp-att-221" href="http://blog.comsysto.com/2010/01/05/comsysto-offsite-meeting/rafting_0002/"><img class="alignnone size-medium wp-image-221" title="Rafting_0002" src="http://comsysto.files.wordpress.com/2009/12/rafting_0002.jpg?w=300&#038;h=224" alt="" width="300" height="224" /></a> <a rel="attachment wp-att-222" href="http://blog.comsysto.com/2010/01/05/comsysto-offsite-meeting/rafting_0003/"><img class="alignnone size-medium wp-image-222" title="Rafting_0003" src="http://comsysto.files.wordpress.com/2009/12/rafting_0003.jpg?w=300&#038;h=225" alt="" width="300" height="225" /></a><a rel="attachment wp-att-223" href="http://blog.comsysto.com/2010/01/05/comsysto-offsite-meeting/rafting_0004/"> <img class="alignnone size-medium wp-image-223" title="Rafting_0004" src="http://comsysto.files.wordpress.com/2009/12/rafting_0004.jpg?w=300&#038;h=225" alt="" width="300" height="225" /></a></p>
<p>We were split into 4 groups on 4 boats, 2 bigger ones for 6-8 people and 2 smaller ones for 4 people. Getting into the boats and starting in slow water was easy. First white waters were managed easily and we got carefree. Our route on the Inn is rated with rafting severity degree of 3 &#8211; 4. Then it happened &#8211; a white water spot not much worse than the ones before turned our boat upside-down. The guide was shouting &#8220;row, row&#8221;, some of us thought they were doing it, some of us already panicked and didn&#8217;t do it. The result was a &#8220;flip&#8221; our guide called &#8220;nice&#8221;, 1 pair of glasses lost, 1 pair of sunglasses (playing cool when rafting!) lost and 4 guys swimming around in panic. We managed to get into our boat again after a while and were completely frozen. But after all it was a good thing &#8211; we took rafting, our guide and his commands more seriously and everything went well.</p>
<p><a rel="attachment wp-att-224" href="http://blog.comsysto.com/2010/01/05/comsysto-offsite-meeting/rafting_0005/"><img class="alignnone size-medium wp-image-224" title="Rafting_0005" src="http://comsysto.files.wordpress.com/2009/12/rafting_0005.jpg?w=300&#038;h=225" alt="" width="300" height="225" /></a> <a rel="attachment wp-att-220" href="http://blog.comsysto.com/2010/01/05/comsysto-offsite-meeting/rafting_0001/"><img class="alignnone size-medium wp-image-220" title="Rafting_0001" src="http://comsysto.files.wordpress.com/2009/12/rafting_0001.jpg?w=300&#038;h=224" alt="" width="300" height="224" /></a></p>
<p>At the total of approx. 1,5 hours our rafting ended when we reached the final stop where showers, dry clothes, food, drinks and our cars were waiting for us. Few Tirol sausages, beer, Almdudler and afternoon sun helped us recover and start our 2 hours drive back to Munich.</p>
<p>Ötz, &#8220;Nature Resort&#8221;, many thanks, everything was perfect, we&#8217;ll be back! But next time we will raft on &#8220;Ötztaler Achen&#8221; (severity 5 &#8211; 6) <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  Meanwhile we&#8217;ll try some sailing!</p><br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/comsysto.wordpress.com/184/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/comsysto.wordpress.com/184/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/comsysto.wordpress.com/184/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/comsysto.wordpress.com/184/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/comsysto.wordpress.com/184/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/comsysto.wordpress.com/184/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/comsysto.wordpress.com/184/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/comsysto.wordpress.com/184/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/comsysto.wordpress.com/184/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/comsysto.wordpress.com/184/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/comsysto.wordpress.com/184/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/comsysto.wordpress.com/184/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/comsysto.wordpress.com/184/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/comsysto.wordpress.com/184/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.comsysto.com&blog=8304660&post=184&subd=comsysto&ref=&feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.comsysto.com/2010/01/05/comsysto-offsite-meeting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fe000e7c795e272018699bd16fb3a708?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Tomislav Zorc</media:title>
		</media:content>

		<media:content url="http://comsysto.files.wordpress.com/2009/12/img_6607-e1262684983739.jpg?w=225" medium="image">
			<media:title type="html">IMG_6607</media:title>
		</media:content>

		<media:content url="http://comsysto.files.wordpress.com/2009/12/img_6592.jpg?w=300" medium="image">
			<media:title type="html">IMG_6592</media:title>
		</media:content>

		<media:content url="http://comsysto.files.wordpress.com/2010/01/dsc00906.jpg?w=300" medium="image">
			<media:title type="html">DSC00906</media:title>
		</media:content>

		<media:content url="http://comsysto.files.wordpress.com/2009/12/dsc00939.jpg?w=300" medium="image">
			<media:title type="html">DSC00939</media:title>
		</media:content>

		<media:content url="http://comsysto.files.wordpress.com/2009/12/dsc00940.jpg?w=300" medium="image">
			<media:title type="html">DSC00940</media:title>
		</media:content>

		<media:content url="http://comsysto.files.wordpress.com/2009/12/dsc00912.jpg?w=300" medium="image">
			<media:title type="html">DSC00912</media:title>
		</media:content>

		<media:content url="http://comsysto.files.wordpress.com/2009/12/dsc00917.jpg?w=300" medium="image">
			<media:title type="html">DSC00917</media:title>
		</media:content>

		<media:content url="http://comsysto.files.wordpress.com/2009/12/dsc00948.jpg?w=300" medium="image">
			<media:title type="html">DSC00948</media:title>
		</media:content>

		<media:content url="http://comsysto.files.wordpress.com/2009/12/dsc00944.jpg?w=300" medium="image">
			<media:title type="html">DSC00944</media:title>
		</media:content>

		<media:content url="http://comsysto.files.wordpress.com/2009/12/rafting_0002.jpg?w=300" medium="image">
			<media:title type="html">Rafting_0002</media:title>
		</media:content>

		<media:content url="http://comsysto.files.wordpress.com/2009/12/rafting_0003.jpg?w=300" medium="image">
			<media:title type="html">Rafting_0003</media:title>
		</media:content>

		<media:content url="http://comsysto.files.wordpress.com/2009/12/rafting_0004.jpg?w=300" medium="image">
			<media:title type="html">Rafting_0004</media:title>
		</media:content>

		<media:content url="http://comsysto.files.wordpress.com/2009/12/rafting_0005.jpg?w=300" medium="image">
			<media:title type="html">Rafting_0005</media:title>
		</media:content>

		<media:content url="http://comsysto.files.wordpress.com/2009/12/rafting_0001.jpg?w=300" medium="image">
			<media:title type="html">Rafting_0001</media:title>
		</media:content>
	</item>
		<item>
		<title>Adobe Flash Catalyst: Testbeispiel</title>
		<link>http://blog.comsysto.com/2009/11/27/adobe-flash-catalyst-testbeispiel/</link>
		<comments>http://blog.comsysto.com/2009/11/27/adobe-flash-catalyst-testbeispiel/#comments</comments>
		<pubDate>Fri, 27 Nov 2009 16:01:11 +0000</pubDate>
		<dc:creator>DamirAbdic</dc:creator>
				<category><![CDATA[Frontend Development]]></category>
		<category><![CDATA[action script]]></category>
		<category><![CDATA[adobe]]></category>
		<category><![CDATA[catalyst]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[flex]]></category>

		<guid isPermaLink="false">http://comsysto.wordpress.com/?p=191</guid>
		<description><![CDATA[Ein sehr gutes Einstiegsbeispiel für Adobe Flash Catalyst: http://createordie.de/cod/artikel/Flash-Catalyst-2575.html Nachdem man das Beispiel durchgespielt hat, versteht man auch warum die vielversprechende Software es noch nicht in die Ladenregale geschafft hat. Das Setzen der Eigenschaften der Komponenten funktionert noch nicht. Gelangt man zum letzten Schritt, bei dem man &#8220;setProperty&#8221; setzen möchte um das mittlere Bild bei [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.comsysto.com&blog=8304660&post=191&subd=comsysto&ref=&feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div>
<dl>
<dt><a rel="attachment wp-att-288" href="http://comsysto.wordpress.com/?attachment_id=288"><img title="adobe_flash_catalyst" src="http://damirabdic.files.wordpress.com/2009/11/adobe_flash_catalyst1.png?w=575&#038;h=405" alt="Adobe Flash Catalyst" width="575" height="405" /></a></dt>
</dl>
</div>
<p>Ein sehr gutes Einstiegsbeispiel für Adobe Flash Catalyst:</p>
<p><a href="http://createordie.de/cod/artikel/Flash-Catalyst-2575.html">http://createordie.de/cod/artikel/Flash-Catalyst-2575.html</a></p>
<p>Nachdem man das Beispiel durchgespielt hat, versteht man auch warum die vielversprechende Software es noch nicht in die Ladenregale geschafft hat. Das Setzen der Eigenschaften der Komponenten funktionert noch nicht.</p>
<p>Gelangt man zum letzten Schritt, bei dem man &#8220;<em>setProperty</em>&#8221; setzen möchte um das mittlere Bild bei den Transitions vom 1. bis zum 3. Bild und umgehehrt auszublenden, stellt man fest dass eine BETA Software eben mal Mängel hat. Durch Klicken auf &#8220;<em>Add Action</em>&#8221; legt man zwar eine Aktion an, aber dann kann man die Properties im Property-Reiter nicht bearbeiten. Dieses Problem lässt sich durch folgende Code-Modifizierung (z.B. im Flash Builder) beheben.</p>
<p><a rel="attachment wp-att-291" href="http://comsysto.wordpress.com/?attachment_id=291"><img title="transitionFading" src="http://damirabdic.files.wordpress.com/2009/11/transitionfading.png?w=575&#038;h=550" alt="Adding an instance of the Fade Class" width="575" height="550" /></a></p>
<p>Innerhalb der Transitions:  <strong>fromState=&#8221;Page3&#8243; toState=&#8221;Page1&#8243; und fromState=&#8221;Page1&#8243; toState=&#8221;Page3&#8243;</strong> fügt man noch eine Instanz der &#8220;Parallel  &#8211; Klasse&#8221; ein. Durch den Fade &#8211; Effekt kann man beispielsweise das mittlere Bild transparent schalten. Das &#8220;<em>autoReverse</em>&#8221; property macht dies rückgängig, sobald man zu einem anderen &#8220;<em>State</em>&#8221; wechselt.</p><br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/comsysto.wordpress.com/191/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/comsysto.wordpress.com/191/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/comsysto.wordpress.com/191/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/comsysto.wordpress.com/191/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/comsysto.wordpress.com/191/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/comsysto.wordpress.com/191/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/comsysto.wordpress.com/191/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/comsysto.wordpress.com/191/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/comsysto.wordpress.com/191/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/comsysto.wordpress.com/191/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/comsysto.wordpress.com/191/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/comsysto.wordpress.com/191/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/comsysto.wordpress.com/191/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/comsysto.wordpress.com/191/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.comsysto.com&blog=8304660&post=191&subd=comsysto&ref=&feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.comsysto.com/2009/11/27/adobe-flash-catalyst-testbeispiel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/57fed0d4f112c86cff5c3ca679c93fdb?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">DamirAbdic</media:title>
		</media:content>

		<media:content url="http://damirabdic.files.wordpress.com/2009/11/adobe_flash_catalyst1.png?w=575" medium="image">
			<media:title type="html">adobe_flash_catalyst</media:title>
		</media:content>

		<media:content url="http://damirabdic.files.wordpress.com/2009/11/transitionfading.png?w=575" medium="image">
			<media:title type="html">transitionFading</media:title>
		</media:content>
	</item>
		<item>
		<title>Oracle BI with multiple Repositories and MySQL Datasource</title>
		<link>http://blog.comsysto.com/2009/08/25/oracle-bi-with-multiple-repositories-and-mysql-datasource/</link>
		<comments>http://blog.comsysto.com/2009/08/25/oracle-bi-with-multiple-repositories-and-mysql-datasource/#comments</comments>
		<pubDate>Tue, 25 Aug 2009 21:52:59 +0000</pubDate>
		<dc:creator>MaximDemenko</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Oracle BI]]></category>
		<category><![CDATA[WebLogic]]></category>

		<guid isPermaLink="false">http://comsysto.wordpress.com/?p=125</guid>
		<description><![CDATA[Probably well known fact is that Oracle BI server can serve multiple repositories at the same time.  Equally well known is that MySQL (or any ODBC source) can be accessed by Oracle BI. At least theoretically.  In fact, it works, but there are some pitfalls, which one should be aware of. Ok, it sounds a [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.comsysto.com&blog=8304660&post=125&subd=comsysto&ref=&feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Probably well known fact is that Oracle BI server can serve multiple repositories at the same time.  Equally well known is that MySQL (or any ODBC source) can be accessed by Oracle BI. At least theoretically.  In fact, it works, but there are some pitfalls, which one should be aware of. Ok, it sounds a little unrelated to each other and one can ask &#8211; why bother, in most cases it is still Oracle, oc4j and only one instance per machine.  Right. The problem with this standard configuration (of course, it is only my personal opinion) &#8211; it is delivered and works out of the box.  It is not bad at all, but most part of configuration is done in background and the person who implement oracle bi doesn&#8217;t get a chance to understand configuration in such default environment.  Chosing nonstandard components ( and it is often a requirement in a custom project) provides better understanding how single components work together.</p>
<div id="attachment_126" class="wp-caption alignleft" style="width: 257px"><img class="size-medium wp-image-126" title="biee" src="http://comsysto.files.wordpress.com/2009/08/biee.jpeg?w=247&#038;h=300" alt="OBIEE Architecture" width="247" height="300" /><p class="wp-caption-text">OBIEE Architecture</p></div>
<p>In general it isn&#8217;t at all  the most terrible idea to have a look into documentation and try to understand architecture of the software product before start to install or configure it.  From the picture (borrowed from the oracle documentation) it is clear that the 3 components (marked red on the picture) are the most important in this architecture:</p>
<ul>
<li style="text-align:left;">j2ee server (web application containter) which communicates with presentation services and brings the data to the client (web browser)</li>
<li style="text-align:left;">presentation services which communicates with web tier and with oracle bi server (over odbc)</li>
<li style="text-align:left;">oracle bi server which performs the actual bi queries and communicate with data source (rdbms or odbc source or xml file)</li>
</ul>
<p>To serve multiple repositories only one instance of bi server is needed, corresponding rpd files should be placed into OracleBI_HOME/server/Repository directory:</p>
<pre class="brush: bash;">
tree  ../server/Repository/ -P &quot;*.rpd&quot;
../server/Repository/
|-- paint.rpd
|-- sakila.rpd
|-- samplesales.rpd
`-- sh.rpd
</pre>
<p>and every repository should be referenced in oracle bi config file (NQSConfig.INI):</p>
<pre class="brush: java;">
[ REPOSITORY ]

// Star = samplesales.rpd, DEFAULT;
samplesales = samplesales.rpd, DEFAULT;
sh = sh.rpd;
sakila = sakila.rpd;
</pre>
<p>That&#8217;s all regarding bi server, for presentation service a little bit more work is required, but first i would like to show how  MySQL database and odbc DSN should be configured (because the blog title implies, not only multiple repositories, but one of them with MySQL as datasource). To create a database (please, don&#8217;t blame me for absolutely no security consideration, it&#8217;s only an example) &#8211; install mysql with any suitable tool &#8211; for example with yum. My test system is Cent OS 5.3 x86-64 machine, on the RHEL or OEL setup is absolutely the same, 32bit platform don&#8217;t differ much ( but there are some differences, which i&#8217;ll  mention later). After that, assuming mysql is started:</p>
<pre class="brush: python;">
 mysql -u root
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 59
Server version: 5.0.45 Source distribution
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql&gt; create database sakila;
Query OK, 1 row affected (0.02 sec)
mysql&gt; grant all privileges on sakila.* to biee@'localhost' identified by 'biee' with  grant option;
Query OK, 0 rows affected (0.00 sec)
mysql&gt; grant all privileges on sakila.* to biee@'%' identified by 'biee' with grant option;
Query OK, 0 rows affected (0.01 sec)
mysql&gt; flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql&gt; Bye
mysql -u root sakila &lt; sakila-schema.sql
mysql -u root sakila &lt; sakila-data.sql
</pre>
<p>The demo database <a href="http://downloads.mysql.com/docs/sakila-db.tar.gz" target="_blank">sakila</a> can be downloaded from MySQL documentation page. Next step is to configure and test an odbc connection for this datasource. To do that, add to the system odbc config file ( /etc/odbc.ini) following section:</p>
<pre class="brush: java;">
[sakila]
Driver       = /usr/lib64/libmyodbc3.so
Description  = Connector/ODBC 3.51 Driver DSN
SERVER       = localhost
PORT         = 3306
USER         =
Password     =
Database     = sakila
OPTION       =
SOCKET       = /var/lib/mysql/mysql.sock
</pre>
<p>and test the connection with the ODBC client isql</p>
<pre class="brush: sql;">
isql sakila biee biee
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL&gt; select table_name,engine FROM information_schema.tables where table_schema='sakila';
+-----------------------------------------------------------------+-----------------------------------------------------------------+
| table_name                                                      | engine                                                          |
+-----------------------------------------------------------------+-----------------------------------------------------------------+
| actor                                                           | InnoDB                                                          |
| actor_info                                                      |                                                                 |
| address                                                         | InnoDB                                                          |
| category                                                        | InnoDB                                                          |
| city                                                            | InnoDB                                                          |
| country                                                         | InnoDB                                                          |
| customer                                                        | InnoDB                                                          |
| customer_list                                                   |                                                                 |
| film                                                            | InnoDB                                                          |
| film_actor                                                      | InnoDB                                                          |
| film_category                                                   | InnoDB                                                          |
| film_list                                                       |                                                                 |
| film_text                                                       | MyISAM                                                          |
| inventory                                                       | InnoDB                                                          |
| language                                                        | InnoDB                                                          |
| nicer_but_slower_film_list                                      |                                                                 |
| payment                                                         | InnoDB                                                          |
| rental                                                          | InnoDB                                                          |
| sales_by_film_category                                          |                                                                 |
| sales_by_store                                                  |                                                                 |
| staff                                                           | InnoDB                                                          |
| staff_list                                                      |                                                                 |
| store                                                           | InnoDB                                                          |
+-----------------------------------------------------------------+-----------------------------------------------------------------+
SQLRowCount returns 23
23 rows fetched
SQL&gt; quit
</pre>
<p>For odbc connections oracle bi uses its own odbc. ini , which is located in OracleBI_HOME/setup/odbc.ini. After being ensured odbc connection works, the simplest step is to copy the odbc.ini entry for this database. Indeed, it is enough on 32bit platform, but doesn&#8217;t work on  x86-64 &#8211; oracle bi  couldn&#8217;t connect to my database. For troubleshouting, the usual suspicious were very useful (as expected):</p>
<ul>
<li>bi server log (Oracle_BI_HOME/Log/NQServer.log)</li>
<li>odbc trace file (activated by following section in oracle bi  odbc.ini file)</li>
<li>
<pre class="brush: java;">
[ODBC]
# Trace=0
Trace=1
TraceFile=/tmp/odbctrace.out
TraceDll=/opt/biee/OracleBI/odbc/lib/odbctrac.so
InstallDir=/opt/biee/OracleBI/odbc
UseCursorLib=0
IANAAppCodePage=4
</pre>
</li>
<li>system calls trace ( strace -f -o /tmp/nqsserver.trc -p process_id_of_bi_server)</li>
</ul>
<p>In short, the issue is:  oracle bi on linux exists only as 32 bit software. That is not a problem to run it on x64 bit system, oracle software itself works fine. But supplied odbc driver manager ( from data direct) is in 32bit version as well ( probably 32bit nqsserver can only be accessed over 32bit odbc driver) and it&#8217;s unable to load 64bit linux library for mysql odbc driver. Well, but it should be possible to access 64bit database with 32bit odbc client &#8211; was my first thought. Indeed, it works, but odbc driver in 32bit version  doesn&#8217;t exist for x64 CentOS ( and i assume &#8211; RHEL and OEL ) distribution. I don&#8217;t think, it&#8217;s a bug, in opposite, i tend to assume &#8211; there are some conflicts in running 32bit odbc client on 64bit system, however, i could not find any issue in internet or on my test system &#8211; and workaround is rather simple &#8211; download odbc driver from 32bit repository and use it for bi server. This don&#8217;t work out of the box &#8211; bi server driver manager can not load 32bit driver as well &#8211; but for another reason &#8211; it can&#8217;t find 32 bit mysql client libraries. Simple to solve &#8211; just extend LD_LIBRARY_PATH  appropriated (the same is very true regarding Oracle client on a 64bit Linux &#8211; oracle bi has to be pointed to 32bit libraries as well) , here is the final configuration for biee os user (first one for environment and second for OracleBI_HOME/setup/odbc.ini) :</p>
<pre class="brush: bash;">
echo $LD_LIBRARY_PATH
/opt/oracle/product/10.2.0.4/lib32:/usr/lib:/lib:/usr/lib/mysql:/usr/lib:
</pre>
<pre class="brush: java;">
[sakila]
Driver = /usr/lib/libmyodbc3.so
DATABASE = sakila
DESCRIPTION = sakila
USER =
PWD =
PORT = 3306
SERVER = localhost
SOCKET = /var/lib/mysql/mysql.sock

[AnalyticsWeb01]
Driver=/opt/biee/OracleBI/server/Bin/libnqsodbc.so
Description=Oracle BI Server
ServerMachine=local
Repository=samplesales
Catalog=
UID=
PWD=
Port=9703

[AnalyticsWeb02]
Driver=/opt/biee/OracleBI/server/Bin/libnqsodbc.so
Description=Oracle BI Server
ServerMachine=local
Repository=sh
Catalog=
UID=
PWD=
Port=9703

[AnalyticsWeb03]
Driver=/opt/biee/OracleBI/server/Bin/libnqsodbc.so
Description=Oracle BI Server
ServerMachine=local
Repository=sakila
Catalog=
UID=
PWD=
Port=9703
</pre>
<p>The first DSN will be used by bi server itself to connect to datasource, the other 3 &#8211; by presentation services to connect to bi server.  It means, while bi server can serve 3 different repositories, at the same time, 3 instances of presentation services are needed (separate instance for each repository). All of them connect to the bi server on the port 9703 and to distinguish different repositories they use different DSN&#8217;s. They need as well a listening address ( to enable communication with web tier) and it should be different for each instance of course. To implement it &#8211; 3 different configuration files are required ( instead of  instanceconfig.xml in OracleBIData_HOME/web/config ) , which can be created as copies of instanceconfig.xml) . Default configuration uses 9710 as listening port, so, a smart idea could be to use 9711 ans 9712 for additional config files. For example, the relevant (changed)  section from instanceconfig02.xml and instanceconfig03.xml looks like:</p>
<pre class="brush: xml;">
&lt;WebConfig&gt;
 &lt;ServerInstance&gt;
 &lt;DSN&gt;AnalyticsWeb02&lt;/DSN&gt;
 &lt;Listener port=&quot;9711&quot; /&gt;
&lt;CatalogPath&gt;/opt/biee/OracleBIData/web/catalog/sh&lt;/CatalogPath&gt;
</pre>
<pre class="brush: xml;">
&lt;WebConfig&gt;
 &lt;ServerInstance&gt;
 &lt;DSN&gt;AnalyticsWeb03&lt;/DSN&gt;
 &lt;Listener port=&quot;9712&quot; /&gt;
&lt;CatalogPath&gt;/opt/biee/OracleBIData/web/catalog/sakila&lt;/CatalogPath&gt;
</pre>
<p>After that &#8211; 3 instances of presentation services can be started (the sawserver executables accept a -c commandline parameter to specify a configuration file). Unfortunately, delivered run-saw.sh doesn&#8217;t allow to start multiple instances, so i wrote a <a href="http://comsysto.files.wordpress.com/2009/08/run-config-saw.pdf" target="_blank">customized start script</a> (i apologize for inconvinient media type &#8211; but the script is too long to post it here and i am really newby in regard to wordpress , i.e. i didn&#8217;t found a way to upload a shell script, that&#8217;s why i chose a pdf) , which does the same as supplied script, but additionally</p>
<ul>
<li>allows start a single instance with specified config file ( either full path to instanceconfig.xml or only basename)</li>
<li>allows stop of a single instance with specified config file</li>
<li>checks existence of specified config file</li>
<li>takes care to write to separate log file for each instance</li>
<li>takes care to not start a javahost server only by startup of first instance presentation services and shut down only if the last instance is shutdown</li>
</ul>
<p>I consider it as dirty hack, although, it works fine for me on Linux &#8211; but probably, there are some bugs , additionally i didn&#8217;t test it on solaris or hpux &#8211; so, please test it carefully if you decide to use it.  After all, the typical use case for it looks like:</p>
<pre class="brush: bash;">
./run-config-saw.sh -c instanceconfig02.xml start
Oracle BI Presentation Services with process id 27097 and config instanceconfig02.xml is already running.
Oracle BI Java Host with process id 26428 is already running
./run-config-saw.sh -c instanceconfig02.xml stop
Stopping Oracle BI Presentation Services with process id 27097 and config instanceconfig02.xml
./run-config-saw.sh -c instanceconfig02.xml start
Starting Oracle BI Presentation Services with config file instanceconfig02.xml
Oracle BI Presentation Services startup initiated.
./run-config-saw.sh -c whateveryoutypewrong start
Config File /opt/biee/OracleBIData/web/config/whateveryoutypewrong doesn't exist
Exit now ...
</pre>
<p>Now, after bi server and presentation services are configured, the last tier &#8211; webserver deployment should be completed. In my setup i used WebLogic (i consider myself slightly biased in regard to it &#8211; i like, how this software is designed and implemented), but the process is very similar on JBoss, Tomcat,OC4J or whatever you choose. To deploy the analytics.war under bea as 3 different applications &#8211; simply create 3 different directories under chosen deployment directory ( could be anywhere in system), extract analytics.war archive in each of them and modify web.xml configuration file to reflect the listening port of presentation services.</p>
<pre class="brush: bash;">
cd /opt/biee/Middleware
mkdir deployments
cd deployments
mkdir analytics0{1,2,3}
for dir in analytics*
do
 (cd $dir;jar -xf /opt/biee/OracleBI/web/analytics.war)
done
</pre>
<p>After modifiing web.xml for each application, it looks like</p>
<pre class="brush: xml;">
 cat analytics0{1..3}/WEB-INF/web.xml|grep -C 3 oracle.bi.presentation.sawserver.Port
&lt;param-value&gt;localhost&lt;/param-value&gt;
 &lt;/init-param&gt;
 &lt;init-param&gt;
&lt;param-name&gt;oracle.bi.presentation.sawserver.Port&lt;/param-name&gt;
&lt;param-value&gt;9710&lt;/param-value&gt;
 &lt;/init-param&gt;
 &lt;/servlet&gt;
--
&lt;param-value&gt;localhost&lt;/param-value&gt;
 &lt;/init-param&gt;
 &lt;init-param&gt;
&lt;param-name&gt;oracle.bi.presentation.sawserver.Port&lt;/param-name&gt;
&lt;param-value&gt;9711&lt;/param-value&gt;
 &lt;/init-param&gt;
 &lt;/servlet&gt;
--
&lt;param-value&gt;localhost&lt;/param-value&gt;
 &lt;/init-param&gt;
 &lt;init-param&gt;
&lt;param-name&gt;oracle.bi.presentation.sawserver.Port&lt;/param-name&gt;
&lt;param-value&gt;9712&lt;/param-value&gt;
 &lt;/init-param&gt;
 &lt;/servlet&gt;
</pre>
<p>The last step is to go to WebLogic Admin console and deploy these web applications ( it can be done with wlst as well)  &#8211; some screenshots  follows</p>
<p>After deployment it should be possible to access every single Oracle BI presentation service under its url (i configured WebLogic server to listen on Port 7003 &#8211; like in my <a href="http://comsysto.wordpress.com/2009/08/10/obiee-powered-with-weblogic/" target="_blank">previous blog post</a>) :</p>
<ul style="text-align:left;">
<li><a href="http://myhost:7003/analytics01" rel="nofollow">http://myhost:7003/analytics01</a></li>
<li><a href="http://myhost:7003/analytics02" rel="nofollow">http://myhost:7003/analytics02</a></li>
<li><a href="http://myhost:7003/analytics03" rel="nofollow">http://myhost:7003/analytics03</a></li>
</ul>
<p style="text-align:left;">Last thing to be mentioned &#8211; the configuration with multiple presentation services on the same host is not officially supported by oracle. But for development purposes it may be fully acceptable  &#8211; as long as it works.</p>
<div>
<div id="attachment_155" class="wp-caption alignleft" style="width: 275px"><a rel="attachment wp-att-155" href="http://comsysto.wordpress.com/2009/08/25/oracle-bi-with-multiple-repositories-and-mysql-datasource/wl01/"><img class="size-medium wp-image-155" title="wl01" src="http://comsysto.files.wordpress.com/2009/08/wl01.jpg?w=265&#038;h=130" alt="Deployment Step 1" width="265" height="130" /></a><p class="wp-caption-text">Deployment Step 1</p></div>
<div id="attachment_156" class="wp-caption alignleft" style="width: 280px"><a rel="attachment wp-att-156" href="http://comsysto.wordpress.com/2009/08/25/oracle-bi-with-multiple-repositories-and-mysql-datasource/wl02/"><img class="size-medium wp-image-156" title="wl02" src="http://comsysto.files.wordpress.com/2009/08/wl02.jpg?w=270&#038;h=138" alt="Deployment Step 2" width="270" height="138" /></a><p class="wp-caption-text">Deployment Step 2</p></div>
<div id="attachment_159" class="wp-caption alignleft" style="width: 277px"><a rel="attachment wp-att-159" href="http://comsysto.wordpress.com/2009/08/25/oracle-bi-with-multiple-repositories-and-mysql-datasource/wl03/"><img class="size-medium wp-image-159" title="wl03" src="http://comsysto.files.wordpress.com/2009/08/wl03.jpg?w=267&#038;h=190" alt="Deployment Step 3" width="267" height="190" /></a><p class="wp-caption-text">Deployment Step 3</p></div>
<div id="attachment_160" class="wp-caption alignleft" style="width: 277px"><a rel="attachment wp-att-160" href="http://comsysto.wordpress.com/2009/08/25/oracle-bi-with-multiple-repositories-and-mysql-datasource/wl04/"><img class="size-medium wp-image-160" title="wl04" src="http://comsysto.files.wordpress.com/2009/08/wl04.jpg?w=267&#038;h=193" alt="Deployment Step 4" width="267" height="193" /></a><p class="wp-caption-text">Deployment Step 4</p></div>
<div id="attachment_161" class="wp-caption alignleft" style="width: 289px"><a rel="attachment wp-att-161" href="http://comsysto.wordpress.com/2009/08/25/oracle-bi-with-multiple-repositories-and-mysql-datasource/wl05/"><img class="size-medium wp-image-161" title="wl05" src="http://comsysto.files.wordpress.com/2009/08/wl05.jpg?w=279&#038;h=153" alt="Deployment Step 5" width="279" height="153" /></a><p class="wp-caption-text">Deployment Step 5</p></div>
<div id="attachment_162" class="wp-caption alignleft" style="width: 278px"><a rel="attachment wp-att-162" href="http://comsysto.wordpress.com/2009/08/25/oracle-bi-with-multiple-repositories-and-mysql-datasource/wl06/"><img class="size-medium wp-image-162" title="wl06" src="http://comsysto.files.wordpress.com/2009/08/wl06.jpg?w=268&#038;h=137" alt="Deployment Step 6" width="268" height="137" /></a><p class="wp-caption-text">Deployment Step 6</p></div>
</div>
<p style="text-align:left;">
<p style="text-align:left;">
<p style="text-align:left;">
<p style="text-align:left;">
<p style="text-align:left;">
<p style="text-align:left;">
<p style="text-align:left;">
<p style="text-align:left;">
<p style="text-align:left;">
<p style="text-align:left;">
<p style="text-align:left;">
<p style="text-align:left;">
<p style="text-align:left;">
<p style="text-align:left;">
<p style="text-align:left;">
<p style="text-align:left;">
<p style="text-align:left;">
<p style="text-align:left;">
<p style="text-align:left;"><br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/comsysto.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/comsysto.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/comsysto.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/comsysto.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/comsysto.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/comsysto.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/comsysto.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/comsysto.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/comsysto.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/comsysto.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/comsysto.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/comsysto.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/comsysto.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/comsysto.wordpress.com/125/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.comsysto.com&blog=8304660&post=125&subd=comsysto&ref=&feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.comsysto.com/2009/08/25/oracle-bi-with-multiple-repositories-and-mysql-datasource/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ce871e2e7825d48eab337670e1e30960?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">MaximDemenko</media:title>
		</media:content>

		<media:content url="http://comsysto.files.wordpress.com/2009/08/biee.jpeg?w=247" medium="image">
			<media:title type="html">biee</media:title>
		</media:content>

		<media:content url="http://comsysto.files.wordpress.com/2009/08/wl01.jpg?w=300" medium="image">
			<media:title type="html">wl01</media:title>
		</media:content>

		<media:content url="http://comsysto.files.wordpress.com/2009/08/wl02.jpg?w=300" medium="image">
			<media:title type="html">wl02</media:title>
		</media:content>

		<media:content url="http://comsysto.files.wordpress.com/2009/08/wl03.jpg?w=300" medium="image">
			<media:title type="html">wl03</media:title>
		</media:content>

		<media:content url="http://comsysto.files.wordpress.com/2009/08/wl04.jpg?w=300" medium="image">
			<media:title type="html">wl04</media:title>
		</media:content>

		<media:content url="http://comsysto.files.wordpress.com/2009/08/wl05.jpg?w=300" medium="image">
			<media:title type="html">wl05</media:title>
		</media:content>

		<media:content url="http://comsysto.files.wordpress.com/2009/08/wl06.jpg?w=300" medium="image">
			<media:title type="html">wl06</media:title>
		</media:content>
	</item>
	</channel>
</rss>