Freitag, 10. Oktober 2008
spdisco.aspx von anderem Prozess im Zugriff??!
Beim Speichern der neuen Version bekam ich aber unregelmäßig die Exception, ein anderer Prozess greife auf diese Datei zu. Obwohl mein eigener Code es definitiv nicht war. In diesem Fall blieb mir nichst anderes übrig als die Datei als .txt zu speichern und händisch umzubenennen.
Welche Prozess greift den grundsätzlich auf diese Datei zu, mit Ausnahme des IIS, wenn er grad den Cache neu aufbaut??
Farmdeploy mit SPJobdefinition
Es gab daher nur den Weg über eine SPJobDefinition, da dieser über mehrere Farmmember synchroniziert werden.
Der Umgang mit dieser Klasse war eine gute Erfahrung für mich, denn in Zukunft wird es viele Anwendungsfälle geben, in denen ich auf dieses Wissen zurückgreifen kann. Warm-Ups, BDC-Deployment, Design-Anapssungen, usw.
Gruß Nils
Mittwoch, 8. Oktober 2008
Erstes Treffen der ISPA SharePoint User Group Nürnberg
Vgl. Consultants Digest
Wie mein Kollege Ricky schon in der SharePoint Box geschrieben hat, hat am letzten Donnerstag das erste Treffen der regionale User Gruppe Nürnberg bei der Spirit Link GmbH stattgefunden.
Zu meiner großen Freude sind ca. 90% der Personen, die zugesagt hatten auch erschienen. So hatten wir eine sehr angenehme Mischung aus interessierten Endanwendern, Sharepoint Dienstleistern und Trainern vor Ort. Schon zu Begin der Veranstaltung bei Kaffee und Brötchen wurde intensiv über verschiedenste Themen gesprochen.
Nachdem ich mich nach ca. einer halben Stunde genötigt sah, dem regen Treiben ein Ende zu setzen, sind wir nach einer kurzen Einleitung, inklusive eines Begrüßungsvideos von Michael Greth und Daniel Wessels zu dem thematischen Hauptschwerpunkt des Abend übergegangen. Aus meinem Vortrag unter dem Titel "Hands on Experiences zum Einsatz von Nintex Workflow 2007" ist glücklicherweise schnell eine rege Diskussion zum Thema Workflows, Livelink sowie Möglichkeiten und Grenzen von SharePoint geworden.
Im Anschluss an den Vortrag sind die meisten Teilnehmer noch in angenehmer Atmosphäre geblieben, um das eine oder andere mehr oder weniger SharePoint relevante Thema zu besprechen und interessante Kontakte zu knüpfen.
Alle Teilnehmer haben Interesse an weitern solcher Termine bekundet, was mich als Ausrichter natürlich besonders glücklich macht, da es für einen gelungenen Auftakt spricht. An dieser Stelle möchte ich mich auch bei unsere Verwaltung bedanken für Ihre Hilfe bei der Vorbereitung danken. Nur durch sie konnte das Event so gut und reibungslos gelingen.
Der nächste Termin soll in den nächsten sechs bis acht Wochen stattfinden. Als erneuten Austragungsort haben wir uns auf die Spirit Link GmbH geeinigt, allerdings sollen weitere Treffen bei Möglichkeit auch bei anderen Teilnehmern stattfinden.
Weiter Informationen zu den Terminen kann man auch bei der extra eingerichteten XING Gruppe zur regionale SharePoint User Gruppe Nürnberg erfahren.
Dienstag, 7. Oktober 2008
Listeninstanzen in Solutions vorbefüllen
Nun arbeite ich aktuell aber an einem sehr kleinen Projekt welches derartigen Aufwand nicht gerechtfertigt: im Rootweb wird eine Liste mit vier einzelnen Einträgen benötigt, die sich nicht mehr ändern werden.
Diese Werte werden nun einer ListInstance mitgegeben:
<?xml version="1.0" encoding="utf-8" ?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<!-- PicklistRole -->
<ListInstance FeatureId="39fba828-57af-4c1f-ba42-19cc13e8ad99"
TemplateType="100"
Id="PicklistRoleList"
Title="$Resources:root_lists,picklistRoleInstanceTitle;"
Description="$Resources:root_lists,picklistRoleInstanceDescription;"
OnQuickLaunch="FALSE"
Url="$Resources:core,lists_Folder;/Picklist Rolle">
<Data>
<Rows>
<Row>
<Field Name="Title">Projektmanager</Field>
</Row>
<Row>
<Field Name="Title">Technischer Leiter</Field>
</Row>
<Row>
<Field Name="Title">Entwickler</Field>
</Row>
<Row>
<Field Name="Title">Projektassistenz</Field>
</Row>
</Rows>
</Data>
</ListInstance>
</Elements>
Diese ListInstance wird im Feature eingebunden welches dann über die WebFeatures-Sektion der onet.xml aktiviert wird und daraufhin die Liste mitsamt den Einträgen bereitstellt:
Montag, 6. Oktober 2008
WebTemplates löschen
Programmatisch löste ich das ganze mit Hilfe eines FeatureReceivers, dessen Feature (Web-Scope) in der onet.xml aktiviert wird:
public override void FeatureActivated(SPFeatureReceiverProperties properties)
{
// remove all site templates to prevent, users create more subwebs beneath the current one
if (properties.Feature.Parent is SPWeb)
{
try
{
using (SPWeb currentWeb = (SPWeb)properties.Feature.Parent)
{
currentWeb.SetAvailableWebTemplates(new Collection(), (uint)1031);
currentWeb.Update();
}
}
catch (Exception e)
{
}
}
}
In dem obigen Codebeispiel werden die verfügbaren WebTemplates des aktuellen Webs einfach neu gesetzt und zwar mit einer leeren Collection des Typs SPWebTemplate. Anschließend wird das Web geupdated damit die Änderung wirksam wird. Die 1031 steht hier übrigens für den deutschen Sprachraum.
Wiederherstellen lassen sich die Standard-Templates natürlich auch mit Hilfe dieser zwei Zeilen:
currentWeb.AllowAllWebTemplates();
currentWeb.Update();