Una cosa che mi ha fatto impazzire di SharePoint2007 è l'apparente impossibilità di disporre di impostazioni definibili che si applicano specificamente a un sito o a una raccolta siti stessa e non al contenuto. Voglio dire, hai alcune impostazioni predefinite come il logo del sito, il nome del sito e varie altre cose, ma non sembra esserci un posto dove aggiungere nuovi tipi di impostazioni.Qual è un modo corretto per memorizzare le variabili globali a livello di sito in un sito di SharePoint?
L'applicazione su cui sto lavorando deve essere in grado di creare più tipi di "raccolte siti del progetto" che seguono tutti un modello di base, ma hanno alcune impostazioni aggiuntive che si applicano specificamente alla raccolta di quel sito e quella sola. Oltre al nome del sito standard, dobbiamo anche definire il numero del progetto, il nome del progetto e il nome del cliente. E date le richieste di alcuni dei nostri clienti, raggiungiamo anche un punto in cui dobbiamo avere impostazioni configurabili che alterano il funzionamento di alcuni dei flussi di lavoro, come se i file siano contrassegnati con lettere o numeri.
La nostra soluzione attuale, di cui sono titubante, è stata quella di memorizzare un file XML sul server SharePoint. Questo file contiene un nodo per ogni raccolta siti, identificato dall'URL del sito radice. All'interno del nodo ci sono tutti gli elementi che devono essere definiti per quella raccolta siti. Quando ne abbiamo bisogno, dobbiamo accedere al file XML (che richiederà sempre SPSecurity.RunWithElevatedPrivileges per accedere ai file direttamente sul server) ogni volta per caricarlo e recuperare i dati. Ci sono molti processi automatizzati che dovranno fare questo, ed io sono titubante riguardo alla stabilità di questo metodo quando raggiungiamo centinaia di siti con migliaia di file che eseguono decine di migliaia di flussi di lavoro, tutti che vogliono accedere a questo file. Forse sono preoccupazioni infondate, ma preferirei preoccuparmi piuttosto che rischiare che tutto si rompa in un paio d'anni.
Stavo cercando nell'oggetto SPWeb e ho trovato l'hashtable AllProperties
. Sembra proprio il tipo di cosa che potrebbe funzionare, ma non so quanto sia sicuro modificarlo. Ho letto sia MSDN che l'SDK WSS ma non ho trovato nulla che chiarisca l'aggiunta di proprietà completamente nuove in AllProperties
. È sicuro usare AllProperties
per questo genere di cose? O c'è ancora un'altra caratteristica che mi manca, che potrebbe gestire il concetto di variabili globali nella raccolta del sito o nella portata del sito?
Ho scritto una pagina di un'applicazione personalizzata per l'impostazione di questi valori, ma per fortuna nessun SharePoint Progettista. Grazie per gli articoli, non solo ha evidenziato le opzioni, ma ha anche contribuito a chiarire l'applicabilità di AllProperties rispetto a Proprietà. Questo sembra il percorso da percorrere! –
Più confusione per te - http://trentacular.com/2009/06/sharepoint-the-wicked-spwebproperties-propertybag/ Non sono sicuro di essere d'accordo con l'autore - penso che le proprietà siano la strada da percorrere - vale la pena notare la sensibilità del case però. – Ryan