Concetti fondamentali in Workflow Manager 1.0

 

Data di pubblicazione: luglio 2016

Di seguito vengono presentati i concetti fondamentali relativi a Progettazione flussi di lavoro 1.0.

Concetti fondamentali

  • Servizio Gestione flussi di lavoro

  • API di Workflow Client

  • Attività

  • Flusso di lavoro

  • ruolo di lavoro

  • Scope

  • Notifiche

  • DynamicValue

Servizio Gestione flussi di lavoro

Progettazione flussi di lavoro 1.0 espone un endpoint di servizio basato su REST per la pubblicazione, la gestione e l'esecuzione di flussi di lavoro. Tutte le comunicazioni utilizzate per interagire con le definizioni dei flussi di lavoro e con le relative istanze vengono eseguite tramite HTTP(S).

Per ulteriori informazioni sulla gestione dei flussi di lavoro, vedere Gestione del server di Workflow Manager 1.0.

API di Workflow Client

L'API di Workflow Client, inclusa in Microsoft.Workflow.Client.dll, è costituita da un set di classi basate su .NET che può essere utilizzato per pubblicare, gestire ed eseguire i flussi di lavoro e fornisce un set avanzato di API in grado di astrarre il traffico HTTP interno nel servizio Gestione flussi di lavoro.

Attività

Un'attività è un'entità denominata contenente i blocchi predefiniti delle funzionalità del flusso di lavoro. Un'attività è in genere composta da altre attività, che possono essere personalizzate dallo sviluppatore oppure fornite nello spazio dei nomi Microsoft.Activities.

Nell'API di Workflow Client un'attività è rappresentata dalla classe ActivityDescription. Uno dei membri fondamentali di questa classe è costituito dalla proprietà Xaml, che rappresenta una definizione basata su XAML dell'attività.

Flusso di lavoro

Un flusso di lavoro è un'entità denominata che rappresenta un flusso di lavoro che può essere attivato o avviato. Nell'API client è rappresentato dalla classe WorkflowDescription. Di seguito sono riportate due proprietà fondamentali di questa classe:

  1. ActivityPath: specifica l'attività che verrà utilizzata come corpo di implementazione per il flusso di lavoro corrente.

  2. ActivationFilter: definisce le caratteristiche dei messaggi in grado di attivare un'istanza del flusso di lavoro corrente.

ruolo di lavoro

Un'istanza di flusso di lavoro è un'entità che rappresenta un'istanza di un determinato flusso di lavoro. Può essere creata in due modi diversi:

  1. In modo esplicito, chiamando l'API StartWorkflow per avviare una nuova istanza di un determinato flusso di lavoro.

  2. In modo implicito, utilizzando l'API PublishNotification per pubblicare un messaggio corrispondente ai valori di ActivationFilter per un determinato flusso di lavoro. Si noti che un singolo messaggio può corrispondere ai valori delle proprietà ActivationFilter di uno o più flussi di lavoro o di nessun flusso. In seguito alla pubblicazione di tale messaggio, verrà creata una nuova istanza per ogni flusso di lavoro corrispondente.

Una volta creata, un'istanza di flusso di lavoro viene rappresentata nell'API client dalla classe WorkflowInstanceInfo.

Scope

Un ambito è un contenitore denominato e a protezione diretta per attività, flussi di lavoro, istanze, ambiti di configurazione e ambiti figlio. Fornisce inoltre un limite per la multi-tenancy e la messaggistica (notifiche). È possibile creare e modificare gli ambiti mediante l'API di Workflow Client. Nell'API è rappresentato dalla classe T:Microsoft.Workflow.Client.ScopeInfo.

Quando Workflow è installato, viene creato preventivamente solo l'ambito radice, che non può essere eliminato. Se necessario, è possibile creare altri ambiti. Sono supportati più livelli di ambiti nidificati. I flussi di lavoro e le attività devono essere distribuiti in un ambito di livello inferiore rispetto all'ambito radice.

Ogni attività, flusso di lavoro e istanza appartiene a un solo ambito. Le attività e i flussi di lavoro appartengono all'ambito nel quale sono stati pubblicati. Un'istanza appartiene allo stesso ambito del relativo flusso di lavoro.

Il codice XAML di un'attività può fare riferimento e utilizzare altre attività appartenenti allo stesso ambito, all'ambito padre o a un ambito predecessore, escluso l'ambito radice.

Un flusso di lavoro può essere definito mediante un'attività dello stesso ambito, dell'ambito padre o di qualsiasi ambito predecessore, escluso l'ambito radice.

La sicurezza e altre impostazioni di configurazione di un ambito vengono ereditate da tutti i relativi ambiti figlio.

Un ambito rappresenta un limite di denominazione. Tutte le entità denominate (attività, flussi di lavoro e ambiti figlio) devono possedere un nome univoco solo all'interno dell'ambito a cui appartengono.

Poiché un ambito rappresenta anche un oggetto di destinazione dell'API PublishNotification, un singolo messaggio passato a PublishNotification è in grado di attivare unicamente i flussi di lavoro appartenenti all'ambito di destinazione.

Workflow non impone alcun modello semantico specifico per gli ambiti figlio. Ciascun utente di Workflow deve decidere quale sia la struttura degli ambiti più adatta a una determinata applicazione.

Ad esempio, un fornitore di software indipendente (ISV, Independent Software Vendor) che sviluppa OnlineCollaborationSolution può creare ambiti di primo livello per rappresentare i tenant dell'applicazione OnlineCollaborationSolution, ad esempio Contoso, Fabrikam e Litware. OnlineCollaborationSolution consente ai relativi tenant di creare entità che nel modello delle risorse possono essere rappresentate da ambiti nidificati, come illustrato nel diagramma riportato di seguito.

Windows Azure Workflow Scopes

Notifiche

È possibile creare e riavviare le istanze di flusso di lavoro mediante messaggi di notifica. I messaggi pubblicati in un ambito effettuano il fan-out e vengono recapitati in modo asincrono in tutte le istanze di flusso di lavoro corrispondenti al filtro definito dal flusso di lavoro.

Per ulteriori informazioni sulla messaggistica nei flussi di lavoro, vedere Messaggistica in Workflow Manager 1.0.

DynamicValue

DynamicValue è una struttura di dati dinamica che può essere utilizzata per passare dati complessi in un flusso di lavoro, per modificare i dati all'interno di un flusso di lavoro oppure per passare dati all'esterno di un flusso di lavoro in formato JSON.

Per ulteriori informazioni su DynamicValue, vedere Informazioni su DynamicValue.