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

<channel>
	<title>Communardo Techblog</title>
	<atom:link href="http://www.communardo.de/home/techblog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.communardo.de/home/techblog</link>
	<description></description>
	<lastBuildDate>Thu, 02 Sep 2010 07:30:25 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>de</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Die Formel enth&#228;lt einen Syntaxfehler oder wird nicht unterst&#252;tzt. Mitunter doch &#8211; nur anders!</title>
		<link>http://www.communardo.de/home/techblog/2010/09/01/die-formel-enthaelt-einen-syntaxfehler-oder-wird-nicht-unterstuetzt/</link>
		<comments>http://www.communardo.de/home/techblog/2010/09/01/die-formel-enthaelt-einen-syntaxfehler-oder-wird-nicht-unterstuetzt/#comments</comments>
		<pubDate>Wed, 01 Sep 2010 12:42:24 +0000</pubDate>
		<dc:creator>Christina Schantin</dc:creator>
				<category><![CDATA[Microsoft Sharepoint]]></category>
		<category><![CDATA[Berechnete Spalten]]></category>
		<category><![CDATA[Formeln]]></category>
		<category><![CDATA[MOSS]]></category>

		<guid isPermaLink="false">http://www.communardo.de/home/techblog/?p=3834</guid>
		<description><![CDATA[Kommt Ihnen das folgende Szenario bekannt vor? Sie wollen eine Ansicht erstellen und dabei berechnete Felder verwenden. Die Funktion ist lt. Microsoft Dokumentation korrekt, bringt aber beim Speichern der Ansicht eine Fehlermeldung ...]]></description>
		<wfw:commentRss>http://www.communardo.de/home/techblog/2010/09/01/die-formel-enthaelt-einen-syntaxfehler-oder-wird-nicht-unterstuetzt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Erfolgreicher Start des Forschungspojekts PRISMA &#8211; PeRsonalisation of Information StreaM Aggregates</title>
		<link>http://www.communardo.de/home/techblog/2010/08/09/start-research-project-prisma/</link>
		<comments>http://www.communardo.de/home/techblog/2010/08/09/start-research-project-prisma/#comments</comments>
		<pubDate>Mon, 09 Aug 2010 16:24:19 +0000</pubDate>
		<dc:creator>Torsten Lunze</dc:creator>
				<category><![CDATA[PRISMA]]></category>
		<category><![CDATA[research]]></category>
		<category><![CDATA[communication]]></category>
		<category><![CDATA[communote]]></category>
		<category><![CDATA[information]]></category>
		<category><![CDATA[microblog]]></category>
		<category><![CDATA[prisma]]></category>

		<guid isPermaLink="false">http://www.communardo.de/home/techblog/?p=3790</guid>
		<description><![CDATA[<img alt="tlu" src="http://www.gravatar.com/avatar.php/def2c311e532a9aa09ef259d664c9e63/?s=76" class="com-blog-icon"/><a href="http://www.communardo.de/home/techblog/author/tlu/" title="Artikel von Torsten Lunze">Torsten Lunze</a><p>Das Projekt PRISMA (Personalisierung von aggregierten Informationsstr&#246;men im Unternehmenskontext) ist ein gemeinsames Forschungsvorhaben der Communardo Software GmbH und der <a href="http://www.inf.tu-dresden.de/index.php?node_id=578&amp;refer_id=573&amp;ID=118&amp;ln=de" target="_blank">Technischen Universit&#228;t Dresden</a> (Professur f&#252;r Rechnernetze), welches die bislang sehr zeitaufwendige Kommunikation und Zusammenarbeit zwischen Mitarbeitern mit technologieintensiven und kreativen Aufgaben verbessern soll.</p>
<p>Verschiedene  moderne Kommunikationskan&#228;le wie E-Mail, Blogs, <a href="http://twitter.com" target="_blank">Twitter</a>, <a href="http://www.communote.com/" target="_blank">Communote</a>, RSS-Feeds und Instant Messaging sollen in PRISMA auf der Basis eines einheitlichen Transferformates von einem Web Service geb&#252;ndelt und in unternehmensinternen Web-Portalen angezeigt und bearbeitet werden. Durch innovative Technologien aus dem Bereich Informationsextraktion und Personalisierung wird es m&#246;glich sein, Kommunikationsbeitr&#228;ge automatisch thematisch und personenbezogen zu filtern bzw. zu aggregieren.</p>
<p>Im PRISMA-Projekt werden zu diesem Zweck die umfassenden Erfahrungen von Communardo im Bereich Enterprise Microblogging sowie der TU Dresden im Bereich semantischer Informationsextraktion und -integration geb&#252;ndelt,  um ein innovatives System zu entwerfen, welches die Informationsflut im Unternehmen beherrschbarer macht.</p>
<p>Das Projektergebnis soll sich leicht in bestehende IT-Infrastrukturen von Unternehmen integrieren lassen und deren Wettbewerbsf&#228;higkeit durch effizientere Kommunikation, bessere unternehmensinterne Zusammenarbeit und integriertes Wissensmanagement steigern.</p>
<p style="text-align: left">Finanziell unterst&#252;tzt wird das am 01.07.2010 gestartete zweij&#228;hrige Projekt durch Mittel der Europ&#228;ischen Union und des Freistaates Sachsen.</p>
<p style="text-align: left"><img class="aligncenter" src="http://www.communardo.de/home/techblog/files/2010/07/flagge_eu_mit_efre_logo1.jpg" alt="" /></p>
]]></description>
		<wfw:commentRss>http://www.communardo.de/home/techblog/2010/08/09/start-research-project-prisma/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Einladung zum Treffen der .NET Usergroup Dresden am 25.08.2010</title>
		<link>http://www.communardo.de/home/techblog/2010/08/02/einladung-zum-treffen-der-net-usergroup-dresden-am-25-08-2010/</link>
		<comments>http://www.communardo.de/home/techblog/2010/08/02/einladung-zum-treffen-der-net-usergroup-dresden-am-25-08-2010/#comments</comments>
		<pubDate>Mon, 02 Aug 2010 13:03:23 +0000</pubDate>
		<dc:creator>Martin Hey</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[UserGroup]]></category>

		<guid isPermaLink="false">http://www.communardo.de/home/techblog/?p=3822</guid>
		<description><![CDATA[<img alt="mhy" src="http://www.gravatar.com/avatar.php/b2628bda407a7ae43f62dd191beb6335/?s=76" class="com-blog-icon"/><a href="http://www.communardo.de/home/techblog/author/mhy/" title="Artikel von Martin Hey">Martin Hey</a><div>Das n&#228;chste Treffen der .NET Usergroup Dresden findet am 25.08.2010 statt. Austragungsort ist dieses Mal die <a href="http://www.communardo.de/" target="_blank">Communardo Software GmbH</a>.</p>
<p>Wie bereits im Juli-Treffen angek&#252;ndigt werden dabei folgende Themen eine Rolle spielen:</p>
<p><span style="font-weight: bold">Branching/Merging Strategien mit dem TFS</span> (<a href="https://www.xing.com/profile/Robert_Muehsig" target="_blank">Robert M&#252;hsig</a>)<br />
Nachdem wir bei der letzten Usergroup den Themenkomplex Buildmanagement vertieft haben, setzt Robert seinen Vortrag zum Thema TFS fort. Dieses Mal geht es um Branching- und Merging-Strategien.</p>
<p><span style="font-weight: bold">Einf&#252;hrung in die Entwicklung f&#252;r Windows Phone 7</span> (<a href="https://www.xing.com/profile/Martin_Hey" target="_blank">Martin Hey</a>)<br />
Windows Phone 7 wird dieses Jahr gelauncht. Der Vortrag soll eine Einf&#252;hrung in die M&#246;glichkeiten und Besonderheiten der Entwicklung f&#252;r Windows Phone 7 geben.</p>
<p>Das Treffen beginnt wie immer um 18:00 Uhr. Wer daran interessiert ist zu kommen, den bitten wir sich in einer der Teilnehmerlisten (<a href="https://www.xing.com/events/treffen-net-usergroup-dresden-540008" target="_blank">Xing</a> oder <a href="http://www.doodle.com/rrngtcrgv62a7wc7" target="_blank">Doodle</a>) einzutragen. Nach dem Treffen ist jeder gern eingeladen, beim Stammtisch an einem Plausch in lockerer Atmosph&#228;re &#252;ber .NET oder alles andere teilzunehmen.</p>
</div>
]]></description>
		<wfw:commentRss>http://www.communardo.de/home/techblog/2010/08/02/einladung-zum-treffen-der-net-usergroup-dresden-am-25-08-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Partnerschaft mit ShareConnect 2010</title>
		<link>http://www.communardo.de/home/techblog/2010/08/02/partnerschaft-mit-shareconnect-2010/</link>
		<comments>http://www.communardo.de/home/techblog/2010/08/02/partnerschaft-mit-shareconnect-2010/#comments</comments>
		<pubDate>Mon, 02 Aug 2010 11:36:02 +0000</pubDate>
		<dc:creator>Dorrit Riemenschneider</dc:creator>
				<category><![CDATA[Microsoft Sharepoint]]></category>
		<category><![CDATA[konferenz]]></category>
		<category><![CDATA[Shareconnect]]></category>
		<category><![CDATA[Sharepoint]]></category>

		<guid isPermaLink="false">http://www.communardo.de/home/techblog/?p=3817</guid>
		<description><![CDATA[<img alt="dri" src="http://www.gravatar.com/avatar.php/787c944feb23a1f3f8e2bd4d150fa67d/?s=76" class="com-blog-icon"/><a href="http://www.communardo.de/home/techblog/author/dri/" title="Artikel von Dorrit Riemenschneider">Dorrit Riemenschneider</a><p><a href="http://shareconnect.net/"><img class="alignnone size-full wp-image-3818" title="Share_Fullsize_Extern" src="http://www.communardo.de/home/techblog/files/2010/07/Share_Fullsize_Extern.gif" alt="" width="468" height="60" /></a></p>
<p>Die SharePoint-Technologie erobert derzeit gro&#223;e, kleine und mittlere Unternehmen im Sturm. Mit der 2010-Version wird Enterprise 2.0 zunehmend zur Realit&#228;t. Die M&#246;glichkeiten f&#252;r <strong>Business Solutions, Management, Administration und Entwicklung</strong> sind deutlich erweitert worden. Dies sind sind die Themen der <a href="http://shareconnect.net/"><strong>ShareConnect 2010</strong></a>, die vom <strong>20. &#8211; 23. September 2010 in der Rheingoldhalle Mainz</strong> stattfindet.</p>
<p>Hier k&#246;nnen Sie sich fit f&#252;r SharePoint machen –  Experten geben Ihnen Einblick in ihre Erfahrungen und zeigen Ihnen, wie sich mit SharePoint optimale Ergebnisse erzielen lassen.</p>
<p>Um die gewaltigen M&#246;glichkeiten des SharePoints auszusch&#246;pfen, ist profundes Praxis-Know-how f&#252;r Entwicklung und Management notwendig. Praxiswissen, dass Sie sich auf der ShareConnect aneignen k&#246;nnen! Neben dem vielf&#228;ltigen Programm der Hauptkonferenz beleuchten zwei Special Days wichtige Themen in einem umfassenden Sinn und bieten in zahlreichen Vortr&#228;gen kompaktes Fachwissen sowie einen idealen Rahmen f&#252;r den Austausch von Erfahrungen. Alle Informationen und den Link zur Anmeldung finden Sie unter <a href="http://shareconnect.net/">http://shareconnect.net/</a>.</p>
<p>Communardo und die SharePoint Usergroup Dresden unterst&#252;tzen die ShareConnect 2010 im Rahmen einer Medienpartnerschaft.</p>
]]></description>
		<wfw:commentRss>http://www.communardo.de/home/techblog/2010/08/02/partnerschaft-mit-shareconnect-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Interessantes zu Visio Services und Taxonomie bei der SharePoint Usergroup Dresden</title>
		<link>http://www.communardo.de/home/techblog/2010/07/30/interessantes-zu-visio-services-und-taxonomie-bei-der-sharepoint-usergroup-dresde/</link>
		<comments>http://www.communardo.de/home/techblog/2010/07/30/interessantes-zu-visio-services-und-taxonomie-bei-der-sharepoint-usergroup-dresde/#comments</comments>
		<pubDate>Fri, 30 Jul 2010 12:17:18 +0000</pubDate>
		<dc:creator>Dorrit Riemenschneider</dc:creator>
				<category><![CDATA[Microsoft Sharepoint]]></category>
		<category><![CDATA[SharePoint 2010]]></category>
		<category><![CDATA[TaxonomieStore]]></category>
		<category><![CDATA[UserGroup]]></category>
		<category><![CDATA[VisioServices]]></category>

		<guid isPermaLink="false">http://www.communardo.de/home/techblog/?p=3778</guid>
		<description><![CDATA[<img alt="dri" src="http://www.gravatar.com/avatar.php/787c944feb23a1f3f8e2bd4d150fa67d/?s=76" class="com-blog-icon"/><a href="http://www.communardo.de/home/techblog/author/dri/" title="Artikel von Dorrit Riemenschneider">Dorrit Riemenschneider</a><p>Am 27.07.2010 fand bei Communardo das 8. Treffen der SharePoint Usergroup Dresden statt, als Themen standen dieses Mal &#8220;Visio-Services: Potenzial und Alternativen&#8221; mit Kai-Uwe G&#228;rtner sowie &#8220;Taxonomy Store und Social Tagging&#8221; mit Anne R&#252;ger auf dem Programm.</p>
<p><a href="http://www.communardo.de/home/techblog/files/2010/07/spug.jpg"><img class="alignleft size-medium wp-image-3781" style="margin-right: 10px;margin-bottom: 10px" title="8. SharePoint Usergroup" src="http://www.communardo.de/home/techblog/files/2010/07/spug-300x183.jpg" alt="" width="300" height="183" /></a></p>
<p>In seiner Pr&#228;sentation zeigte Kai uns, was man mit Visio Services alles machen kann, aber auch, wo deren Grenzen liegen.</p>
<p>Beeindruckend war die Demo insbesondere zur Anzeige der Visio-Diagramme im Browser incl. stufenlosem Zoom, Verschiebung und Drilldown durch verkn&#252;pfte Diagramme  - und das alles wirklich performant. Der komplette Funktionsumfang ist sogar ohne Silverlight m&#246;glich (das Diagramm wird dann als PNG gerendert), allerdings wirkt es dann mitunter etwas hakelig und &#8220;vermatscht&#8221;. Dies wird man aber hinzunehmen bereit sein, wenn man bedenkt, dass es daf&#252;r (nach Aussage von Kai) in wirklich jedem Browser l&#228;uft.</p>
<p>Auch die JavaScript Mash-Up-API, das Caching der Diagramme und die Workflow-Visualiserung (selbst f&#252;r Workflows, die nicht in Visio designt wurden) sind nette Features.<span id="more-3778"></span></p>
<p>Wo liegt nun der Haken? Es gibt einige (durchaus wichtige) Diagrammtypen, die durch Visio Services nicht unterst&#252;tzt werden: Pivotdiagramm, Organisationsdigramm, Kalenderdiagramm, Gantdiagramm. Desweiteren werden versteckte Ebenen, Hintergrundseiten und Kommentare sowie weitere n&#252;tzliche Visio Features nicht mit gerendert. Eine vollst&#228;ndige Liste findet sich unter <a href="http://blogs.msdn.com/b/chhopkin/archive/2010/05/03/supported-diagrams-and-entities-in-visio-services.aspx">http://blogs.msdn.com/b/chhopkin/archive/2010/05/03/supported-diagrams-and-entities-in-visio-services.aspx</a>. Au&#223;erdem beschr&#228;nken sich die Visio Services auf das <em>Anzeigen </em>der Diagramme im Browser &#8211; f&#252;r deren <em>Bearbeitung </em>ist nach wie vor Visio erforderlich.</p>
<p>Ein Wermutstropfen und leider wohl nicht zu selten auch ein K.O.-Kriterium f&#252;r den produktiven Einsatz der Visio Services d&#252;rfte die Tatsache sein, dass diese ausschlie&#223;lich in der SharePoint Server 2010 Enterprise Edition verf&#252;gbar sind. Bei der zu diesem Punkt aufgeflammten Diskussion zu den einzelnen Editionen und den dort verf&#252;gbaren Features hatte Kai noch einen n&#252;tzlichen Link in petto: <a href="http://sharepoint.microsoft.com/en-us/buy/Pages/Editions-Comparison.aspx">http://sharepoint.microsoft.com/en-us/buy/Pages/Editions-Comparison.aspx</a>.</p>
<object width="400" height="328"><param name="movie" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=spusergroup201007visioservices-100729011603-phpapp02"/><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slideshare.net/swf/ssplayer2.swf?doc=spusergroup201007visioservices-100729011603-phpapp02"  type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="400" height="328"></embed></object>
<p>Nach der mit Diskussionen und kulinarischer St&#228;rkung verbrachten Pause lenkte Anne unsere Gedanken hin zum neuen Taxonomy Store von SharePoint 2010. Nachdem die Begrifflichkeiten gekl&#228;rt waren, wurden Vor- und Nachteile von Taxonomie und Folksonomie beleuchtet. Den gr&#246;&#223;ten Raum nahm die Demo ein, in der Anne uns nicht nur die Verwendung von Terms und TermSets veranschaulichte, sondern auch die Konfiguration von ManagedMetadata Service sowie Content Type Hub vorf&#252;hrte. Als besonders coolen kleinen &#8220;Leckerbissen&#8221; empfinde ich die Metadata Navigation, die es dem User erm&#246;glicht, die angezeigte Ergebnismenge in Listen und Bibliotheken mittels Drilldown zu verfeinern.</p>
<object width="400" height="328"><param name="movie" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=sharepoint-usergroup-072010-taxonomystorevssocialtagging-100729111217-phpapp02"/><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slideshare.net/swf/ssplayer2.swf?doc=sharepoint-usergroup-072010-taxonomystorevssocialtagging-100729111217-phpapp02"  type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="400" height="328"></embed></object>
<p>Auch wenn urlaubszeitbedingt das Treffen in eher kleinerer Runde stattfand, denke ich doch, dass es ein gelungener Abend mit spannenden Themen und Diskussionen war, aus dem jeder etwas f&#252;r sich mitnehmen konnte. Vielen Dank an Anne und Kai als Vortragende sowie Martin als Organisator des Treffens!</p>
]]></description>
		<wfw:commentRss>http://www.communardo.de/home/techblog/2010/07/30/interessantes-zu-visio-services-und-taxonomie-bei-der-sharepoint-usergroup-dresde/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SharePoint-Fehleranzeige aktivieren</title>
		<link>http://www.communardo.de/home/techblog/2010/07/30/sharepoint-fehleranzeige-aktivieren/</link>
		<comments>http://www.communardo.de/home/techblog/2010/07/30/sharepoint-fehleranzeige-aktivieren/#comments</comments>
		<pubDate>Fri, 30 Jul 2010 10:17:32 +0000</pubDate>
		<dc:creator>Martin Hey</dc:creator>
				<category><![CDATA[Microsoft Sharepoint]]></category>
		<category><![CDATA[Fehler]]></category>
		<category><![CDATA[SharePoint 2010]]></category>
		<category><![CDATA[web.config]]></category>

		<guid isPermaLink="false">http://www.communardo.de/home/techblog/?p=3758</guid>
		<description><![CDATA[<img alt="mhy" src="http://www.gravatar.com/avatar.php/b2628bda407a7ae43f62dd191beb6335/?s=76" class="com-blog-icon"/><a href="http://www.communardo.de/home/techblog/author/mhy/" title="Artikel von Martin Hey">Martin Hey</a><p>Aus der Entwicklung mit ASP.NET und auch aus der Entwicklung mit WSS 3.0 und MOSS 2007 kennt man, dass man durch &#228;ndern der web.config (unter C:\inetpub\wwwroot\VirtualDirectories\Port_Number) erreichen kann, dass detaillierte Fehlermeldungen angezeigt werden. Dazu setzt man im Tag customErrors das Attribut &#8220;mode&#8221; auf den Wert &#8220;Off&#8221;. Diese M&#246;glichkeit gibt es auch weiterhin in SharePoint 2010 und hat zur Folge, dass statt der relativ unaussagekr&#228;ftigen aber daf&#252;r in einem frischen Design verfassten Fehlermeldung</p>
<p><a href="http://www.communardo.de/home/techblog/files/2010/07/20100728_error1.png"><img class="alignnone size-full wp-image-3759" title="20100728_error1" src="http://www.communardo.de/home/techblog/files/2010/07/20100728_error1.png" alt="" width="405" height="205" /></a></p>
<p>der bekannte Yellow Screen of Death</p>
<p><a href="http://www.communardo.de/home/techblog/files/2010/07/20100728_error2.png"><img class="alignnone size-full wp-image-3760" title="20100728_error2" src="http://www.communardo.de/home/techblog/files/2010/07/20100728_error2.png" alt="" width="797" height="368" /></a></p>
<p>erscheint.</p>
<p>Neu ist, dass es in Sharepoint 2010 nicht nur eine, sondern mehrere web.configs gibt, die relevant sind (s. <a href="http://msdn.microsoft.com/en-us/library/ms460914.aspx" target="_blank">http://msdn.microsoft.com/en-us/library/ms460914.aspx</a>):</p>
<ul>
<li>\\Inetpub\wwwroot\VirtualDirectories\Port_Number</li>
<li>\\Program Files\Common Files\Microsoft Shared\Web Server Extensions\wpresources</li>
<li>%ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\CONFIG</li>
<li>%ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\ISAPI</li>
<li>%ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\LAYOUTS</li>
</ul>
<p>Ist ein WebPart also auf einer Inhaltsseite eingebunden, muss man die web.config unter C:\Inetpub\wwwroot\VirtualDirectories\Port_Number anpassen, um aussagekr&#228;ftigere Fehlermeldungen zu erhalten, hat man das WebPart als Control auf einer Administrationsseite im _layouts-Ordner eingebunden, muss die web.config unter %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\LAYOUTS ge&#228;ndert werden.</p>
]]></description>
		<wfw:commentRss>http://www.communardo.de/home/techblog/2010/07/30/sharepoint-fehleranzeige-aktivieren/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Unvollst&#228;ndige Confluence Seitenvorschau ab Firefox 3.6.7</title>
		<link>http://www.communardo.de/home/techblog/2010/07/29/unvollstaendige-confluence-seitenvorschau-im-firefox-3-6-7/</link>
		<comments>http://www.communardo.de/home/techblog/2010/07/29/unvollstaendige-confluence-seitenvorschau-im-firefox-3-6-7/#comments</comments>
		<pubDate>Thu, 29 Jul 2010 14:27:59 +0000</pubDate>
		<dc:creator>Niels Jaeckel</dc:creator>
				<category><![CDATA[Confluence]]></category>
		<category><![CDATA[Systemadministration]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[preview]]></category>
		<category><![CDATA[vorschau]]></category>

		<guid isPermaLink="false">http://www.communardo.de/home/techblog/?p=3772</guid>
		<description><![CDATA[<img alt="nja" src="http://www.gravatar.com/avatar.php/37f346c2d0c31b16905f6e9c48d2da4b/?s=76" class="com-blog-icon"/><a href="http://www.communardo.de/home/techblog/author/nja/" title="Artikel von Niels Jaeckel">Niels Jaeckel</a><blockquote><p><strong>Update</strong>:</p>
<p>Mittlerweile hat Atlassian einen Workaround entwickelt, der am <a href="http://jira.atlassian.com/browse/CONF-20441">Fehlerticket </a>beschrieben ist.</p></blockquote>
<p>Seit der Ver&#246;ffentlichung der Version 3.6.7 des Mozilla Firefox am 20. Juli 2010 gibt es Probleme mit der Vorschaufunktion im Confluence. Dort werden die Inhalte der Vorschau abgeschnitten. Auch die inzwischen ver&#246;ffentlichte Version 3.6.8 ist noch anf&#228;llig.</p>
<p><a href="http://www.communardo.de/home/techblog/files/2010/07/bug_confluence_preview.png"><img class="alignnone size-medium wp-image-3773" title="Inhalte der Vorschauansicht werden abgeschnitten." src="http://www.communardo.de/home/techblog/files/2010/07/bug_confluence_preview-300x207.png" alt="" width="300" height="207" /></a></p>
<p>F&#252;r das Problem gibt es bereits ein <a href="http://jira.atlassian.com/browse/CONF-20441">Ticket im Atlassian Jira</a>. Dort wird eine L&#246;sung vorgestellt, die einen tiefen Eingriff ins System erfordert. Eine einfachere L&#246;sung ist das Einf&#252;gen von folgendem HTML-Schnipsel als &#8220;Kundenspezifisches HTML&#8221;:</p>
<pre>&lt;style type="text/css"&gt;
#preview #previewArea iframe {

   overflow: visible;
}
&lt;/style&gt;
</pre>
<p>Damit wird der f&#252;r die Vorschau zust&#228;ndige IFrame angewiesen, bei &#252;bergro&#223;en Inhalten Scrollbars anzubieten. Im Ergebnis wird der Ansichtsbereich nicht auf die H&#246;he des Inhalts vergr&#246;&#223;ert, aber immerhin sind die Inhalte &#252;ber die Scrollbars wieder  einsehbar:</p>
<p><a href="http://www.communardo.de/home/techblog/files/2010/07/fixed-bug_confluence_preview.png"><img class="alignnone size-medium wp-image-3774" title="&#220;bergro&#223;er Inhalt ist &#252;ber Scrollbars erreichbar" src="http://www.communardo.de/home/techblog/files/2010/07/fixed-bug_confluence_preview-300x206.png" alt="" width="300" height="206" /></a></p>
<h3>Installationsanweisung</h3>
<ul>
<li>Aufruf von Confluence Administration -&gt; Gestaltung -&gt; Kundenspezifische HTML</li>
<li>Einf&#252;gen des obigen Codes in das Feld &#8220;Am Beginn des HAUPTTEXTES&#8221;</li>
</ul>
]]></description>
		<wfw:commentRss>http://www.communardo.de/home/techblog/2010/07/29/unvollstaendige-confluence-seitenvorschau-im-firefox-3-6-7/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>SharePoint Workflows mit Visio erstellen</title>
		<link>http://www.communardo.de/home/techblog/2010/07/29/sharepoint-workflows-mit-visio-erstellen/</link>
		<comments>http://www.communardo.de/home/techblog/2010/07/29/sharepoint-workflows-mit-visio-erstellen/#comments</comments>
		<pubDate>Thu, 29 Jul 2010 12:19:08 +0000</pubDate>
		<dc:creator>Martin Hey</dc:creator>
				<category><![CDATA[Microsoft Sharepoint]]></category>
		<category><![CDATA[Sharepoint]]></category>
		<category><![CDATA[visio]]></category>
		<category><![CDATA[workflow]]></category>

		<guid isPermaLink="false">http://www.communardo.de/home/techblog/?p=3761</guid>
		<description><![CDATA[<img alt="mhy" src="http://www.gravatar.com/avatar.php/b2628bda407a7ae43f62dd191beb6335/?s=76" class="com-blog-icon"/><a href="http://www.communardo.de/home/techblog/author/mhy/" title="Artikel von Martin Hey">Martin Hey</a><p>Mit SharePoint 2010 in Kombination mit Visio 2010 besteht nun die M&#246;glichkeit, auch ohne SharePoint Designer Workflows zu definieren.</p>
<p>Im Bereich der Fluss-Diagramme findet man das Template Microsoft SharePoint Workflow. Auf Basis dieses Templates soll nun exemplarisch ein Workflow erstellt werden.</p>
<p><a href="http://www.communardo.de/home/techblog/files/2010/07/20100729_visioworkflow.png"><img class="alignnone size-full wp-image-3762" title="20100729_visioworkflow" src="http://www.communardo.de/home/techblog/files/2010/07/20100729_visioworkflow.png" alt="" width="797" height="446" /></a></p>
<p>Hat man auf Basis des Templates eine neue Zeichnung erstellt, kann man direkt mit der Erstellung des Workflows beginnen. Wenn man schon mit Flussdiagrammen gearbeitet hat, ist die Handhabung recht einfach.</p>
<p>Der Anwendungsfall im Beispiel soll ein einfacher Urlaubsantrag sein. Mitarbeiter sollen in der Lage sein, Urlaubsantr&#228;ge zu erfassen. Dieser soll zur Genehmigung einem Mitarbeiter der HR-Abteilung vorgelegt werden. Im Anschluss daran wird der beantragende Mitarbeiter &#252;ber den Status seines Antrags informiert.</p>
<p><span id="more-3761"></span>Um dies zu designen zieht man einfach die entsprechenden Shapes auf die Zeichnung und verbindet diese Shapes dann. Um die Lesbarkeit zu erh&#246;hen und Aufgaben n&#228;her zu spezifizieren kann und sollte man die Standard-Texte anpassen.</p>
<p><a href="http://www.communardo.de/home/techblog/files/2010/07/20100729_visioworkflow2.png"><img class="alignnone size-full wp-image-3763" title="20100729_visioworkflow2" src="http://www.communardo.de/home/techblog/files/2010/07/20100729_visioworkflow2.png" alt="" width="698" height="215" /></a></p>
<p>Vor dem Export sollte man mit Hilfe des Men&#252;punktes &#8220;Diagramm &#252;berpr&#252;fen&#8221; einen Check auf Probleme durchf&#252;hren. Ein Klick auf &#8220;Exportieren&#8221; erzeugt eine VWI-Datei, die als Austauschformat dient.</p>
<p>Schaut man sich diese Datei etwas n&#228;her an, wird man feststellen, dass sie den Workflow als VDX-Datei, als auch als XOML-Datei beinhaltet.</p>
<p><a href="http://www.communardo.de/home/techblog/files/2010/07/20100729_visioworkflow3.png"><img class="alignnone size-full wp-image-3764" title="20100729_visioworkflow3" src="http://www.communardo.de/home/techblog/files/2010/07/20100729_visioworkflow3.png" alt="" width="516" height="163" /></a></p>
<p>In meinem Beispiel gibt es 2 Listen: Die Benutzerdefinierte Liste Urlaubsantr&#228;ge beinhaltet die Urlaubsantr&#228;ge, die Kalenderliste Urlaubskalender beinhaltet die genehmigten Urlaube in der &#220;bersicht.</p>
<p>Um aus der Visio-Zeichnung nun einen SharePoint-Workflow zu  generieren, wird SharePoint Designer 2010 ben&#246;tigt. Hier kann man die  eben erstellte Austauschdatei importieren. In meinem Fall soll der Workflow als Listenworkflow an die eben genannte Liste Urlaubsantr&#228;ge gebunden werden.</p>
<p><a href="http://www.communardo.de/home/techblog/files/2010/07/20100729_visioworkflow4.png"><img class="alignnone size-full wp-image-3765" title="20100729_visioworkflow4" src="http://www.communardo.de/home/techblog/files/2010/07/20100729_visioworkflow4.png" alt="" width="444" height="308" /></a></p>
<p>SharePoint Designer erzeugt nun einen Workflow, der schon der grundlegenden Struktur aus der Visio-Zeichnung entspricht, nun aber noch von einer technisch versierten Person mit Leben gef&#252;llt werden muss.</p>
<p><a href="http://www.communardo.de/home/techblog/files/2010/07/20100729_visioworkflow5.png"><img class="alignnone size-full wp-image-3766" title="20100729_visioworkflow5" src="http://www.communardo.de/home/techblog/files/2010/07/20100729_visioworkflow5.png" alt="" width="575" height="482" /></a></p>
<p>Man sieht, dass als Hilfestellung die ge&#228;nderten Beschriftungen aus Visio &#252;bernommen wurden.</p>
<p>Erster Schritt im Workflow ist die Pr&#252;fung auf einen genehmigungspflichtigen Urlaubsantrag. Hier k&#246;nnte man den Inhaltstyp abfragen. In diesem Fall gibt es ein Feld Typ und wenn hier &#8220;Sonderurlaub&#8221; steht, soll eine Genehmigung erfolgen. Die Einrichtung ist recht selbsterkl&#228;rend.<a href="http://www.communardo.de/home/techblog/files/2010/07/20100729_visioworkflow6.png"><img class="alignnone size-full wp-image-3769" title="20100729_visioworkflow6" src="http://www.communardo.de/home/techblog/files/2010/07/20100729_visioworkflow6.png" alt="" width="604" height="448" /></a></p>
<p>In den Workflow-Einstellungen kann man nun noch definieren, wann der Workflow starten soll (z.B. sobald ein Eintrag erstellt wurde) &#8211; das ist ja schon aus SharePoint bekannt.</p>
<p>Der Workflow kann nun auch wieder nach Visio exportiert werden. Es entsteht dabei wieder eine VWI-Datei, die in Visio importiert und weiter bearbeitet werden kann. Im Beispiel k&#246;nnte man nun noch eine Eingangsbest&#228;tigung zu Beginn des Workflows versenden. Dazu wird der Workflow einfach im Visio ge&#228;ndert, exportiert und erneut in SharePoint Designer ge&#246;ffnet.</p>
<p>Wie man sieht, sind alle Einstellungen noch enthalten, die neu hinzugef&#252;gten Schritte m&#252;ssen nur noch bearbeitet werden.</p>
<p><a href="http://www.communardo.de/home/techblog/files/2010/07/20100729_visioworkflow7.png"><img class="alignnone size-full wp-image-3770" title="20100729_visioworkflow7" src="http://www.communardo.de/home/techblog/files/2010/07/20100729_visioworkflow7.png" alt="" width="601" height="488" /></a></p>
<p>Zusammenfassend kann man sagen, dass die Erstellung von Workflows per Visio in meinen Augen eine sch&#246;ne M&#246;glichkeit ist, von fachlicher Seite her zu definieren wie ein Prozess ablaufen soll. Die technische Umsetzung muss nach wie vor ein Entwickler oder Power-User durchf&#252;hren.</p>
]]></description>
		<wfw:commentRss>http://www.communardo.de/home/techblog/2010/07/29/sharepoint-workflows-mit-visio-erstellen/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Erfahrungen mit Migrationen nach Confluence</title>
		<link>http://www.communardo.de/home/techblog/2010/07/20/erfahrungen-mit-migrationen-nach-confluence/</link>
		<comments>http://www.communardo.de/home/techblog/2010/07/20/erfahrungen-mit-migrationen-nach-confluence/#comments</comments>
		<pubDate>Tue, 20 Jul 2010 12:26:08 +0000</pubDate>
		<dc:creator>Niels Jaeckel</dc:creator>
				<category><![CDATA[Confluence]]></category>
		<category><![CDATA[CIP]]></category>
		<category><![CDATA[Content Import Plugin]]></category>
		<category><![CDATA[Erfahrungsbericht]]></category>
		<category><![CDATA[Migration]]></category>

		<guid isPermaLink="false">http://www.communardo.de/home/techblog/?p=3738</guid>
		<description><![CDATA[<img alt="nja" src="http://www.gravatar.com/avatar.php/37f346c2d0c31b16905f6e9c48d2da4b/?s=76" class="com-blog-icon"/><a href="http://www.communardo.de/home/techblog/author/nja/" title="Artikel von Niels Jaeckel">Niels Jaeckel</a><p>Seit einiger Zeit bietet Communardo einen <a href="http://www.communardo.de/home/wp-content/filebase/downloads/Communardo_Migrationsservice_2009.pdf">Migrationsservice </a>an, mit dem Daten aus vorhandenen Altsystemen nach Confluence migriert werden k&#246;nnen. Dabei kommt das Produkt <a href="http://www.communardo.de/home/communardo/produkte/content-import-plugin/">Content Import Plugin (CIP) </a>zum Einsatz. Dieses Plugin ist als Testversion frei verf&#252;gbar und kann &#252;ber das <a href="https://plugins.atlassian.com/plugin/details/18345">Atlassian Plugin Exchange</a> herunter geladen werden. &#220;ber einen <a href="http://www.shareit.com/product.html?cart=1&amp;productid=300361671&amp;languageid=1">Online Shop</a> ist zudem der Erwerb einer Volllizenz m&#246;glich. Somit k&#246;nnen Kunden, die den Migrationsservice nicht in Anspruch nehmen m&#246;chten, selbst Migrationen durchf&#252;hren.</p>
<p>Dieser Artikel beschreibt einige unserer bisherigen Erfahrung bei der Durchf&#252;hrung solcher Migrationen. Er richtet sich sowohl an Kunden, die eine solche Migration selbst durchf&#252;hren m&#246;chten, als auch an Kunden, die unseren Migrationsservice nutzen m&#246;chten.</p>
<p><span id="more-3738"></span></p>
<h3>Vorgehen bei einer Migration</h3>
<p>Migrationen mit dem CIP werden grunds&#228;tzlich zweistufig durchgef&#252;hrt: Zun&#228;chst werden die Daten des Quellsystems in ein <a href="http://www.communardo.de/home/communardo/technologien/atlassian-confluence-wiki/content-import-plugin/files/2010/03/Communardo-Content-Import-Plugin_1.1_XML-Schema-Documentation.pdf">XML-Transportformat</a> exportiert. Dieses wird anschlie&#223;end mit dem CIP in das Confluence Zielsystem importiert.</p>
<p style="text-align: center"><a href="http://www.communardo.de/home/techblog/files/2010/07/migration_en.jpg"><img class="size-full wp-image-3744 aligncenter" title="migration_en" src="http://www.communardo.de/home/techblog/files/2010/07/migration_en.jpg" alt="" width="574" height="269" /></a></p>
<p>Das Transportformat bildet dabei s&#228;mtliche Inhaltstypen (Bereiche, Seiten, Blogposts, Dateianh&#228;nge) samt Metadaten (Autor, Erstell- und &#196;nderungsdatum) ab. Auch die Seitenhierarchie und interne Verlinkungen werden unterst&#252;tzt.</p>
<h3>Erwartungshaltung des Kunden vs. Machbarkeit</h3>
<p>Unsere bisherigen Erfahrungen zeigen, dass von der Kundenseite h&#228;ufig sehr hohe Erwartungen an die Migration gestellt werden. Diese beziehen sich meist auf die Punkte</p>
<ul>
<li>inhaltliche Vollst&#228;ndigkeit</li>
<li>gleiches Aussehen</li>
<li>Funktionalit&#228;t bleibt erhalten.</li>
</ul>
<p>Die inhaltliche Vollst&#228;ndigkeit kann mithilfe des Transportformats sichergestellt werden. S&#228;mtliche Seiten und deren Inhalte k&#246;nnen davon abgebildet und folglich nach Confluence migriert werden.</p>
<p>Allerdings ist es nicht m&#246;glich, die Darstellung der Informationen und eventuelle Funktionalit&#228;t (JavaScript) verlustfrei zu migrieren. Die folgende Grafik verdeutlicht das prinzipielle Problem dahinter:</p>
<p style="text-align: center"><a href="http://www.communardo.de/home/techblog/files/2010/07/Featuremengen.png"><img class="size-full wp-image-3743 aligncenter" title="Featuremengen" src="http://www.communardo.de/home/techblog/files/2010/07/Featuremengen.png" alt="" width="403" height="361" /></a></p>
<p style="text-align: left">Die Kreise stellen den Darstellungs- und Funktionsumfang verschiedener Auszeichnungsformate dar. HTML bietet dabei den gr&#246;&#223;ten Funktions- und Variationsumfang. Mit Confluence Wiki-Code lassen sich viele Artefakte von HTML formulieren, wobei es auch zus&#228;tzliche Funktionalit&#228;ten gibt (z.B. Makros), die mit HTML nicht direkt umsetzbar sind. &#196;hnlich verh&#228;lt es sich auch mit MediaWiki-Code.</p>
<p style="text-align: left">Anhand dieses Diagramms wird klar, dass man Inhalte, die in einem MediaWiki vorliegen nicht verlustfrei nach Confluence migrieren kann, da MediaWiki Konzepte kennt, die nicht auf Confluence abbildbar sind (z.B. zusammengefasste Tabellenzellen). Ebenso lassen sich nicht s&#228;mtliche in HTML formulierbaren Inhalte nach Confluence migrieren (z.B. Definitionslisten).</p>
<p style="text-align: left">In manchen F&#228;llen k&#246;nnen bei der Migration alternative Auszeichnungen gefunden werden, die eine &#228;hnliche Darstellung erm&#246;glichen. Beispielsweise k&#246;nnten Definitionslisten in verschachtelte Listen umgewandelt werden. F&#252;r verschachtelte Tabellen hingegen gibt es derzeit keine M&#246;glichkeit einer Abbildung in Confluence.</p>
<p style="text-align: left">Ein weiteres Problem ist die Darstellung bestimmter Elemente. So kann eine &#220;berschrift, die aus MediaWiki heraus migriert wird im Confluence vollkommen anders aussehen. Der <strong>Inhalt </strong>wurde dabei vollst&#228;ndig migriert, allerdings unterscheidet sich die <strong>Darstellung </strong>in beiden Systemen. Formatierungsanweisungen, die beispielsweise mit CSS im Quellsystem hinterlegt sind, k&#246;nnen nicht migriert werden. Nur &#252;ber die Entwicklung eines Confluence Theme Plugins ist es m&#246;glich, die Darstellung der Inhalte anzupassen.</p>
<h3>Beispiele f&#252;r Migrationsprobleme</h3>
<p>Im Folgenden werden einige Probleme aufgelistet, die in den bisherigen Migrationsprojekten eine Rolle gespielt haben. Daran l&#228;sst sich recht gut erkennen, was eine Migration leisten kann, und wo die Grenzen der technischen Machbarkeit liegen.</p>
<h4 style="text-align: left">Layouttabellen</h4>
<p>Vor einigen Jahren war die Benutzung von Layouttabellen als Gestaltungsmittel von Webseiten vollkommen normal. Dies sind Tabellen, die keine sichtbaren R&#228;nder aufweisen. So war es dem Autor einer Webseite leicht m&#246;glich, Inhaltselemente nebeneinander oder in einem definierten Raster anzuordnen. Auf diese Weise konnte beispielsweise die Seitennavigation neben die Inhaltsspalte gesetzt werden.</p>
<p>Da Confluence das Konzept von randlosen Tabellen nicht kennt, ist es nicht m&#246;glich derartige Layouttabellen ohne Darstellungsunterschiede zu migrieren. Die fehlende Unterst&#252;tzung f&#252;r verschachtelte Tabellen versch&#228;rft dieses Problem weiter.</p>
<h4>Tabellen mit verbundenen Zellen</h4>
<p>Mithilfe von HTML ist es m&#246;glich, einzelne Zellen einer Tabelle in horizontaler (colspan) oder vertikaler (rowspan) Richtung zu verbinden. Auf diese Weise k&#246;nnen beispielsweise Tabellenk&#246;pfe erstellt werden, die sich &#252;ber mehrere Spalten erstrecken.</p>
<p>Auch f&#252;r derartige Zellverb&#252;nde bietet Confluence keine Formulierungsm&#246;glichkeit. Zusammengefasste Tabellenzellen k&#246;nnten demnach nur mit darstellerischen und <strong>inhaltlichen Verlusten</strong> &#252;berf&#252;hrt werden.</p>
<h4 style="text-align: left">Manuell geschriebenes HTML</h4>
<p>Als besonders schwerwiegend hat sich per Hand geschriebenes HTML herausgestellt. Viele Content Management Systeme verwenden sogenannte WYSIWYG-Editoren, um die Inhalte zu bearbeiten. Diese Editoren zeigen nicht den HTML-Code des Seiteninhalts an, sondern zeigen den Inhalt so, wie er sp&#228;ter auf der Seite zu sehen sein wird. Diese Editoren haben den Vorteil, dass immer gleichartiges HTML generiert wird.</p>
<p>F&#252;r derartig generierte Inhalte k&#246;nnen recht gute Migrationsmuster erkannt und entsprechend im Confluence abgebildet werden. Wurde der Seiteninhalt jedoch manuell geschrieben, ist der HTML-Code nicht gleichf&#246;rmig. Solches Markup ist extrem schwierig zu migrieren, da dort prinzipiell der vollst&#228;ndige Funktionsumfang von HTML genutzt werden kann. Bei Migrationen, die manuell geschriebene HTML-Seiten als Quelle haben ist demzufolge mit betr&#228;chtlichen Darstellungsverlusten zu rechnen.</p>
<h4 style="text-align: left">Interne Verlinkungen</h4>
<p>Das Erkennen und korrekte Umwandeln von internen Verlinkungen kann sich mitunter &#228;u&#223;erst schwierig gestalten. Mitunter sind schon die Verlinkungen des Quellsystems fehlerhaft, sodass diese nicht direkt ins Confluence &#252;bertragen werden k&#246;nnen. Manchmal ist es notwendig, &#196;hnlichkeitsberechnungen mit den vorliegenden Links durchzuf&#252;hren, um das &#8220;<em>am besten passende Linkziel</em>&#8221; auszuw&#228;hlen.</p>
<h4 style="text-align: left">Strukturierung der Informationen</h4>
<p style="text-align: left">Confluence bietet von sich aus folgende M&#246;glichkeiten zur Strukturierung:</p>
<ul>
<li>Bereiche mit Seiten und Blogposts</li>
<li>Seiten k&#246;nnen Unterseiten haben (Baumstruktur)</li>
<li>Seiten und Blogposts k&#246;nnen Dateianh&#228;nge haben</li>
</ul>
<p style="text-align: left">Gibt es im Quellsystem Inhaltsstrukturen, die &#252;ber diese hinaus gehen (z.B. mehrsprachige Inhalte), k&#246;nnen diese nicht direkt auf die korrespondierenden Confluence-Typen abgebildet werden. Nur &#252;ber die Nutzung oder Entwicklung weiterer Plugins (z.B. <a href="http://confluence.atlassian.com/display/CONFEXT/SubSpace+Plugin">Communardo SubSpace Plugin</a> f&#252;r hierarchische Bereiche) ist eine Migration m&#246;glich.</p>
<p style="text-align: left">H&#228;ufig sollen die Quelldaten zudem umstrukturiert werden. Durch das Einf&#252;gen generierter &#220;bersichtsseiten und die Verteilung auf mehrere Bereiche wird die Komplexit&#228;t zum Aufl&#246;sen interner Verlinkungen weiter erh&#246;ht.</p>
<h4 style="text-align: left">Unvorhersehbares Verhalten des Confluence-internen Wiki-Code-Konverters</h4>
<p style="text-align: left">Die Umwandlung von gegebenen HTML in Confluence-spezifischen Wiki-Code geschieht mittels einer internen Confluence-Componente (WysiwygConverter). Dieser hat erhebliche Probleme bei der Umwandlung von beliebigem (nicht vom WYSIWYG-Editor erzeugtem) HTML in Confluence Wiki-Code.</p>
<p style="text-align: left">Schon kleinste Unterschiede im Quell-HTML-Code (z.B. Zeilenumbr&#252;che, Verschachtelung von Elementen) k&#246;nnen zu vollkommen verschiedenem Resultat f&#252;hren. Insbesondere bei manuell geschriebenen HTML sind Migrationsverluste dadurch nicht zu vermeiden.</p>
<p style="text-align: left">
<h3>Zusammenfassung</h3>
<p>Die Migration von Inhalten nach Confluence ist mit dem Content Import Plugin nahezu ohne Verluste m&#246;glich. Die Darstellung der Informationen muss jedoch an Confluence angepasst werden und unterscheidet sich folglich fast zwingend vom Quellsystem. Weiterhin ist es nicht m&#246;glich, Konzepte oder Funktionen nach Confluence zu migrieren, die im Quellformat verf&#252;gbar sind, sich jedoch nicht auf existierende Confluence-Konzepte abbilden lassen (verschachtelte Tabellen, Definitionslisten, &#8230;)</p>
<h3>Weiterf&#252;hrende Links</h3>
<ul>
<li><a href="http://www.communardo.de/home/wp-content/filebase/downloads/Communardo_Migrationsservice_2009.pdf">Produktblatt Migrationsservice (PDF)</a></li>
<li><a href="http://www.communardo.de/home/communardo/produkte/content-import-plugin/">Produktseite Content Import Plugin</a></li>
<li><a href="http://www.communardo.de/home/communardo/technologien/atlassian-confluence-wiki/content-import-plugin/files/2010/03/Communardo-Content-Import-Plugin_1.1_XML-Schema-Documentation.pdf">Beschreibung des XML Transportformats (PDF, englisch)</a></li>
<li><a href="http://confluence.atlassian.com/display/CONFEXT/SubSpace+Plugin">SubSpace Plugin</a></li>
</ul>
]]></description>
		<wfw:commentRss>http://www.communardo.de/home/techblog/2010/07/20/erfahrungen-mit-migrationen-nach-confluence/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Umschalten der i18n Schl&#252;ssel-Wert Paare zur Laufzeit</title>
		<link>http://www.communardo.de/home/techblog/2010/07/15/umschalten-der-i18n-schluessel-wert-paare-zur-laufzeit/</link>
		<comments>http://www.communardo.de/home/techblog/2010/07/15/umschalten-der-i18n-schluessel-wert-paare-zur-laufzeit/#comments</comments>
		<pubDate>Thu, 15 Jul 2010 08:24:40 +0000</pubDate>
		<dc:creator>Andreas Reif</dc:creator>
				<category><![CDATA[Confluence]]></category>

		<guid isPermaLink="false">http://www.communardo.de/home/techblog/?p=3733</guid>
		<description><![CDATA[<img alt="are" src="http://www.gravatar.com/avatar.php/8f6ee468c4960f5d77966266ada2f51d/?s=76" class="com-blog-icon"/><a href="http://www.communardo.de/home/techblog/author/are/" title="Artikel von Andreas Reif">Andreas Reif</a><h3 style="margin-top:10px">Motivation</h3>
<div>Beim Ab&#228;ndern von bestehenden Texten f&#252;r <tt>Confluence</tt> muss der zugeh&#246;rige Schl&#252;ssel bekannt sein. Um an diesen Schl&#252;ssel zu gelangen muss der Entwickler sich durch den Quellcode (Frontend) hangeln oder in den unz&#228;hligen <tt>properties</tt>-Dateien nach dem Text suchen. Es bedeutet somit einen relativ gro&#223;en Aufwand, um Textanpassungen vorzunehmen. Versch&#228;rft wird diese Problematik durch das Outsourcing der Textanpassung an entsprechende Dienstleistungsunternehmen. Zumeist haben diese Firmen keinerlei Bezug zur Informatik, sodass eigenst&#228;ndige Recherchen nach den passenden Schl&#252;ssel-Wert Paaren nicht realistisch sind.</div>
<div style="margin-top:10px">Optimal w&#228;re eine L&#246;sung, die es erm&#246;glicht w&#228;hrend der Laufzeit die Schl&#252;ssel-Wert Paare umzuschalten&#8230; und genau das beschreibe ich in den Teilen <tt>Umsetzung - Backend</tt> und <tt>Umsetzung - Frontend</tt>.</div>
<h3 style="margin-top:10px">Umsetzung &#8211; Backend</h3>
<p>Ein kleiner &#8211; aber wie ich finde vertretbarer &#8211; Wermutstropfen ist, dass es nicht ohne Anpassung des <tt>Confluence</tt>-Cores geht. Die abge&#228;nderten Dateien, die nachfolgend erl&#228;utert werden, packt man am besten in eine jar und legt diese in das <tt>WEB-INF/lib</tt> Verzeichnis.</p>
<h4 style="margin-top:5px">Erstellen einer ThreadLocale <b><tt>ShowI18NKeysThreadLocal</tt></b></h4>
<p>Die Aktivierung/Deaktivierung der Funktion wird &#252;ber einen Schalter in der GUI realisiert. Damit der Zustand ins Backend &#252;bertragen werden kann, wird eine ThreadLocale verwendet. Diese ist wie folgt aufgebaut:</p>
<pre style="border:1px dashed black;padding:5px">public class ShowI18NKeysThreadLocal {

  public static final ThreadLocal showI18nKeysLocal = new ThreadLocal () {
    protected synchronized Boolean initialValue() {
      return false;
    }
  };

}</pre>
<h4 style="margin-top:5px">&#220;berschreiben der <b><tt>DefaultI18NBean</tt></b> Klasse</h4>
<p>Die DefaultI18nBean besitzt u.a. eine Methode namens <tt>isShowKeyMode</tt>. Mit dieser Methode wird abgefragt, ob die Schl&#252;ssel-Wert Paare zur&#252;ckgeliefert werden sollen. Nun vermutet man, dass die Methode aus einer Property, etc&#8230; den Zustand (aktiv, inaktiv) ausliest. Dies ist leider nicht der Fall, da sie immer den Wert <tt>false</tt> (hard-codiert) zur&#252;ckliefert, sodass ohne dem &#220;berschreiben der Methode ein Switch gar nicht m&#246;glich ist. Deshalb muss die Klasse wie folgt erweitert werden.</p>
<pre style="border:1px dashed black;padding:5px">
  public ExtendedDefaultI18NBean(Locale locale, PluginAccessor pluginManager) {
    super(locale, pluginManager);
  }

  @Override
  public boolean isShowKeyMode() {
    return ShowI18NKeysThreadLocal.showI18nKeysLocal.get();
  }</pre>
<h4 style="margin-top:5px">&#220;berschreiben der <b><tt>DefaultI18NBeanFactory</tt></b> Klasse</h4>
<p>Die Klasse <tt>DefaultI18NBean</tt> wird nicht wie die meisten Klassen per Spring Injection erzeugt, sondern &#252;ber eine Factory-Klasse. Aus diesem Grund muss auch die <tt>DefaultI18NBeanFactory</tt> wie folgt &#252;berschrieben werden.</p>
<pre style="border:1px dashed black;padding:5px"> public class ExtendedDefaultI18NBeanFactory implements I18NBeanFactory {

  private PluginAccessor pluginAccessor;

  public I18NBean getI18NBean(Locale locale) {
    return new ExtendedDefaultI18NBean(locale, pluginAccessor);
  }

  public I18NBean getI18NBean() {
    return getI18NBean(LocaleManager.DEFAULT_LOCALE);
  }

  public void setPluginAccessor(PluginAccessor pluginAccessor) {
    this.pluginAccessor = pluginAccessor;
  }

}</pre>
<h4 style="margin-top:5px">Anpassen der <b><tt>i18nContext.xml</tt></b></h4>
<p>Damit nun die von uns angepasste Factory-Klasse verwendet werden kann, muss in der <tt>i18nContext.xml</tt> der zugeh&#246;rige Eintrag wie folgt angepasst werden:</p>
<pre style="border:1px dashed black;padding:5px">&lt;bean id="defaultI18NBeanFactory" class="de.communardo.customizations.i18n.ExtendedDefaultI18NBeanFactory" autowire="byName"/&gt;</pre>
<h4 style="margin-top:5px">Anpassen der <b><tt>web.xml</tt></b></h4>
<p>Letztlich ist es noch notwendig, dass die web.xml auf die abge&#228;nderte <tt>i18nContext.xml</tt> verweist. Dazu muss die entsprechende Zeile wie folgt angepasst werden.</p>
<pre style="border:1px dashed black;padding:5px">    &lt;context-param&gt;
        &lt;param-name&gt;contextConfigLocation&lt;/param-name&gt;
        &lt;param-value&gt;
            ...,
            classpath:/customizedI18nContext.xml,
            ...,</pre>
<h3 style="margin-top:10px">Umsetzung &#8211; Frontend</h3>
<p>Wie zuvor bereits erw&#228;hnt, zielt dieses Vorgehen auf eine Laufzeitl&#246;sung ab, sodass im Frontend ein entsprechender &#8220;Schalter&#8221; implementiert werden muss. In diesem Beispiel werden die Frontend-Anpassungen &#252;ber ein Plugin durchgef&#252;hrt.</p>
<h4 style="margin-top:5px">Erstellen der ShowI18NKeyFilter Klasse</h4>
<p>Der neue Filter hat einzig und allein die Aufgabe zu &#252;berpr&#252;fen, ob und auf welchen Wert der Request-Parameter <tt>showI18nKeys</tt> gesetzt ist. Sollte der Wert <tt>true</tt> sein, dann werden beim Reload der aktuellen Seiten nicht mehr nur die Texte, sondern auch die zugeh&#246;rigen Schl&#252;ssel angezeigt. Au&#223;erdem wird der aktuelle Zustand in der Session vermerkt, sodass beim Seitenwechsel der gew&#252;nschte Zustand immernoch existiert. <b>Nat&#252;rlich wirkt sich die Zustands&#228;nderung nur auf den aktuellen Nutzer aus und beeinflusst nicht die Sicht der anderer Nutzer!</b></p>
<pre style="border:1px dashed black;padding:5px">public class ShowI18NKeyFilter implements Filter {

  private static final String I18N_KEYS = "showI18nKeys";

  private static final String CONFLUENCE_I18N_SHOWKEY = "confluence.i18n.showkey";

  public void destroy() {

  }

  public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,
      ServletException {

    if (request instanceof PluginHttpRequestWrapper) {
      PluginHttpRequestWrapper httpRequest = (PluginHttpRequestWrapper) request;
      Boolean showI18nKeysSession = (Boolean) httpRequest.getSession().getAttribute(CONFLUENCE_I18N_SHOWKEY);
      if (httpRequest.getParameter(I18N_KEYS) != null) {
        Boolean showI18nKeysRequest = Boolean.valueOf(httpRequest.getParameter(I18N_KEYS));
        if (showI18nKeysRequest != showI18nKeysSession) {
          if (showI18nKeysRequest) {
            httpRequest.getSession().setAttribute(CONFLUENCE_I18N_SHOWKEY, true);
            ShowI18NKeysThreadLocal.showI18nKeysLocal.set(true);
          } else {
            httpRequest.getSession().removeAttribute(CONFLUENCE_I18N_SHOWKEY);
            ShowI18NKeysThreadLocal.showI18nKeysLocal.set(false);
          }
        }
      } else {
        ShowI18NKeysThreadLocal.showI18nKeysLocal.set(showI18nKeysSession != null ? showI18nKeysSession : false);
      }
    }
    chain.doFilter(request, response);
  }

  public void init(FilterConfig arg0) throws ServletException {

  }

}</pre>
<h4 style="margin-top:5px">Anpassung einer vm Datei</h4>
<p>Letztlich fehlt nur noch ein Link (am besten im Header, da diese Stelle auf fast allen Seiten sichtbar ist), welcher den GET-Parameter <tt>showI18nKeys</tt> kontr&#228;r zum aktuellen Zustand den Wert auf <tt>true</tt> bzw. auf <tt>false</tt> &#252;bermitteln soll.</p>
]]></description>
		<wfw:commentRss>http://www.communardo.de/home/techblog/2010/07/15/umschalten-der-i18n-schluessel-wert-paare-zur-laufzeit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
