<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Stefan Frutigers Blog</title><link>http://blog.trivadis.com/blogs/stefanfrutiger/default.aspx</link><description>über die Programmierung von SharePoint, Workflows, Office</description><dc:language /><generator>CommunityServer 2007.1 (Build: 20917.1142)</generator><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/trivadis/stefanfrutiger" type="application/rss+xml" /><item><title>SharePoint und die fehlende "referentielle Integrität"</title><link>http://feedproxy.google.com/~r/trivadis/stefanfrutiger/~3/82teeMXbgnw/sharepoint-und-die-fehlende-quot-referentielle-integrit-228-t-quot.aspx</link><pubDate>Mon, 05 Nov 2007 22:05:00 GMT</pubDate><guid isPermaLink="false">7f420732-9615-472e-9723-d9bd9f35b01c:376</guid><dc:creator>Stefan Frutiger</dc:creator><slash:comments>1</slash:comments><wfw:commentRss>http://blog.trivadis.com/blogs/stefanfrutiger/rsscomments.aspx?PostID=376</wfw:commentRss><comments>http://blog.trivadis.com/blogs/stefanfrutiger/archive/2007/11/05/sharepoint-und-die-fehlende-quot-referentielle-integrit-228-t-quot.aspx#comments</comments><description>&lt;p&gt;Manche Leute sehen SharePoint einfach gesagt als &lt;em&gt;&lt;strong&gt;Datenspeicher&lt;/strong&gt;&lt;/em&gt; mit einem &lt;strong&gt;&lt;em&gt;Web-Frontend&lt;/em&gt;&lt;/strong&gt;. Das stimmt soweit: denn die Datenspeicherung mit den Listen und Document Libraries&amp;nbsp;ist elegant gelöst und&amp;nbsp;das Aussehen des konfortablen ASP .NET 2.0 User Interfaces kann hervorragend an Kundenwünsche angepasst werden.&lt;/p&gt;
&lt;p&gt;Dadurch ist man versucht, die Anforderungen an SharePoint hoch anzusetzen: Man könnte ja fortan jede datenzentrische Applikation mit SharePoint implementieren. Das User Interface, das man vorher umständlich selber entwickeln musste,&amp;nbsp;gibt es nun quasi &amp;quot;gratis&amp;quot; mitgeliefert.&lt;/p&gt;
&lt;p&gt;SharePoint darf jedoch nicht auf die gleiche Stufe wie ein relationales Datenbanksystem gestellt werden. SharePoint benutzt zwar unter der Haube&amp;nbsp;den MS SQL Server um Daten zu speichern, gibt aber die &amp;quot;Datenbank-Features&amp;quot;, wie etwa die referentielle Integrität, nicht weiter. Was in den SharePoint Listen eindeutig fehlt sind Constraints (z.Bsp. Unique Key Constraints) und Fremdschlüssel.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Fazit: Mit den Bordmitteln von SharePoint können wir keine Eindeutigkeit und keine referentielle Integrität garantieren.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Dies wurde mit heute (anlässlich der TechEd in Barcelona) von den beiden SharePoint Profis Ben Robb (cScape) und&amp;nbsp;Jan Tielens (u2u) bestätigt.&lt;/p&gt;
&lt;p&gt;Die Lösung dieses Problems ist naheliegend, denn SharePoint ist mit seinem Objektmodell gut erweiterbar: das Mittel heisst &lt;strong&gt;Events&lt;/strong&gt;. Mit den vorbereiteten Event Receivern, z.Bsp. der &lt;strong&gt;&lt;em&gt;SPItemEventReceiver&lt;/em&gt;&lt;/strong&gt; Klasse, können synchron Events abgefangen, ausgewertet und wenn nötig abgebrochen werden, denn das übergebene &lt;strong&gt;&lt;em&gt;properties&lt;/em&gt;&lt;/strong&gt; Argument enthält ein &lt;strong&gt;&lt;em&gt;Cancel&lt;/em&gt;&lt;/strong&gt; Property.&lt;/p&gt;
&lt;p&gt;Wir haben keine Wahl: wir müssen die Lücke selber füllen und können nur hoffen, dass Microsoft unser Anliegen kennt und in der nächsten SharePoint Version eine Lösung anbietet.&lt;/p&gt;&lt;img src="http://blog.trivadis.com/aggbug.aspx?PostID=376" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/trivadis/stefanfrutiger/~4/82teeMXbgnw" height="1" width="1"/&gt;</description><category domain="http://blog.trivadis.com/blogs/stefanfrutiger/archive/tags/MOSS+2007/default.aspx">MOSS 2007</category><category domain="http://blog.trivadis.com/blogs/stefanfrutiger/archive/tags/WSS+3.0/default.aspx">WSS 3.0</category><category domain="http://blog.trivadis.com/blogs/stefanfrutiger/archive/tags/Office/default.aspx">Office</category><category domain="http://blog.trivadis.com/blogs/stefanfrutiger/archive/tags/Visual+Studio+2005/default.aspx">Visual Studio 2005</category><category domain="http://blog.trivadis.com/blogs/stefanfrutiger/archive/tags/Sharepoint/default.aspx">Sharepoint</category><feedburner:origLink>http://blog.trivadis.com/blogs/stefanfrutiger/archive/2007/11/05/sharepoint-und-die-fehlende-quot-referentielle-integrit-228-t-quot.aspx</feedburner:origLink></item><item><title>SharePoint Workflow startet nicht. Meldung: "Failed on Start (retrying)"</title><link>http://feedproxy.google.com/~r/trivadis/stefanfrutiger/~3/c7hPj5dM9ZU/sharepoint-workflow-startet-nicht-meldung-quot-failed-on-start-retrying-quot.aspx</link><pubDate>Mon, 20 Aug 2007 11:04:00 GMT</pubDate><guid isPermaLink="false">7f420732-9615-472e-9723-d9bd9f35b01c:187</guid><dc:creator>Stefan Frutiger</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://blog.trivadis.com/blogs/stefanfrutiger/rsscomments.aspx?PostID=187</wfw:commentRss><comments>http://blog.trivadis.com/blogs/stefanfrutiger/archive/2007/08/20/sharepoint-workflow-startet-nicht-meldung-quot-failed-on-start-retrying-quot.aspx#comments</comments><description>&lt;p&gt;Es gibt diese frustrierenden Momente wo man einen Workflow einfach nicht zum Laufen bringt. Man glaubt alles korrekt eingestellt zu haben:&amp;nbsp;die beiden Deployment Files: feature.xml und &amp;nbsp;workflow.xml wurden schon tausend Mal kontrolliert, der Workflow Designer in Visual Studio 2005 zeigt keine Fehler, alle Tasks werden im Code korrekt erstellt, die InfoPath Formulare sind bereit und&amp;nbsp;die Class Library kompiliert.&lt;/p&gt;
&lt;p&gt;Und trotzdem beendet sich der Workflow zur Laufzeit kurz nach der Initialisierung. Erster Anlaufpunkt ist die Workflow History Liste. Nichts. Dann die Event-Logs. Nichts. Schlussendlich wird man in den SharePoint Logs (C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\LOGS) fündig: Sucht man nach &lt;strong&gt;&amp;quot;Workflow Infrastructure&amp;quot;&lt;/strong&gt; finden sich einige Fehler in der Log-Datei. Beispielsweise: &lt;strong&gt;&lt;font face="arial,helvetica,sans-serif"&gt;System.InvalidOperationException: The event receiver context for Workflow is invalid.&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Diesen Text kopiert; in Google Groups eingefügt und los geht&amp;#39;s mit der Suche.&amp;nbsp;Beim&amp;nbsp;Duchsehen der Resultate werde ich auf einen &lt;a class="" title="Eintrag im MSDN Forum" href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1446863&amp;amp;SiteID=1"&gt;Eintrag im MSDN Forum&lt;/a&gt; von Microsoft aufmerksam: &lt;strong&gt;&lt;em&gt;&amp;quot;The issue with the correlation token, the correlation token for the task needs to be different from the workflow!! Remember this guys, and avoid the turmoil ive been through.&amp;quot;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Vermutlich wird in jedem SharePoint Workflow Buch x- Mal darauf hingewiesen und doch geht dieser Punkt immer wieder vergessen: Der &lt;strong&gt;&amp;quot;CorrelationToken&amp;quot;&lt;/strong&gt; des Workflows darf nicht für die Tasks (wieder-) verwendet werden!&lt;/p&gt;
&lt;p&gt;Die einfache Lösung des Problems: Einfach für jeden Task einen neuen CorrelationToken definieren oder in dem bestehenden Workflow den Wert mit einem neuen Text überschreiben. That&amp;#39;s it...&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://blog.trivadis.com/aggbug.aspx?PostID=187" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/trivadis/stefanfrutiger/~4/c7hPj5dM9ZU" height="1" width="1"/&gt;</description><category domain="http://blog.trivadis.com/blogs/stefanfrutiger/archive/tags/MOSS+2007/default.aspx">MOSS 2007</category><category domain="http://blog.trivadis.com/blogs/stefanfrutiger/archive/tags/WSS+3.0/default.aspx">WSS 3.0</category><category domain="http://blog.trivadis.com/blogs/stefanfrutiger/archive/tags/Workflow/default.aspx">Workflow</category><category domain="http://blog.trivadis.com/blogs/stefanfrutiger/archive/tags/Visual+Studio+2005/default.aspx">Visual Studio 2005</category><category domain="http://blog.trivadis.com/blogs/stefanfrutiger/archive/tags/Sharepoint/default.aspx">Sharepoint</category><feedburner:origLink>http://blog.trivadis.com/blogs/stefanfrutiger/archive/2007/08/20/sharepoint-workflow-startet-nicht-meldung-quot-failed-on-start-retrying-quot.aspx</feedburner:origLink></item><item><title>"mscorlib" Fehler bei SharePoint Workflow Tasks</title><link>http://feedproxy.google.com/~r/trivadis/stefanfrutiger/~3/LycWFpJb50E/quot-mscorlib-quot-fehler-bei-sharepoint-workflow-tasks.aspx</link><pubDate>Fri, 10 Aug 2007 08:41:00 GMT</pubDate><guid isPermaLink="false">7f420732-9615-472e-9723-d9bd9f35b01c:152</guid><dc:creator>Stefan Frutiger</dc:creator><slash:comments>1</slash:comments><wfw:commentRss>http://blog.trivadis.com/blogs/stefanfrutiger/rsscomments.aspx?PostID=152</wfw:commentRss><comments>http://blog.trivadis.com/blogs/stefanfrutiger/archive/2007/08/10/quot-mscorlib-quot-fehler-bei-sharepoint-workflow-tasks.aspx#comments</comments><description>&lt;p&gt;Wird in &lt;em&gt;Visual Studio 2005&lt;/em&gt; in einem SharePoint Workflow Projekt über den &lt;em&gt;Workflow Designer&lt;/em&gt; (siehe &lt;em&gt;Referenzen&lt;/em&gt;)&amp;nbsp;mit Hilfe der&amp;nbsp;&lt;em&gt;CreateTask&lt;/em&gt; Aktivität ein neuer Task erstellt, müssen im Source Code die TaskId und die TaskProperties gesetzt werden:&lt;/p&gt;
&lt;p&gt;&lt;font face="courier new,courier"&gt;taskId = &lt;font color="#00cccc"&gt;Guid&lt;/font&gt;.NewGuid();&lt;br /&gt;taskProperties.Title = &lt;font color="#993300"&gt;&amp;quot;my Title&amp;quot;&lt;/font&gt;;&lt;br /&gt;taskProperties.Description = &lt;font color="#993300"&gt;&amp;quot;my Description&amp;quot;&lt;/font&gt;;&lt;br /&gt;taskProperties.AssignedTo = &lt;font color="#993300"&gt;&amp;quot;Administrator&amp;quot;&lt;/font&gt;;&lt;br /&gt;taskProperties.PercentComplete = 0;&lt;br /&gt;taskProperties.StartDate = &lt;font color="#00cccc"&gt;DateTime&lt;/font&gt;.Today;&lt;br /&gt;taskProperties.DueDate = &lt;font color="#00cccc"&gt;DateTime&lt;/font&gt;.Today.AddDays(2);&lt;br /&gt;taskProperties.ExtendedProperties[&lt;font color="#993300"&gt;&amp;quot;Instructions&amp;quot;&lt;/font&gt;] = &lt;font color="#993300"&gt;&amp;quot;my Instructions &amp;quot;&lt;/font&gt;;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;Wird zum Beispiel ein InfoPath Formular verwendet um den Task zu editieren, kann über die ExtendedProperties HashTable Werte (z.B. Instructions)&amp;nbsp;an das Formular übergeben werden. Sind diese Werte leer (null) wird folgender Fehler in der Workflow History geloggt:&lt;/p&gt;
&lt;p&gt;User ID: &amp;#39;System Account&amp;#39;&lt;br /&gt;Outcome: &amp;#39;mscorlib&amp;#39;&lt;br /&gt;Description: &amp;#39;Exception has been thrown by the target of an invocation.&amp;#39;&lt;br /&gt;Data: &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] arguments, SignatureStruct&amp;amp; sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at System.RuntimeMethodHandle.InvokeMethodFast(Object target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParams) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at System.Workflow.Activities.CallExternalMethodActivity.Execute(ActivityExecutionContext executionContext) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at System.Workflow.ComponentModel.ActivityExecutor`1.Execute(T activity, ActivityExecutionContext executionContext) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at System.Workflow.ComponentModel.ActivityExecutor`1.Execute(Activity activity, ActivityExecutionContext executionContext) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at System.Workflow.ComponentModel.ActivityExecutorOperation.Run(IWorkflowCoreRuntime workflowCoreRuntime) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at System.Workflow.Runtime.Scheduler.Run()&lt;/p&gt;
&lt;p&gt;Dieser nichts sagende Fehler kann vermieden werden, indem der ExtendedProperties HashTable keine &lt;em&gt;null&lt;/em&gt; Werte übergeben werden!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Referenzen:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;Visual Studio 2005 extensions for .NET Framework 3.0 (Windows Workflow Foundation) --&amp;gt; &lt;a class="" title="Download" href="http://www.microsoft.com/downloads/details.aspx?familyid=5D61409E-1FA3-48CF-8023-E8F38E709BA6&amp;amp;displaylang=en" target="_blank"&gt;Download&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;Windows SharePoint Services 3.0 Tools: Visual Studio 2005 Extensions --&amp;gt; &lt;a class="" title="Download" href="http://www.microsoft.com/downloads/details.aspx?familyid=19f21e5e-b715-4f0c-b959-8c6dcbdc1057&amp;amp;displaylang=en" target="_blank"&gt;Download&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://blog.trivadis.com/aggbug.aspx?PostID=152" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/trivadis/stefanfrutiger/~4/LycWFpJb50E" height="1" width="1"/&gt;</description><category domain="http://blog.trivadis.com/blogs/stefanfrutiger/archive/tags/MOSS+2007/default.aspx">MOSS 2007</category><category domain="http://blog.trivadis.com/blogs/stefanfrutiger/archive/tags/WSS+3.0/default.aspx">WSS 3.0</category><category domain="http://blog.trivadis.com/blogs/stefanfrutiger/archive/tags/Workflow/default.aspx">Workflow</category><category domain="http://blog.trivadis.com/blogs/stefanfrutiger/archive/tags/Visual+Studio+2005/default.aspx">Visual Studio 2005</category><category domain="http://blog.trivadis.com/blogs/stefanfrutiger/archive/tags/Sharepoint/default.aspx">Sharepoint</category><feedburner:origLink>http://blog.trivadis.com/blogs/stefanfrutiger/archive/2007/08/10/quot-mscorlib-quot-fehler-bei-sharepoint-workflow-tasks.aspx</feedburner:origLink></item><item><title>SharePoint Objekte lassen sich oft nicht serialisieren</title><link>http://feedproxy.google.com/~r/trivadis/stefanfrutiger/~3/5zj8GIbk6eo/sharepoint-objekte-lassen-sich-oft-nicht-serialisieren.aspx</link><pubDate>Tue, 24 Jul 2007 04:51:00 GMT</pubDate><guid isPermaLink="false">7f420732-9615-472e-9723-d9bd9f35b01c:137</guid><dc:creator>Stefan Frutiger</dc:creator><slash:comments>3</slash:comments><wfw:commentRss>http://blog.trivadis.com/blogs/stefanfrutiger/rsscomments.aspx?PostID=137</wfw:commentRss><comments>http://blog.trivadis.com/blogs/stefanfrutiger/archive/2007/07/24/sharepoint-objekte-lassen-sich-oft-nicht-serialisieren.aspx#comments</comments><description>&lt;p&gt;Gerade im Zusammenhang mit SharePoint Workflows ist es unabdingbar, dass sich die Workflow Variablen serialisieren lassen, weil sich der Workflow ab und zu schlafen legt (Serialisierung der Variablen),&amp;nbsp;bis ein gewisses Ereignis,&amp;nbsp;beispielsweise das Abschliessen einer Aufgabe,&amp;nbsp;eintritt und der Workflow fortgeführt wird (Deserialisierung der Variablen).&lt;/p&gt;
&lt;p&gt;Microsoft gibt uns zwar mit den Workflow Properties (&lt;em&gt;SPWorkflowActivationProperties&lt;/em&gt;) ein Objekt in die Hand, das von der&amp;nbsp;Ereignis Aktivität&amp;nbsp;&lt;em&gt;OnWorkflowActivated&lt;/em&gt; abgefüllt wird. Wir müssen uns nicht um die Serialisierung der Properties (wie Site, Web, List, Item) kümmern. Dies wird automatisch für uns gemacht.&lt;/p&gt;
&lt;p&gt;Wenn wir nun aber in unserem Workflow eine weitere Variable vom Typ &lt;em&gt;SPListItem&lt;/em&gt; benötigen, die nicht über die Workflow Properties erreichbar ist, müssen wir selber dafür sorgen, dass die Variable beim Fortführen des Workflows korrekt initialisiert wird. Dazu ein kleiner Code Ausschnitt:&lt;/p&gt;
&lt;p&gt;&lt;font face="courier new,courier"&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt; &lt;font color="#0000ff"&gt;int&lt;/font&gt; ItemID = -1;&lt;br /&gt;&lt;br /&gt;[&lt;font color="#009999"&gt;NonSerialized&lt;/font&gt;()]&lt;br /&gt;&lt;font color="#0000ff"&gt;private&lt;/font&gt; &lt;font color="#009999"&gt;SPListItem&lt;/font&gt; _item;&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;font face="courier new,courier"&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt; &lt;font color="#009999"&gt;SPListItem&lt;/font&gt; DuplicateItem&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff"&gt;get&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff"&gt;if&lt;/font&gt; (_item == null &amp;amp;&amp;amp; ItemID != -1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _item = LoadListItem(ItemID);&lt;font color="#009900"&gt; // ToDo: Implement LoadListItem()&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="courier new,courier"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff"&gt;return&lt;/font&gt; _item;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff"&gt;set&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _item = &lt;font color="#0000ff"&gt;value&lt;/font&gt;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff"&gt;if&lt;/font&gt; (_item != null)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ItemID = _item.ID;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;&lt;/font&gt;&lt;font face="courier new,courier"&gt;&lt;br /&gt;&lt;/font&gt;&lt;font face="Arial"&gt;Zuerst benötigen wir eine Integer Variable &lt;em&gt;ItemID &lt;/em&gt;für die eindeutige Identifikation des Items. Um die Serialisierung dieser Variable brauchen wir uns nicht zu kümmern.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;Danach deklarieren wir eine private Variable &lt;em&gt;_item &lt;/em&gt;vom Typ &lt;em&gt;SPListItem&lt;/em&gt;, die das List Item zur Laufzeit zur Verfügung stellt, die aber nicht serialisierbar ist. Darum wird die Variable mit dem &lt;em&gt;NonSerialized&lt;/em&gt; Attribut dekoriert.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;Schlussendlich müssen wir noch eine Property &lt;em&gt;Item&lt;/em&gt; implementieren, die bei Bedarf das List Item nachlädt (nämlich genau dann, wenn der Workflow fortgeführt wird und alle Variablen deserialisert werden). Zu diesem Zweck muss noch die LoadListItem Funktion implementiert werden, die anhand der List Item ID ein List Item zurückgibt.&lt;/font&gt;&lt;font face="courier new,courier"&gt;&lt;/p&gt;&lt;/font&gt;&lt;img src="http://blog.trivadis.com/aggbug.aspx?PostID=137" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/trivadis/stefanfrutiger/~4/5zj8GIbk6eo" height="1" width="1"/&gt;</description><category domain="http://blog.trivadis.com/blogs/stefanfrutiger/archive/tags/MOSS+2007/default.aspx">MOSS 2007</category><category domain="http://blog.trivadis.com/blogs/stefanfrutiger/archive/tags/WSS+3.0/default.aspx">WSS 3.0</category><category domain="http://blog.trivadis.com/blogs/stefanfrutiger/archive/tags/Workflow/default.aspx">Workflow</category><category domain="http://blog.trivadis.com/blogs/stefanfrutiger/archive/tags/Office/default.aspx">Office</category><category domain="http://blog.trivadis.com/blogs/stefanfrutiger/archive/tags/Visual+Studio+2005/default.aspx">Visual Studio 2005</category><category domain="http://blog.trivadis.com/blogs/stefanfrutiger/archive/tags/Sharepoint/default.aspx">Sharepoint</category><feedburner:origLink>http://blog.trivadis.com/blogs/stefanfrutiger/archive/2007/07/24/sharepoint-objekte-lassen-sich-oft-nicht-serialisieren.aspx</feedburner:origLink></item><item><title>Workflow History sichtbar machen</title><link>http://feedproxy.google.com/~r/trivadis/stefanfrutiger/~3/iaOrk6-aGdw/workflow-history-sichtbar-machen.aspx</link><pubDate>Fri, 13 Jul 2007 14:03:00 GMT</pubDate><guid isPermaLink="false">7f420732-9615-472e-9723-d9bd9f35b01c:121</guid><dc:creator>Stefan Frutiger</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://blog.trivadis.com/blogs/stefanfrutiger/rsscomments.aspx?PostID=121</wfw:commentRss><comments>http://blog.trivadis.com/blogs/stefanfrutiger/archive/2007/07/13/workflow-history-sichtbar-machen.aspx#comments</comments><description>&lt;p&gt;SharePoint zeigt nirgends eine Liste mit der Workflow History.&lt;/p&gt;
&lt;p&gt;Dabei gibt es diese auf Stufe &lt;em&gt;Site&lt;/em&gt;; Sie wird nur nicht angezeigt (auch nicht in &lt;em&gt;All Site Content&lt;/em&gt;).&lt;/p&gt;
&lt;p&gt;Die URL lautet: &lt;a href="http://localhost/Lists/Workflow%20History"&gt;http://localhost/Lists/Workflow%20History&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Diese Liste zeigt die Spalte &lt;em&gt;Data&lt;/em&gt;, die normalerweise in der Workflow History nicht zu finden ist.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Data&lt;/em&gt; kann in eigenen Visual Studio 2005 Workflows benutzt werden, um Texte oder Fehlermeldungen anzuzeigen, die in &lt;em&gt;Outcome&lt;/em&gt; und &lt;em&gt;Description&lt;/em&gt; nicht Platz finden (diese beiden sind auf 256 Zeichen limitiert).&lt;/p&gt;
&lt;p&gt;Aktivität: &lt;em&gt;LogToHistoryListActivity&lt;/em&gt;. Eigenschaft: &lt;em&gt;OtherData.&lt;/em&gt;&lt;/p&gt;&lt;img src="http://blog.trivadis.com/aggbug.aspx?PostID=121" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/trivadis/stefanfrutiger/~4/iaOrk6-aGdw" height="1" width="1"/&gt;</description><category domain="http://blog.trivadis.com/blogs/stefanfrutiger/archive/tags/WSS+3.0/default.aspx">WSS 3.0</category><category domain="http://blog.trivadis.com/blogs/stefanfrutiger/archive/tags/Workflow/default.aspx">Workflow</category><category domain="http://blog.trivadis.com/blogs/stefanfrutiger/archive/tags/Visual+Studio+2005/default.aspx">Visual Studio 2005</category><category domain="http://blog.trivadis.com/blogs/stefanfrutiger/archive/tags/Sharepoint/default.aspx">Sharepoint</category><feedburner:origLink>http://blog.trivadis.com/blogs/stefanfrutiger/archive/2007/07/13/workflow-history-sichtbar-machen.aspx</feedburner:origLink></item></channel></rss>
