- Aggiunto supporto schedulazione con intervalli flessibili (secondi/minuti/ore/giorni/settimane/mesi) - Esteso modello ProfileSchedule con campi IntervalValue e IntervalUnit - Ottimizzato ScheduledJobService per controlli ogni 30s con esecuzione parallela - Implementata interfaccia UI completa con anteprima real-time in italiano - Aggiunta migrazione database AddIntervalSchedulingFields - Implementati metodi calcolo NextExecutionTime per intervalli - Aggiunta gestione tracking anti-duplicati e cleanup automatico - Creata documentazione completa (6 file, 2500+ righe) Modifiche tecniche: - ProfileSchedule.cs: Nuovi campi e metodi CalculateNextInterval/GetScheduleDescription - ScheduledJobService.cs: Ridotto check interval a 30s, aggiunto parallel processing - ProfileScheduleService.cs: Supporto calcolo intervalli in UpdateNextExecutionTimeAsync - Scheduling.razor: Aggiunta sezione UI per configurazione intervalli - Scheduling.razor.cs: Implementato GetIntervalPreview() e gestione stato campi
9.6 KiB
Guida all'Interfaccia di Schedulazione - Data-Coupler
📋 Overview
L'interfaccia di schedulazione di Data-Coupler permette di configurare esecuzioni automatiche dei profili di trasferimento dati con diverse modalità, inclusa la nuova funzionalità di intervalli personalizzati.
🎯 Accesso alla Pagina di Schedulazione
- Avvia l'applicazione Data-Coupler
- Nella barra di navigazione, clicca su "Schedulazione Profili" (icona orologio)
- Vedrai la lista delle schedulazioni esistenti o un messaggio per crearne una nuova
➕ Creare una Nuova Schedulazione
Passo 1: Aprire il Modal di Creazione
Clicca sul pulsante verde "+ Nuova Schedulazione" in alto a destra.
Passo 2: Configurare i Campi Base
Nome Schedulazione (obbligatorio)
- Inserisci un nome descrittivo
- Esempio:
"Sync Clienti Salesforce","Import Ordini Ogni 5 Minuti"
Descrizione (opzionale)
- Aggiungi note o dettagli aggiuntivi
- Esempio:
"Sincronizzazione automatica clienti da Salesforce a database locale"
Profilo (obbligatorio)
- Seleziona dal dropdown il profilo di trasferimento da eseguire
- Verranno mostrati solo i profili attivi
Passo 3: Scegliere il Tipo di Schedulazione
Seleziona una delle seguenti opzioni:
⏱️ Tipi di Schedulazione Disponibili
1. Una Volta (once)
Esecuzione singola in una data e ora specifica.
Configurazione:
- Data e Ora di Esecuzione: Seleziona data e ora usando il picker
- Formato:
GG/MM/AAAA HH:mm
Esempio:
Tipo: Una volta
Data e Ora: 15/10/2025 14:30
2. ⭐ Intervallo Personalizzato (interval) - NUOVO!
Esecuzione ripetuta ogni N unità di tempo.
Configurazione:
- Intervallo: Inserisci un numero (minimo 1)
- Unità di Tempo: Seleziona dal dropdown
- Secondi - Per test rapidi o requisiti real-time
- Minuti - Per sincronizzazioni frequenti
- Ore - Per aggiornamenti regolari
- Giorni - Per backup giornalieri
- Settimane - Per report settimanali
- Mesi - Per consolidamenti mensili
Anteprima in Tempo Reale: Una volta configurati intervallo e unità, vedrai un'anteprima che mostra:
Esecuzione ogni 5 minuti
Esempi Pratici:
Test/Sviluppo:
Intervallo: 30
Unità: Secondi
Anteprima: Esecuzione ogni 30 secondi
Sincronizzazione Frequente:
Intervallo: 5
Unità: Minuti
Anteprima: Esecuzione ogni 5 minuti
Aggiornamento Orario:
Intervallo: 2
Unità: Ore
Anteprima: Esecuzione ogni 2 ore
Backup Giornaliero:
Intervallo: 1
Unità: Giorni
Anteprima: Esecuzione ogni 1 giorno
Report Settimanale:
Intervallo: 1
Unità: Settimane
Anteprima: Esecuzione ogni 1 settimana
Consolidamento Mensile:
Intervallo: 1
Unità: Mesi
Anteprima: Esecuzione ogni 1 mese
3. Giornaliera (daily)
Esecuzione ogni giorno alla stessa ora.
Configurazione:
- Ora di Esecuzione: Formato 24 ore (es:
14:30)
Esempio:
Tipo: Giornaliera
Ora: 09:00
Risultato: Esegue ogni giorno alle 09:00
4. Settimanale (weekly)
Esecuzione in un giorno specifico della settimana.
Configurazione:
- Ora di Esecuzione: Formato 24 ore
- Giorno della Settimana: Seleziona dal dropdown
Esempio:
Tipo: Settimanale
Ora: 10:00
Giorno: Lunedì
Risultato: Esegue ogni Lunedì alle 10:00
5. Mensile (monthly)
Esecuzione in un giorno specifico del mese.
Configurazione:
- Ora di Esecuzione: Formato 24 ore
- Giorno del Mese: Numero da 1 a 31
Esempio:
Tipo: Mensile
Ora: 08:00
Giorno: 1
Risultato: Esegue il primo giorno di ogni mese alle 08:00
🎛️ Opzioni Avanzate
Schedulazione Attiva
- Checkbox "Schedulazione attiva"
- Se spuntato: la schedulazione sarà abilitata e verrà eseguita
- Se non spuntato: la schedulazione sarà salvata ma non eseguita
Override Database (Opzionale)
Se il profilo selezionato lo supporta, puoi sovrascrivere:
- Database Sorgente: Per eseguire su un database diverso
- Database Destinazione: Per scrivere su un database diverso
💾 Salvare la Schedulazione
- Verifica che tutti i campi obbligatori siano compilati
- Clicca sul pulsante "💾 Salva"
- Vedrai un messaggio di conferma
- La schedulazione apparirà nella lista principale
📊 Visualizzazione delle Schedulazioni
Card Schedulazione
Ogni schedulazione è mostrata in una card con:
Header:
- Icona del tipo (🔁 per intervalli, 📅 per altre)
- Nome schedulazione
- Menu dropdown ⋮ per azioni
Corpo:
- Profilo: Nome del profilo associato
- Descrizione: Se presente
- Tipo: Descrizione leggibile del tipo di schedulazione
- Esempio per intervalli:
"INTERVALLO: Ogni 5 minuti"
- Esempio per intervalli:
- Prossima Esecuzione: Data e ora della prossima esecuzione prevista
- Ultima Esecuzione: Data e ora dell'ultima esecuzione (se presente)
- Status: Badge colorato con risultato ultima esecuzione
- 🟢 Verde: Success
- 🔴 Rosso: Failed
- 🔵 Blu: Running
Bordo Card:
- 🟢 Verde: Schedulazione attiva
- ⚫ Grigio: Schedulazione disabilitata
⚙️ Azioni su Schedulazioni Esistenti
Menu Dropdown (⋮)
✏️ Modifica
- Apre il modal di modifica
- Tutti i campi sono precompilati con i valori attuali
- Salva per applicare le modifiche
▶️ Esegui Ora
- Esegue immediatamente la schedulazione
- Non modifica la prossima esecuzione programmata
- Utile per test o esecuzioni fuori programma
🗑️ Elimina
- Richiede conferma
- Elimina permanentemente la schedulazione
- Non elimina il profilo associato
🔍 Monitoraggio Esecuzioni
Pulsante "📜 Storico Esecuzioni"
In alto a destra, clicca per vedere:
- Tutte le esecuzioni passate
- Status (success/failed)
- Numero di record trasferiti
- Durata esecuzione
- Messaggi di errore (se presenti)
💡 Best Practices per Intervalli
Ambienti Diversi
Sviluppo/Test:
- Usa intervalli brevi (30-60 secondi) per test rapidi
- Ricorda di disabilitare o eliminare dopo i test
Staging:
- Intervalli moderati (1-5 minuti)
- Simula il carico di produzione
Produzione:
- Intervalli consigliati: minimo 5-10 minuti
- Valuta il carico sul sistema e sulle API
- Monitora le performance
Considerazioni Performance
Intervalli Brevi (<1 minuto):
- ⚠️ Usa solo se necessario
- Aumenta il carico su database e API
- Monitora CPU e memoria
- Considera limitazioni API rate limits
Intervalli Ottimali (5-15 minuti):
- ✅ Bilanciamento tra freschezza dati e performance
- ✅ Riduce carico sistema
- ✅ Permette completamento esecuzioni precedenti
Intervalli Lunghi (>1 ora):
- ✅ Ideale per grandi dataset
- ✅ Minimo impatto sistema
- ✅ Adatto per backup e consolidamenti
🎯 Esempi di Configurazione
Caso d'Uso 1: Sincronizzazione Real-Time Salesforce
Nome: Sync Leads Salesforce Real-Time
Profilo: Salesforce to SQL - Leads
Tipo: Intervallo Personalizzato
Intervallo: 2
Unità: Minuti
Schedulazione Attiva: ✅
Risultato: Sincronizza leads ogni 2 minuti durante l'orario lavorativo.
Caso d'Uso 2: Backup Database Notturno
Nome: Backup Database Notte
Profilo: Full Database Backup
Tipo: Giornaliera
Ora: 02:00
Schedulazione Attiva: ✅
Risultato: Backup completo ogni notte alle 02:00.
Caso d'Uso 3: Report Settimanale
Nome: Report Vendite Settimanale
Profilo: Sales Report
Tipo: Settimanale
Ora: 09:00
Giorno: Lunedì
Schedulazione Attiva: ✅
Risultato: Genera report vendite ogni Lunedì mattina.
Caso d'Uso 4: Test Incrementale
Nome: Test Sync Every 30s
Profilo: Test Profile
Tipo: Intervallo Personalizzato
Intervallo: 30
Unità: Secondi
Schedulazione Attiva: ✅
Risultato: Test con sincronizzazione ogni 30 secondi (ricorda di disabilitare dopo test!).
Caso d'Uso 5: Consolidamento Mensile
Nome: Consolidamento Fine Mese
Profilo: Monthly Consolidation
Tipo: Mensile
Ora: 23:00
Giorno: 28
Schedulazione Attiva: ✅
Risultato: Consolidamento dati il 28 di ogni mese alle 23:00.
🛠️ Troubleshooting
Schedulazione Non Si Esegue
Verifica:
- ✅ Schedulazione è attiva (checkbox spuntato)
- ✅ Profilo associato esiste ed è attivo
- ✅ NextExecutionTime è impostato (visibile nella card)
- ✅ Background service è in esecuzione (verifica log applicazione)
Intervalli Troppo Frequenti
Sintomi:
- Alta CPU/Memoria
- Log pieni di esecuzioni
- Timeout o errori API
Soluzione:
- Modifica schedulazione
- Aumenta intervallo (es: da 30s a 5min)
- Monitora per 30-60 minuti
Esecuzioni Saltate
Causa Possibile:
- Esecuzione precedente ancora in corso
- Sistema sotto carico
Soluzione:
- Il sistema salta automaticamente se già in esecuzione
- Aumenta intervallo se succede spesso
- Verifica durata media esecuzioni nello storico
📞 Supporto
Per problemi o domande:
- Controlla i log applicazione
- Consulta la documentazione tecnica (
ADVANCED_SCHEDULING_SYSTEM.md) - Verifica lo storico esecuzioni per errori specifici
🔄 Aggiornamenti Futuri
Funzionalità pianificate:
- Dashboard monitoraggio real-time
- Notifiche email su errori
- Pause/Resume schedulazioni
- Dependency chains tra schedulazioni
- Export/import configurazioni
Versione: 2.0
Data: Ottobre 2025
Compatibile con: Data-Coupler .NET 9.0
Autore: Alessio Dalsanto
🎉 Conclusione
La nuova interfaccia di schedulazione con intervalli personalizzati offre massima flessibilità per qualsiasi scenario di sincronizzazione dati. Utilizza gli esempi e le best practices per configurare schedulazioni ottimali per il tuo ambiente! 🚀