Convenzione di denominazione di riprogrammazione coda (schema di comando)

2

Per il mio progetto sto creando un meccanismo di accodamento basato sul modello di comando, che può eseguire uno dei numerosi lavori. I lavori possono aggiungere altri lavori alla coda o possono essere aggiunti da un essere umano. La maggior parte dei lavori viene eseguita dopo l'esecuzione una volta, ma alcuni lavori dovranno essere riprogrammati in un secondo momento.

Ho deciso di creare un set di dati separato per i lavori che devono essere riprogrammati e creare un processo separato che esegua il loop su questi a intervalli regolari per aggiungere nuovi lavori alla coda.

Sono bloccato a quale sia la convenzione di denominazione corretta per il mio set di dati e il processo (in loop) per riprogrammare i lavori. Il mio pensiero è che assomiglierà a qualcosa del genere:

I miei set di dati:

  • Lavoro (in coda) - Informazioni sul lavoro da eseguire.
  • Rapporto sugli incidenti - Qualsiasi risultato che richiede maggiore attenzione viene registrato qui.
  • Risultato (multiplo) - Tutti i dati risultanti dai lavori eseguiti.
  • Lavoro pianificato (come chiamare?) - Informazioni su un lavoro che deve essere eseguito in futuro e il timestamp il mio processo deve aggiungere il lavoro alla coda.

I miei oggetti:

  • Cliente - Un oggetto che ottiene un lavoro dalla coda e si associa ad una specifica classe di comando e lo passa al comando invoker.
  • Comando (multiplo) - Contiene la logica del lavoro e i dati del lavoro per passare le dipendenze.
  • Invocatore dei comandi - Fornisce l'ultima chiamata per eseguire il comando e lo rimuove dalla coda in seguito. Questa classe sarà probabilmente anche responsabile dell'aggiornamento dei dati sui lavori pianificati.
  • Pianificazione lavoro - Un oggetto indipendente che può aggiungere lavori in qualsiasi momento da un lavoro che viene eseguito.

Non sono sicuro di dover aggiungere il processo di riprogrammazione dei lavori come un lavoro separato o come un'applicazione completamente diversa. Spero che qualcuno possa darmi qualche consiglio su come andare avanti.

    
posta Coded Monkey 23.03.2015 - 00:09
fonte

1 risposta

1

In programma

  • Tecnicamente un lavoro pianificato implica un pianificatore di lavoro. Si parla di scrivere il proprio programma di pianificazione, ma normalmente questo sarebbe gestito a un livello piuttosto basso e tiene conto di cose come risorse disponibili e priorità del lavoro, non solo quando il lavoro vuole essere eseguito.
  • In inglese, direi che in programma implica un calendario.

differite

  • Tecnicamente implica che il lavoro sia in attesa di qualcosa, che un servizio esterno diventi disponibile o risorse da liberare.
  • Ma ancora una volta, in inglese, potrei aspettarmi che il contrario sia vero, rinviato in riferimento al fatto che il lavoro viene rimandato fino a qualche tempo definito.

Personalmente vorrei andare con il primo: lavoro programmato. Avete in programma di scrivere qualcosa che chiamerete un job scheduler e non un gestore di lavoro posticipato, quindi è logico.

PS. Non so se questo si adatterebbe con il resto del tuo sistema, ma hai pensato di creare thread che aspettano il passaggio del periodo di differimento prima di controllare la coda. Java ad esempio ha un metodo Thread.sleep (timePeriod) altrimenti dovresti comunque avere il sovraccarico computazionale del thread che deve svegliarsi ogni tanto per controllare che ora era, ma almeno non accederà alla tua struttura dati ogni tempo.

    
risposta data 23.03.2015 - 09:53
fonte

Leggi altre domande sui tag