Raccomandazioni per lo sviluppo di processi in background

Si applica a questa raccomandazione della checklist di affidabilità ben progettata: Power Platform

RE:05 Rafforza la resilienza del tuo carico di lavoro implementando la gestione degli errori e la gestione degli errori temporanei. Integra le funzionalità nella soluzione per gestire errori dei componenti ed errori temporanei.

Questa guida descrive i consigli per lo sviluppo di processi in background. I processi in background vengono eseguiti automaticamente senza la necessità dell'interazione dell'utente. Molte applicazioni richiedono processi in background eseguiti indipendentemente dall'interfaccia utente.

Alcuni esempi di processi in background includono processi batch, attività di elaborazione intensive e processi di lunga durata, come i flussi di lavoro. L'applicazione avvia il processo ed elabora le richieste interattive degli utenti.

Ad esempio, un'applicazione potrebbe dover generare un riepilogo ed estrarre valutazioni e punti chiave dai documenti caricati dagli utenti. È possibile eseguire un processo in background per eseguire le azioni IA e salvare il riepilogo e i punti chiave nel database. L'utente non deve attendere il completamento del processo. Come altro esempio, un utente potrebbe inviare una richiesta di spesa, che avvia un flusso di lavoro in background che elabora la richiesta di spesa e la invia per l'approvazione. L'utente può continuare a presentare un'altra richiesta di spesa o abbandonare l'applicazione mentre è in esecuzione il processo in background. Al termine del processo in background, viene inviato un messaggio e-mail all'utente per confermare che la richiesta di spesa è stata inviata per l'approvazione.

I processi in background contribuiscono a ridurre al minimo il carico sull'interfaccia utente dell'applicazione, migliorando la disponibilità e riducendo i tempi di risposta interattiva.

Strategie di progettazione chiave

Per scegliere quale attività designare come processo in background, valuta se l'attività viene eseguita senza l'interazione dell'utente e se l'interfaccia utente deve attendere il completamento dell'attività. Le attività che richiedono l'attesa dell'utente o dell'interfaccia utente durante l'esecuzione in genere non sono processi in background appropriati.

Tipi di processi in background

Alcuni esempi di processi in background sono:

  • Processi a utilizzo intensivo di risorse che richiedono molto tempo per essere completati, come l'esecuzione di una serie di transazioni.

  • Processi batch, come aggiornamenti notturni dei dati o elaborazioni pianificate.

  • Flussi di lavoro di lunga durata, come l'evasione degli ordini o il provisioning di servizi e sistemi.

  • Flussi di lavoro che richiedono collaborazione asincrona, come le approvazioni.

  • Elaborazione di dati sensibili che trasferisce l'attività in una posizione più sicura per l'elaborazione. Ad esempio, è consigliabile non elaborare dati sensibili all'interno di un'app Web. È consigliabile invece utilizzare un modello come il modello Gatekeeper per trasferire i dati a un processo in background isolato che ha accesso allo spazio di archiviazione protetto.

Trigger

Avvia i processi in background con:

  • Trigger basati su eventi: un evento, che sia un'azione dell'utente nell'applicazione o un evento che si verifica su un origine dati, attiva attività.

  • Trigger basati sulla pianificazione: una pianificazione basata su un timer richiama attività. Il processo può essere pianificato su base ricorrente o per una singola esecuzione.

Trigger guidati dagli eventi

Un'azione attiva un'invocazione guidata dagli eventi che avvia l'attività in background. Esempi di trigger guidati dagli eventi includono:

  • L'interfaccia utente o un processo diverso attiva il processo in background e passa i dati dall'azione eseguita al processo in background. Ad esempio, un utente invia una richiesta di spesa tramite un modulo e i dettagli del modulo vengono passati al processo in background per l'elaborazione.

  • L'interfaccia utente o un processo diverso salva o aggiorna un valore presente in archivio. Il processo in background monitora lo spazio di archiviazione e rileva le modifiche, ad esempio l'aggiunta di nuovi valori o la modifica di valori esistenti, e attiva il processo in background in base a tale modifica.

  • L'interfaccia utente o un processo diverso effettua una richiesta a un endpoint, ad esempio un URI HTTPS o un'API esposta come servizio Web. Come parte della richiesta, l'interfaccia utente o il processo trasferisce i dati richiesti dall'attività in background. L'endpoint o il servizio web richiama l'attività in background, che utilizza i dati come input.

Altri esempi di trigger guidati da eventi includono l'invio di un modulo in un'applicazione, l'aggiunta di una nuova riga a archivio dati, un frase trigger in Copilot che avvia un argomento che richiama un flusso, la modifica del valore di un campo in archivio dati, un'e-mail con un oggetto specifico o proveniente da un mittente specifico che arriva nella posta in arrivo e un file caricato in una posizione di archiviazione file.

Utilizza le condizioni di attivazione per semplificare i flussi di lavoro e ridurre il numero di esecuzioni non necessarie. Le condizioni di attivazione impostano più condizioni che devono essere soddisfatte prima che venga attivato un flusso di lavoro.

Nota

Verifica di utilizzare le condizioni di attivazione per evitare cicli infiniti se, come parte del flusso di lavoro, modifichi l'origine dati che avvia il flusso di lavoro. Ad esempio, l'applicazione potrebbe modificare i campi in una riga di tabella Microsoft Dataverse e il flusso di lavoro eseguire query aggiuntive basate su tali campi modificati, modificando ulteriormente la stessa riga. Utilizza le condizioni di attivazione per avviare il flusso di lavoro solo quando vengono aggiornati i campi modificati dall'applicazione, ma non tutti gli altri campi.

Trigger basati sulla pianificazione

Un timer attiva un'invocazione basata sulla pianificazione che avvia l'attività in background. Esempi di trigger basati sulla pianificazione includono:

  • Un processo in background viene eseguito su base giornaliera o settimanale ed esegue una serie di azioni.

  • Un processo o un'applicazione separata avvia un timer che richiama l'attività in background dopo un ritardo o in un momento specifico.

Altri esempi di attività adatte all'invocazione basata sulla pianificazione includono routine di elaborazione in batch (come l'aggiornamento degli elenchi di prodotti correlati per i clienti in base al loro comportamento recente), attività di routine di elaborazione dati (come la generazione di risultati accumulati), analisi dei dati per report, pulizia della conservazione dei dati e controlli di coerenza dei dati.

Risultati restituiti

I processi in background vengono eseguiti in modo asincrono in un processo separato dall'interfaccia utente o dal processo che ha richiamato il processo in background. Idealmente, i processi in background sono operazioni di tipo attiva e dimentica. Lo stato del runtime non influenza l'interfaccia utente o il processo di chiamata, pertanto il processo di chiamata non attende il completamento delle attività. L'interfaccia utente e il processo di chiamata non sono in grado di rilevare quando termina l'attività.

Se è necessario che un'attività in background comunichi con l'attività di chiamata per indicare l'avanzamento o il completamento, è necessario implementare un meccanismo come:

  • Scrivi un valore dell'indicatore di stato nell'archivio accessibile all'interfaccia utente o all'attività del chiamante, che può monitorare o verificare questo valore. Altri dati restituiti dall'attività in background al chiamante possono essere inseriti nello stesso archivio.

  • Esponi un'API o endpoint dall'attività in background a cui l'interfaccia utente o il chiamante può accedere per ottenere informazioni sullo stato. La risposta può includere i dati restituiti dall'attività in background al chiamante.

  • Configura l'attività in background in modo che risponda all'interfaccia utente con lo stato o i dati elaborati.

Coordinamento

Le attività in background possono essere complesse e richiedere l'esecuzione di più attività. In questi scenari, è normale dividere l'attività in passaggi o attività secondarie discrete più piccole che possono essere eseguite da più utenti. I processi a più fasi sono più efficienti e flessibili perché i singoli passaggi sono spesso riutilizzabili in più processi. È anche facile aggiungere, rimuovere o modificare l'ordine dei passaggi.

Può essere difficile coordinare più attività e passaggi, ma esistono tre modelli comuni per guidare la soluzione:

  • Scomporre un attività in più passaggi riutilizzabili. A un'applicazione potrebbe essere richiesto di eseguire varie attività di diversa complessità sulle informazioni che elabora. Un approccio semplice ma non flessibile per implementare tale applicazione consiste nell'eseguire questa elaborazione come un modulo monolitico. Ma questo approccio probabilmente ridurrà le opportunità di refactoring del codice, di ottimizzazione o di riutilizzo se l’applicazione richiede parti della stessa elaborazione altrove.

  • Gestire l'orchestrazione dei passaggi per un attività. Un'applicazione potrebbe eseguire attività che comprendono numerosi passaggi, alcuni dei quali potrebbero richiamare servizi remoti o accedere a risorse remote. A volte i singoli passaggi sono indipendenti l'uno dall'altro, ma sono orchestrati dalla logica dell'applicazione che implementa l'attività.

  • Gestire il ripristino per i passaggi attività non riusciti. Se uno o più passaggi non vengono completati, un'applicazione potrebbe dover annullare il lavoro eseguito da una serie di passaggi, che insieme definiscono un'operazione eventualmente coerente.

Considerazioni sulla resilienza

Crea attività in background resilienti per fornire servizi affidabili per l'applicazione. Quando pianifichi e progetti attività in background, considera i seguenti punti:

  • Le attività in background devono gestire con cautela i riavvii senza danneggiare i dati o introdurre incoerenze nell'applicazione. Per attività di lunga durata o in più passaggi, prendi in considerazione l'utilizzo di punti di controllo. Utilizza i punti di controllo per salvare lo stato dei processo nell'archivio persistente o come messaggi in una coda e configura la logica dei nuovi tentativi in ​​caso di errori imprevisti di un'azione.

  • Quando si utilizzano le code per comunicare con attività in background, le code possono fungere da buffer per archiviare le richieste inviate alle attività mentre l'applicazione è sottoposta a un carico superiore al normale. Le attività possono aggiornarsi con l'interfaccia utente durante i periodi meno intensi e i riavvii non bloccano l'interfaccia utente.

Considerazioni sulla scala e le prestazioni

Le attività in background devono offrire prestazioni sufficienti per garantire che non blocchino l'applicazione o ritardino il funzionamento quando il sistema è sotto carico. In genere, le prestazioni migliorano quando si ridimensionano le istanze di calcolo che ospitano le attività in background. Quando pianifichi e progetti attività in background, considera i seguenti punti relativi alla scalabilità e alle prestazioni:

  • I processi in background potrebbero influire sull'esperienza dell'utente se i risultati delle attività in background vengono presentati all'utente. Ad esempio, i processi in background potrebbero richiedere all'utente di attendere una notifica, aggiornare la pagina o controllare manualmente lo stato dell'attività. Questi comportamenti possono aumentare la complessità dell'interazione dell'utente e influire negativamente sull'esperienza dell'utente. Prendi in considerazione alternative alla risposta dei dati all'interfaccia utente, come l'invio di una notifica tramite e-mail o Microsoft Teams oppure la possibilità di verificare la presenza di aggiornamenti di stato nell'interfaccia utente. Nel nostro esempio di invio di moduli di spesa, invece di rispondere allo stato all'interfaccia utente, potresti avere una pagina nell'applicazione che elenca tutti i moduli di spesa inviati con il loro stato e la possibilità di attivare un aggiornamento.

  • I processi in background possono creare problemi per la sincronizzazione dei dati e il coordinamento dei processi, soprattutto se le attività in background dipendono l'una dall'altra o da altre origini dati. Ad esempio, i processi in background potrebbero gestire problemi di coerenza dei dati, race condition, deadlock o timeout.

  • Per evitare la perdita di prestazioni sotto carico, è possibile implementare la logica in modo che un singolo punto della catena di elaborazione non causi un collo di bottiglia. Considera altre limitazioni, ad esempio la velocità effettiva massima delle azioni del flusso di lavoro, dell'archiviazione e di altri servizi su cui si basano l'applicazione e le attività in background.

Compromesso: i lavori in background introducono più componenti e dipendenze nel sistema, il che può aumentare la complessità e i costi manutenzione della soluzione. Ad esempio, i processi in background potrebbero richiedere un servizio di monitoraggio e un meccanismo di ripetizione separati.

Facilitazione di Power Platform

Le sezioni seguenti descrivono i servizi che è possibile utilizzare per ospitare, eseguire, configurare e gestire processi in background.

Power Automate

Power Automate I flussi cloud sono flussi di lavoro eseguiti nel cloud. Possono essere flussi automatizzati attivati ​​da un evento, come l'arrivo di un messaggio e-mail da una persona specifica. Possono essere flussi istantanei che puoi avviare con il clic di un pulsante, come un promemoria inviato al tuo team dal tuo dispositivo mobile. Possono essere flussi pianificati che vengono eseguiti a una determinata ora, ad esempio un caricamento giornaliero di dati su SharePoint o un database. Puoi anche automatizzare le attività ripetitive dal desktop o dal dispositivo mobile.

Acquisisci familiarità con i limiti dei flussi automatizzati, pianificati e istantanei per quanto riguarda velocità effettiva, richieste, concorrenza, looping e debatching. Assicurati di prendere in considerazione questi limiti mentre progetti il ​​tuo flusso di lavoro.

Riduci i rischi pianificando la gestione degli errori.

Ecco alcuni esempi in cui è possibile utilizzare i flussi per eseguire processi in background: Power Automate

Microsoft Dataverse

Microsoft Dataverse colonne calcolate e rollup:

  • Le colonne formula sono colonne che visualizzano un valore calcolato in una Microsoft Dataverse tabella.

  • Le colonne calcolate automatizzano i calcoli manuali utilizzati nel processo aziendale. Ad esempio, è possibile che un venditore desideri conoscere il ricavo ponderato di un'opportunità, basato sui ricavi previsti di un'opportunità moltiplicata per la probabilità. In alternativa, desidera applicare automaticamente uno sconto, se un ordine è superiore a un certo importo. Una colonna calcolata può contenere valori come il risultato di operazioni matematiche semplici o operazioni condizionali, ad esempio Greater-Than o If-Else.

  • Le colonne di rollup consentono agli utenti di ottenere informazioni approfondite sui dati tramite il monitoraggio delle principali metriche aziendali. Una colonna di rollup contiene un valore di aggregazione calcolato sulle righe correlate a una riga specificata. Sono incluse tabelle regolari e tabelle impegni, ad esempio i messaggi di posta elettronica e gli appuntamenti. In scenari più complessi, è possibile aggregare i dati nella gerarchia delle righe. Come amministratore o addetto alla personalizzazione, è possibile definire le colonne di rollup utilizzando gli strumenti di personalizzazione in Power Apps, senza dover sviluppare codice.

Le operazioni in background possono inviare richieste che Dataverse elaborano in modo asincrono. Le operazioni in background sono utili quando non si desidera mantenere una connessione durante l'esecuzione di una richiesta.

I plug-in sono gestori di eventi personalizzati che vengono eseguiti in risposta in risposta a un evento specifico generato durante l'elaborazione di un'operazione sui dati. Microsoft Dataverse

Microsoft Dataverse offre inoltre una soluzione avanzata per ottenere un'architettura dati più efficiente e ridurre il carico di lavoro lato client attraverso plug-in con poco codice. Questi plug-in sono flussi di lavoro riutilizzabili in tempo reale che eseguono un set specifico di comandi all'interno di Dataverse, in esecuzione lato server e attivati ​​da gestori di eventi personalizzati.

Elenco di controllo per l'affidabilità

Fai riferimento alla serie completa di elementi consigliati.