Servizio Gestione flussi di lavoro

Il servizio Gestione flusso di lavoro (WMS) è un servizio Windows che fornisce i servizi di gestione per le istanze di servizio di flusso di lavoro riportati di seguito:

  • Attivazione delle istanze di servizio di flusso di lavoro. WMS attiva le istanze di servizio di flusso di lavoro in un archivio di istanza quando le istanze diventano attivabili. Un'istanza di servizio di flusso di lavoro in un archivio di istanza è attivabile se l'istanza diventa eseguibile e un host del servizio che corrisponde all'istanza non è in esecuzione sul computer locale. L'elenco riportato di seguito illustra i motivi che rendono eseguibile un'istanza:

    • L'istanza viene scaricata e salvata permanentemente durante l'attesa per il completamento di un'attività posticipata e quindi quest'ultima viene completata.

    • L'host del servizio si disattiva durante il caricamento dell'istanza.

    • L'istanza presenta un blocco scaduto.

  • Esecuzione di comandi di controllo utente. Un provider di controllo istanza per un archivio di istanza aggiunge i comandi che riceve dai cmdlet di controllo istanza di Windows PowerShell a una coda nell'archivio di istanza. Questa coda viene creata e mantenuta dal provider di controllo istanza. WMS recupera i comandi dalla coda, li esegue, quindi elimina i comandi dalla coda se l'esecuzione del comando ha esito positivo.

Il resto dell'argomento illustra in dettaglio questi servizi. Per informazioni sull'installazione e la configurazione del servizio Gestione flussi di lavoro, vedere Installazione e configurazione del servizio Gestione flussi di lavoro.

Attivazione delle istanze di servizio di flusso di lavoro

Per impostazione predefinita, WMS individua automaticamente gli archivi di istanza che deve monitorare per le istanze di flusso di lavoro attivabili. A tale scopo WMS analizza i file Web.config a livello radice, del sito e dell'applicazione durante l'avvio del servizio e verifica se uno dei file di configurazione è stato modificato. Inoltre è possibile specificare particolari archivi di istanza che WMS deve monitorare anziché utilizzare l'individuazione automatica.

WMS crea un oggetto InstanceStore e sottoscrive HasActivatableWorkflowEvent per ciascun archivio di istanza che individua. Un archivio di istanza genera HasActivatableWorkflowEvent quando trova un'istanza di flusso di lavoro attivabile nell'archivio. Successivamente, l'archivio di istanza interrompe il monitoraggio finché QueryActivatableWorkflowsCommand non viene richiamato una volta nell'archivio.

Quando WMS riceve HasActivatableWorkflowEvent, esegue QueryActivatableWorkflowsCommand sull'archivio di istanza per ottenere parametri di attivazione necessari per creare un host di flusso di lavoro.

Quindi WMS richiama il servizio di Gestione servizi supportato dall'applicazione che contiene il servizio la cui istanza necessita di essere attivata e trasmette i parametri di attivazione. AppFabric aggiunge automaticamente il servizio Gestione servizi, un servizio WCF, a tutte le applicazioni con l'attributo serviceManagement abilitato. Il servizio Gestione servizi espone un endpoint di attivazione del servizio al quale WMS accede mediante l'indirizzo che crea utilizzando il nome del sito, il percorso virtuale dell'applicazione e l'indirizzo conosciuto dell'endpoint di attivazione del servizio. WMS utilizza il binding net.pipe per questo endpoint. Per ulteriori informazioni su questo servizio, vedere Servizio Gestione servizi.

Il servizio Gestione servizi attiva un host del servizio di flusso di lavoro tramite i parametri di attivazione che riceve da WMS. L'host del servizio crea un archivio di istanza (quale l'archivio di istanza di flusso di lavoro di SQL) e richiama un metodo sull'archivio per caricare l'istanza di servizio di flusso di lavoro dall'archivio di istanza nella memoria.

Servizio Gestione flussi di lavoro - Attivazioni istanze

Avviso

WMS rileva immediatamente qualsiasi modifica apportata ai comportamenti di SQL Workflow Instance Store (SWIS) e alle corrispondenti definizioni dell'archivio di istanza presenti nei file di configurazione e inizia a monitorare tali archivi. L'applicazione continuerà, tuttavia, a utilizzare l'archivio di istanza specificato nel comportamento di SWIS nella versione precedente del file di configurazione, fino a quando il dominio dell'applicazione viene riciclato. Il dominio dell'applicazione viene riciclato una volta trascorso il periodo di tempo indicato dall'attributo delayNotificationTimeout dell'elemento httpRuntime. Ad esempio, se delayNotificationTimeout è impostato su 5000 (<httpRuntime delayNotificationTimeout = "5000" />), il dominio dell'applicazione non viene riciclato per altri 5000 secondi.

Avviso

Se si disabilitano le applicazioni o i pool di applicazioni che contengono un totale di 1000 o più servizi, WMS potrebbe non attivare più le istanze di servizio attivabili. La soluzione consiste nel sospendere le istanze dei servizi che appartengono a tali applicazioni/pool di applicazioni prima di disattivare o disabilitare le applicazioni/i pool di applicazioni.

Esecuzione dei comandi di controllo utente

Quando viene eseguito un comando su un'istanza di servizio di flusso di lavoro tramite un cmdlet di Windows PowerShell, un provider di controllo di istanza aggiunge il comando a una coda dei comandi nell'archivio di istanza utilizzato dal servizio. La coda dei comandi viene mantenuta dal provider di controllo istanza.

WMS individua automaticamente gli archivi di istanza che deve monitorare per i comandi. A tale scopo WMS analizza i file Web.config a livello della radice, del sito e dell'applicazione durante l'avvio e verifica se uno dei file di configurazione è stato modificato. WMS crea un provider di controllo istanza per ciascun archivio di istanza che individua e interroga il provider per i comandi a intervalli regolari. Nello specifico, WMS richiama il metodo BeginTryReceive su un provider di controllo istanza per ricevere i comandi.

Il provider di controllo istanza recupera un comando ma non lo elimina dalla coda dei comandi nell'archivio di istanza e restituisce il comando a WMS. Il provider posiziona un blocco con validità breve sul comando nella coda dei comandi.

WMS quindi richiama un metodo appropriato dell'endpoint di controllo istanza (ICE) esposto dall'host di servizio di flusso di lavoro per eseguire il comando sull'istanza di servizio di flusso di lavoro di destinazione. WMS richiede che l'endpoint di controllo istanza abiliti un binding net.pipe e che in questo binding sia abilitata la protezione del trasporto. WMS crea un indirizzo dell'endpoint combinando il nome del sito, il percorso virtuale del servizio e il percorso noto di ICE. Il provider di controllo istanza fornisce il nome del sito e l'informazione sul percorso virtuale del servizio. Il binding ICE è dotato di codifica hardware al binding net.pipe.

Se l'esecuzione del comando ha esito positivo, WMS richiama il metodo Completa nel provider di controllo istanza e il provider rimuove il comando dalla coda dei comandi. Se l'esecuzione del comando ha esito negativo, WMS richiama il metodo Abbandona nel provider di controllo istanza e dipende dal provider la decisione di rimuovere il comando dalla coda dei comandi o mantenerlo per ulteriori tentativi. Il provider di controllo istanza per l'archivio di istanza di flusso di lavoro SQL ripete un comando cinque volte prima di rimuoverlo dalla coda dei comandi. Se WMS si blocca durante l'esecuzione di un comando, il blocco scadrà e il comando potrà essere selezionato dalla stessa istanza WMS o da un'altra in un momento successivo.

Servizio Gestione flussi di lavoro - Esecuzione comando

Se si abilita Microsoft Distributed Transaction Coordinator (MSDTC) e il servizio MSDTC abilita le comunicazioni in entrata e in uscita, i comandi di controllo delle istanze vengono eseguiti in modo transazionale. Ad esempio, se si sospende un'istanza di servizio di flusso di lavoro, lo stato viene visualizzato in Gestione IIS o restituito dal cmdlet come Sospeso immediatamente dopo l'elaborazione del comando. Tuttavia, se MSDTC viene disabilitato o non è correttamente configurato, i comandi di controllo delle istanze vengono eseguiti in modo non transazionale. In questo caso, lo stato dell'istanza non viene aggiornato a Sospeso fino a quando l'istanza viene scaricata e salvata permanentemente nell'archivio di istanza dopo essere rimasta inattiva per un periodo di tempo superiore a quello specificato (impostazione Scarica istanze se inattive). Si noti che se si modificano le impostazioni di MSDTC, è necessario riavviare WMS per consentire al servizio di recepire le impostazioni MSDTC aggiornate.

Suggerimento

Se si rileva che uno o più comandi di controllo delle istanze rimangono in sospeso più a lungo del previsto, è necessario verificare che WMS sia in esecuzione su tutti i server della server farm. Se l'istanza risulta in esecuzione su un determinato server (come indicato dalle informazioni di monitoraggio) e un comando di controllo inviato per tale istanza non viene eseguito, è necessario controllare se WMS è in esecuzione nel server.

Avviso

Il servizio Gestione flusso di lavoro utilizza i comandi transazionali se le impostazioni DTC "Consenti connessioni in ingresso" e "Consenti connessioni in uscita" sono abilitate. Se si sta disabilitando DTC, verificare di avere anche disabilitato esplicitamente queste impostazioni in modo che verranno utilizzati comandi non transazionali.

Supporto per ambienti server farm

Di norma in ciascun nodo di una server farm è in esecuzione una singola istanza WMS. Un'istanza WMS è in grado di monitorare più archivi di istanza. In un nodo possono essere in esecuzione più istanze WMS tramite diverse identità Windows. Si consiglia di eseguire solo un'istanza WMS per un archivio di istanza in un nodo. Se vengono eseguite più istanze WMS in uno stesso nodo monitorando lo stesso archivio di istanza, possono verificarsi problemi di scalabilità.

Un'istanza prima in esecuzione in un nodo può essere selezionata da WMS in un altro nodo e attivata su quel nodo. In tal modo viene bilanciato il carico di lavoro per WMS nella server farm.

Quando viene eseguito un comando di controllo per un'istanza di flusso di lavoro, quest'ultima può essere in esecuzione o meno in un punto qualsiasi all'interno della farm. WMS recapita il comando al computer che esegue il flusso di lavoro oppure ordina al computer locale di caricare il flusso di lavoro ed eseguire il comando. Ciò consente di eseguire comandi per istanze senza sapere su quale computer l'istanza è in esecuzione.

Funzionalità dipendenti

I punti illustrati di seguito sono validi per il servizio Gestione flussi di lavoro (WMS):

  • WMS attiva ed esegue i comandi nelle istanze di servizi di flusso di lavoro ospitati mediante WorkflowServiceHost solo nell'ambiente IIS/WAS. WMS non supporta i servizi di flusso di lavoro ospitati mediante un host diverso oppure in un ambiente di hosting diverso.

  • WMS attiva le istanze di servizi di flusso di lavoro che utilizzano un archivio di istanza per il salvataggio permanente durevole dello stato.

  • WMS attiva le istanze di servizi di flusso di lavoro che appartengono a un'applicazione che mette a disposizione il servizio Gestione servizi. WMS utilizza il servizio Gestione servizi per attivare un host del servizio che caricherà un'istanza dall'archivio di istanza.

  • WMS richiede l'aggiunta del binding net.pipe al sito e l'abilitazione del protocollo net.pipe nell'applicazione che contiene il servizio. WMS registra un errore nel registro eventi se il protocollo net.pipe non è abilitato nell'applicazione.

  • WMS richiede un'istanza di servizio di flusso di lavoro per esporre un endpoint di controllo istanza (ICE). WMS utilizza questo endpoint per eseguire comandi, come Sospendi e Riprendi, per istanze di servizio di flusso di lavoro.

  • WMS funziona con qualsiasi archivio di istanza che dispone di un provider di archivio di istanza e di un provider di controllo di istanza.

  • WMS richiede un archivio di istanza per creare HasActivatableWorkflowsEvent quando un'istanza diventa attivabile.

Nota

Per informazioni correlate alla protezione sul servizio Gestione flussi di lavoro, vedere Configurazione della protezione per gli archivi di salvataggio permanente.

Protezione

Il servizio Gestione flusso di lavoro (WMS) deve connettersi all'endpoint di controllo istanza (ICE) esposto da un host di servizio di flusso di lavoro per controllare le istanze di servizio di flusso di lavoro e all'endpoint di gestione del servizio esposto da un'applicazione Web per avviare un host di servizio di flusso di lavoro e quindi caricare le istanze di servizio di flusso di lavoro. Il gruppo AS_Administrators può accedere a entrambi gli endpoint. L'ID di sicurezza (SID) del servizio Gestione flusso di lavoro AppFabric è membro di questo gruppo. Quindi non è necessario aggiungere esplicitamente l'account con il quale WMS è in esecuzione al gruppo AS_Administrators.

L'elenco riportato di seguito illustra le linee guida per proteggere gli archivi di istanza e i file di configurazione che WMS utilizza:

  • WMS legge le informazioni di configurazione, incluse le stringhe di connessione dai file di configurazione nella memoria. WMS al momento non elabora stringhe di connessione crittografate, pertanto tali stringhe devono essere in formato di testo semplice. Un utente malintenzionato potrebbe riuscire ad accedere dalla memoria a informazioni riservate (quali nome utente e password in una stringa di connessione). Di conseguenza, è consigliabile evitare di inserire informazioni riservate in una stringa di connessione definita in un file di configurazione.

    Per le stringhe di connessione archiviate nei file Web.config è opportuno utilizzare l'autenticazione integrata di Windows. Se non è possibile utilizzare l'autenticazione integrata di Windows e vengono specificati nome utente e password in una stringa di connessione definita in un file Web.config, impostare gli elenchi di controllo di accesso appropriati nei file di configurazione. Accertarsi di garantire al gruppo AS_Administrators l'accesso ai file Web.config ai quali WMS deve poter accedere. È necessario tenere presente che l'impostazione di ACL non impedisce a eventuali utenti malintenzionati di accedere dalla memoria alle informazioni presenti nelle stringhe di connessione.

  • Abilitare la comunicazione crittografata di SQL aggiungendo “;Encrypt=yes” alla stringa di connessione SQL. Se per creare una stringa di connessione si utilizza la classe SqlConnectionStringBuilder, impostare la proprietà Encrypt su true. Per informazioni dettagliate sull'abilitazione di comunicazioni crittografate a livello di server, vedere https://go.microsoft.com/fwlink/?LinkID=187283. Se la comunicazione tra l'applicazione e SQL Server non è protetta, un utente malintenzionato potrebbe manipolare o eseguire comandi dannosi per il database SQL Server.

  • Una coda dei comandi non mantiene alcuna informazione sulle credenziali. Un utente membro del gruppo AS_Administrators, mappato al ruolo WorkflowAdministrators di SQL, è autorizzato a controllare tutte le istanze nell'archivio di istanza e non qualsiasi tipo specifico di istanze. Quindi le istanze non destinate al controllo da parte di diversi utenti dovrebbero essere archiviate in archivi di istanza differenti e il ruolo WorkflowAdministrators di SQL per questi archivi di istanza dovrebbe essere mappato a gruppi Windows diversi.

  • Ogni volta che un file Web.config viene modificato, WMS legge il file e controlla se le definizioni archivio sono state aggiunte o rimosse dal file. Per evitare che utenti non autorizzati attivino l'elaborazione del file WMS, si consiglia di applicare restrizioni all'accesso in scrittura ai file Web.config.

  • In base al livello di rilevamento, la funzione di monitoraggio di AppFabric raccoglie dati ad alta velocità. Si consiglia di non posizionare gli archivi di monitoraggio e di salvataggio permanente nello stesso database. In questo modo un sovraccarico dell'archivio di monitoraggio non avrà effetto sul sottosistema di salvataggio permanente.

La tabella riportata di seguito descrive i ruoli SQL che proteggono l'accesso alla coda dei comandi e al database di salvataggio permanente. Il contenuto della tabella è valido solo per l'archivio di istanza di flusso di lavoro SQL.

Ruoli SQL Descrizione Gruppo Windows

WorkflowAdministrators

Un membro di questo ruolo può accodare i comandi (aggiungere i comandi) alla coda dei comandi, che fa parte del database di salvataggio permanente. Un utente che desidera controllare le istanze (ad esempio, mediante l'utilizzo dei cmdlet di Windows PowerShell) deve essere membro di questo ruolo.

AS_Administrators

WorkflowManagementServiceUsers

Un membro di questo ruolo può annullare l'accodamento (recuperare i comandi) dalla coda dei comandi. L'account nel quale WMS è in esecuzione deve essere membro di questo ruolo affinché WMS possa recuperare i comandi archiviati nella coda dei comandi.

AS_Administrators

WorkflowActivationUsers

Un membro di questo ruolo può attivare le istanze di servizio di flusso di lavoro presenti nel database di salvataggio permanente e pronte per l'esecuzione.

AS_Administrators

InstanceStoreObservers

Un membro di questo ruolo può eseguire query sull'archivio di istanza per le istanze e recuperare i comandi dalla coda dei comandi nell'archivio.

AS_Administrators e AS_Observers

InstanceStoreUsers

Un membro di questo ruolo può caricare e salvare le istanze. Le azioni di caricamento e salvataggio vengono effettuate da un host di servizio che esegue un flusso di lavoro.

Se le istanze di un servizio Servizio1 sono permanenti nell'archivio di istanza Archivio1, il pool di applicazioni AppPool1 che esegue l'host di servizio deve essere eseguito tramite un'identità con diritti Utente nell'Archivio1.

IIS_USRS

Per una guida alla protezione basata su scenari per il salvataggio permanente, vedere Configurazione della protezione per gli archivi di salvataggio permanente.

Vedere anche

Concetti

Configurazione della protezione per gli archivi di salvataggio permanente
Installazione e configurazione del servizio Gestione flussi di lavoro

  2011-12-05