2016-07-06 19 views
6

Voglio usare Quartz per funzionare come uno scheduler di script, si scrive il VB da una GUI e quindi si seleziona un trigger, il codice viene quindi compilato ed eseguito sul trigger, il bit difficile è come lo gestisco in modo che esegue questo script con nel contesto dell'applicazione in modo che possa accedere ai miei modelli di framework di entità, ecc. Come potrei ottenere ciò?Quartz che compila gli script di lavoro dopo il runtime?

+0

E 'passato molto tempo da quando ho usato Quartz (presumo voi intendiate Quartz.net), ma iirc non è in grado di iniettare nulla ma alcuni dati di stringa in un lavoro al quarzo. Il modo in cui avevo precedentemente risolto questo era accedendo allo stato globale (tramite il mio IoC o una variabile statica) dal lavoro che è stato eseguito, cosa che mi sembrava super disordinata. Non so se il quarzo ora ha il supporto DI, ma suppongo che non lo sia :( – cwap

+0

@cwap Sicuramente funzionerebbe, la stringa potrebbe essere un VB da eseguire? –

+0

Probabilmente potrebbe, ma la stringa dovrà In base alle impostazioni di memorizzazione del quarzo e alla lunghezza della stringa, questo potrebbe essere un problema. Cerca in JobDataMap (http://www.quartz-scheduler.net/documentation/quartz-2.x/tutorial/more- about-jobs.html). Il "problema" è che tutti i processi al quarzo devono essere completamente serializzabili nel modello di dati al quarzo, quindi i dati dinamici e le raccolte sono un no-go. Immagino che qualcosa come uno script possa funzionare, anche se Personalmente, optiamo per la creazione dello script-storage da qualche altra parte, come in un database separato o una cartella sul filesystem – cwap

risposta

4

Fondamentalmente è necessario inserire Quartz.Server nella parte superiore dell'applicazione. Aggiungi questo progetto alla tua soluzione.

Se hai solo bisogno di utilizzare le tue entità in processi al quarzo, aggiungi il tuo progetto con le entità come riferimento a Quartz.Server e utilizza le entità come fai nell'app principale.

Se si utilizza un contenitore IoC, è possibile utilizzare estensioni come this per inserire dipendenze nel lavoro. Oppure puoi scrivere il tuo SchedulerFactory e JobFactory e costruire il tuo ambiente di lavoro qui.

+0

Ciao Alexey, ho fatto dei progressi con questo, potresti controllare la mia altra domanda? http://stackoverflow.com/questions/38309777/accessing-local-types-from-script-executed-with-vbcodeprovider –

Problemi correlati