Domanda

Sto cercando di creare un processo timer in WSS 3.0. Il mio processo timer sarebbe creare l'oggetto di SPSite poi SPWeb e poi SPDocumentLibrary (o, eventualmente, raccolta di immagini) usando i loro GUID memorizzati nei XML o database.After che ci sarebbe voluto il back up di documenti nella raccolta documenti in alcune applicazioni di terze parti e quindi eliminare tali documenti.

Quindi la mia domanda è: quello che dovrebbe essere il mio SPJobLockType 'None' o 'lavoro' o 'ContentDatabase' idealmente ?? che segue è la mia comprensione dopo aver letto alcuni articoli sul processo timer. Si prega di correggermi se sbaglio in qualsiasi luogo come io sono abbastanza nuovo per SharePoint

  1. Se io uso 'Nessuno', allora il mio lavoro sarebbe eseguito su ogni server della farm. Ho davvero bisogno che? perché il mio lavoro è solo modifica / eliminazione di documenti (sto modifing solo database del contenuto attraverso il mio processo timer. Si prega di correggermi se sbaglio).

  2. Se uso serratura di tipo 'lavoro', allora il mio lavoro sarebbe eseguito solo sul server su cui codice di creazione di posti di lavoro è executed.But si può soddisfare la mia richiesta (Credo di sì, ma non sono sicuro favore correggetemi se sbaglio).

  3. Ho passato con questo articolo per ContentDatabase LockType..It dice

  

In breve, è quasi lo stesso del   Job uno, il che significa che funziona solo uno   Server .. MA .. come Peter scoprire a   Aiuto necessario con timerjob personalizzato in   SharePoint 2007, il processo viene eseguito per   ogni ContentDatabase che la   WebApplication è associato.   Un altro (molto fastidioso) fatto è che   non è prevedibile che quando   verrà eseguito sulla prossima database del contenuto.

Si prega di dare i vostri pensieri / suggerimenti.

È stato utile?

Soluzione

Anoop,

Il tipo di "sweep" del processo timer che stai descrivendo è un abbastanza comune, e ho scritto un certo numero di loro me per diversi progetti. In questo tipo di processo timer, si sta l'elaborazione di un insieme di siti, nappe, o elenchi di effettuare una sorta di manutenzione. E 'in genere più semplice per elaborare un sito / web / lista alla volta, e al compito svolto non è il tipo che deve essere eseguita con la massima velocità (cioè qualcosa che richiederebbe un modello simultaneo / multi-threaded di elaborazione per completare rapidamente).

In questo tipo di scenario, ho costruito il mio genere processi timer di utilizzare uno SPJobLockType di "Job". Come avrete notato, questo assicura che una sola istanza del processo timer è in esecuzione in un dato momento all'interno dell'azienda agricola. Questo consente di evitare collisioni che si verificherebbe se più istanze correva con una SPJobLockType di "Nessuno", ed evita anche la confusione (almeno lo trovo confuso) il meccanismo di funzionamento che è associato con uno SPJobLockType di "ContentDatabase".

Ecco un link per il processo timer che ho scritto e postato su CodePlex. Esegue lo stesso tipo di sweep (ad un livello più alto di poco) che si stavano descrivendo: http://blobcachefarmflush.codeplex.com/SourceControl/changeset/view/53851#797787 . Un'istanza del processo timer viene creato in una FeatureReceiver con la seguente riga di codice:

BlobCacheFarmFlushTimerJob newJob = new BlobCacheFarmFlushTimerJob(jobName, housingWebApp, null, SPJobLockType.Job);

Sulla base della mia comprensione di ciò che hai scritto, credo che uno SPJobLockType di "Job" sarebbe opportuno. Si vuole garantire che una sola istanza del processo è in esecuzione in un momento (per evitare che due o più istanze dello stesso lavoro dal tentativo di elaborare lo stesso SPSite).

Mi auguro che aiuta!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top