Condividi tramite


Diagrammi di attività UML: linee guida

In Visual Studio Ultimate è possibile disegnare un diagramma di attività per descrivere un processo aziendale o un algoritmo software come un flusso di lavoro tramite una serie di azioni. Tali azioni possono essere eseguite da persone, componenti software o dispositivi. Per una dimostrazione video, vedere lo screencast sull'acquisizione di flussi di lavoro aziendali tramite diagrammi di attività.

Per creare un diagramma di attività UML, scegliere Nuovo diagramma dal menu Architettura.

È possibile utilizzare un diagramma di attività per i diversi scopi:

La creazione di un diagramma di attività può consentire di migliorare un processo. Se il diagramma di un processo esistente si rivela essere molto complesso, è possibile considerare come il processo potrebbe essere semplificato.

Per informazioni di riferimento sugli elementi presenti nei diagrammi di attività, vedere Diagrammi di attività UML: riferimento.

In questo argomento

Relazione con altri diagrammi

Procedura di base per la creazione di diagrammi di attività

Descrizione del flusso di controllo

Descrizione del flusso di dati

Definizione più dettagliata di un'azione

Flussi simultanei

Relazione con altri diagrammi

Se si disegna un diagramma di attività per descrivere un processo aziendale o una modalità usata dagli utenti per utilizzare il sistema, è possibile disegnare un diagramma caso di utilizzo per mostrare una visualizzazione diversa delle stesse informazioni. Nel diagramma caso di utilizzo, le azioni vengono disegnate come casi di utilizzo. Assegnare ai casi di utilizzo gli stessi nomi delle azioni corrispondenti. I vantaggi della visualizzazione caso di utilizzo consentono di:

  • Mostrare in un diagramma come le azioni o i casi di utilizzo più grandi sono composti da azioni o casi di utilizzo più piccoli utilizzando la relazione Include.

  • Connettere in modo esplicito ogni azione/caso di utilizzo agli utenti o ai sistemi esterni inclusi nell'esecuzione.

  • Disegnare i limiti relativi alle azioni o ai casi di utilizzo supportati dal sistema o da ciascun principale componente di esso.

È possibile disegnare un diagramma di attività anche per descrivere la progettazione dettagliata di un'operazione software.

In un diagramma di attività, è possibile mostrare il flusso di dati passato tra le azioni. Vedere la sezione su Descrizione del flusso di dati. Un diagramma di attività tuttavia non descrive la struttura dei dati. A tale scopo, è possibile disegnare un diagramma classi UML. Per informazioni, vedere Diagrammi classi UML: linee guida.

Procedura di base per la creazione di diagrammi di attività

I passaggi dettagliati per la creazione dei diagrammi di modellazione vengono descritti in Procedura: modificare un modello UML e i diagrammi.

Per disegnare un diagramma di attività

  1. Scegliere Nuovo diagramma dal menu Architettura.

  2. Nel riquadro Modelli fare clic su Diagramma attività UML.

  3. Assegnare un nome al diagramma.

  4. In Aggiungi a progetto di modello selezionare un progetto di modello esistente nella soluzione o scegliere Crea nuovo progetto di modello.

Per disegnare elementi in un diagramma di attività

  1. Trascinare gli elementi dalla casella degli strumenti nel diagramma.

    Iniziare posizionando le attività principali sul diagramma, connettendole e aggiungendo quindi elementi finali quali i nodi iniziale e finale.

    Nota

    Non è possibile trascinare elementi esistenti sul diagramma da Esplora modelli UML.

  2. Per connettere gli elementi, attenersi alla seguente procedura:

    1. Nella casella degli strumenti Diagramma attività, fare clic su Connettore.

    2. Sul diagramma, fare clic sull'elemento di origine.

    3. Selezionare l'elemento di destinazione.

      Nota

      Per utilizzare più volte uno strumento, fare doppio clic sullo strumento nella casella degli strumenti.

Per spostare un'attività in un altro pacchetto

  • In Esplora modelli UML, trascinare l'attività in un pacchetto.

    - oppure -

  • In Esplora modelli UML, fare clic con il pulsante destro del mouse sull'attività e scegliere Taglia. Quindi, fare clic con il pulsante destro del mouse sul pacchetto e scegliere Incolla.

    Nota

    L'attività verrà visualizzata in Esplora modelli UML solo quando si aggiunge il primo elemento al diagramma.

Descrizione del flusso di controllo

Un diagramma di attività descrive un processo aziendale o un algoritmo software come una serie di azioni. Le frecce Connettore mostrano come il controllo viene passato in sequenza da un'azione a quella successiva. Generalmente un'azione può essere avviata solo quando è stata completata l'azione precedente.

La figura seguente illustra un esempio di una sequenza di azioni visualizzata con azioni, connettori, rami e cicli. Ciascun elemento viene descritto in maggiore dettaglio nelle sezioni seguenti.

Diagramma di attività semplice

I diagrammi di attività utilizzano Azioni e Connettori per descrivere il sistema o l'applicazione come una serie di azioni con il controllo che passa in sequenza da un'azione a quella successiva.

  • Creare un'Azione (1) per ogni attività principale eseguita da un utente, dal sistema o da entrambi in collaborazione.

    Nota

    Tentare di descrivere il processo o l'algoritmo con solo alcune azioni. È possibile utilizzare Call Behavior Actions per definire ogni azione più dettagliatamente in un diagramma separato, come descritto in Descrizione delle sottoattività con Call Behavior Actions.

  • Verificare che il titolo di ogni azione indichi chiaramente il fine dell'azione.

  • Connettere le azioni in sequenza con Connettori (2).

  • Ogni azione termina prima dell'inizio dell'azione successiva nel flusso di controllo. Se si desidera descrivere azioni che si sovrappongono, utilizzare un Nodo fork come descritto nella sezione Flussi simultanei.

Anche se il diagramma descrive la sequenza delle azioni, non descrive però come vengono eseguite le azioni o come il controllo viene passato da un'azione a quella successiva. Se si utilizza il diagramma per rappresentare un processo aziendale, il controllo potrebbe essere passato, ad esempio, quando una persona invia un messaggio di posta elettronica a un'altra persona. Se si utilizza il diagramma per rappresentare la progettazione di un software, il controllo potrebbe essere passato dal flusso normale di esecuzione da un'istruzione a quella successiva.

Descrizione di decisioni e cicli

  • Utilizzare un Nodo decisione (3) per indicare un punto dove il risultato di una decisione indica il passaggio successivo. È possibile disegnare tutti i percorsi in uscita desiderati.

  • Se si utilizza il diagramma di attività per definire parte di un'applicazione, è necessario definire le protezioni (4) in modo che sia chiaro quando intraprendere ciascun percorso. Fare clic con il pulsante destro del mouse sul connettore, scegliere Proprietà e nella finestra Proprietà digitare un valore per il campo Guard.

  • Non è sempre necessario definire le protezioni. Ad esempio, se si utilizza il diagramma di attività per descrivere un processo aziendale o un protocollo di interazione, un ramo definisce l'intervallo delle opzioni disponibili all'utente o ai componenti interagenti.

  • Utilizzare un Nodo unione (5) per raggruppare due o più flussi alternativi con creazione di rami in corrispondenza di un Nodo decisionale.

    Nota

    È necessario utilizzare un Nodo unione per raggruppare flussi alternativi, anziché raggruppare i flussi con un'azione. Nell'esempio non sarebbe corretto connettersi direttamente dal nodo decisionale di nuovo alla scelta dell'elemento di menu. Questo accade perché un'azione non inizia finché i thread del controllo non sono arrivati in tutti i relativi connettori in ingresso. Pertanto, è necessario raggruppare solo i flussi simultanei in un'azione. Per ulteriori informazioni, vedere Flussi simultanei.

  • Utilizzare i rami per descrivere i cicli, come mostrato nell'esempio.

    Nota

    Tentare di annidare i cicli in modo ben strutturato, come si farebbe nel codice del programma. Se si descrive un processo aziendale esistente, questo potrebbe rivelare alcune possibilità per migliorarlo.

Inizio dell'attività

Ci sono due modalità per indicare i punti di ingresso in un'attività:

  • Nodo iniziale

    Creare un Nodo iniziale (6) per indicare la prima azione dell'attività.

    Questo metodo è molto utile quando si descrive una sottoattività o laddove non si deve dichiarare in modo esplicito ciò che avvia l'attività. Ad esempio, l'attività Order a Meal chiaramente inizia quando un cliente ha fame.

  • Nodo accetta evento

    Creare Nodi accetta evento, come descritto nella sezione Flussi simultanei, per indicare l'inizio di un thread che risponde a un particolare evento, quale l'input di un utente. Non fornire un flusso in ingresso al nodo. Omettendo un flusso in ingresso si indica che un thread sarà avviato ogni volta che si verifica l'evento.

    Questo metodo è molto utile quando si descrive una risposta a un evento esterno specifico.

Fine dell'attività

Utilizzare un Nodo finale attività (7) per indicare la fine di un'attività.

  • Quando un thread del controllo raggiunge un Nodo finale attività, tutte le azioni e le sottoattività simultanee dell'attività terminano.

  • È possibile utilizzare più di un nodo finale attività per ridurre la necessità di connettori aggiuntivi.

Interruzione dell'attività

Per descrivere come può essere interrotto il flusso comune di un'attività, ad esempio, se l'utente decide di annullare il processo, è possibile creare un nodo accetta evento per quell'evento. Per ulteriori informazioni, vedere la sezione Flussi simultanei. Creare un flusso di controllo da quel nodo al nodo finale attività (7).

Corsie

Qualche volta è utile disporre le azioni di un'attività in aree che corrispondono a oggetti o ruoli aziendali diversi che eseguono le azioni. Queste aree sono disposte convenzionalmente in colonne e vengono chiamate corsie.

  • Utilizzare le righe o i rettangoli dalla sezione Forme semplici della casella degli strumenti per disegnare corsie o altre aree.

  • Per identificare ogni corsia, creare un commento e impostare la proprietà Transparent su True.

Le forme semplici non fanno parte del modello UML e non vengono visualizzate in Esplora modelli UML.

Descrizione del flusso di dati

È possibile descrivere i dati in ingresso e in uscita di un'attività in due modalità:

  • Utilizzare un Nodo oggetto. Si tratta del metodo più semplice per descrivere le informazioni che si propagano tra le attività. Un nodo oggetto è come una variabile in un programma. Rappresenta un elemento che archivia uno o più valori che passano da un'azione a un'altra.

  • Utilizzare un Pin di output e un Pin di input. Questo metodo permette di descrivere separatamente gli output da un'azione e gli input a un'altra. I pin sono come parametri in un programma. I pin rappresentano le porte utilizzate dagli oggetti per entrare e uscire da un'azione.

    Nota

    Per una panoramica degli elementi utilizzati in questa sezione, vedere la sezione Flussi di dati dell'argomento Diagrammi di attività UML: riferimento.

Descrizione del flusso di dati con i nodi oggetto

La maggior parte dei flussi di controllo portano dati. Ad esempio, il flusso di output dall'azione "Customer provides details" porta un riferimento all'indirizzo di spedizione.

Se si desidera descrivere tali dati sul diagramma, è possibile sostituire un connettore con un nodo oggetto e due connettori, come mostrato nella figura seguente.

I nodi oggetto possono mostrare i dati passati tra le azioni

Si noti che i rettangoli con gli angoli arrotondati, ad esempio Dispatch Goods, rappresentano azioni, dove avviene l'elaborazione. I rettangoli con angoli retti, ad esempio Shipment Address, rappresentano un flusso di oggetti da un'azione a un'altra.

Assegnare al nodo oggetto un nome che rifletta il ruolo del nodo come condotto o buffer degli oggetti che si propagano tra le azioni.

È possibile impostare il Tipo del nodo oggetto nella finestra Proprietà. Il tipo può essere un tipo primitivo quale Integer o una classe, un'interfaccia o un'enumerazione definita in un diagramma classi. Ad esempio, è possibile creare un classe Shipment Address, con gli attributi di Street Address, City e così via, insieme con un'associazione a un'altra classe denominata Customer. Per ulteriori informazioni, vedere Diagrammi classi UML: linee guida.

Nota

Se si digita il nome di un tipo non ancora definito, un elemento verrà aggiunto sotto Tipi non specificati in Esplora modelli UML. Se successivamente si definisce un tipo con quel nome in un diagramma classi, è necessario reimpostare il tipo del nodo oggetto in modo che faccia riferimento al nuovo tipo.

Memorizzazione nel buffer dei dati nei nodi oggetto

Un nodo oggetto può essere utilizzato come buffer di più oggetti. Nell'illustrazione seguente, il flusso di controllo mostra che l'utente può eseguire più volte il ciclo [choose more] (1), mentre il nodo oggetto Chosen Menu Items (2) accumula le scelte dell'utente. Infine, quando l'utente ha completato la selezione, il controllo passa all'azione (3) che accetta l'elenco completo delle scelte dal buffer Chosen Menu Items.

Memorizzazione nel buffer dei dati dei nodi oggetto

È possibile specificare come gli elementi vengono archiviati in un buffer impostando le proprietà del nodo oggetto:

  • Impostare la proprietà Ordering:

    • Unordered per specificare un ordine casuale o non specificato. (valore predefinito).

    • Ordered per specificare un ordine in base a una chiave specifica.

    • Fifo per specificare l'ordine First In, First Out.

    • Lifo per specificare l'ordine Last In, First Out.

  • Impostare la proprietà Upper Bound per specificare il numero massimo di oggetti che possono essere contenuti nel buffer. Il valore predefinito è *. Indica che non sono previsti limiti.

Descrizione del flusso di dati con pin di input e output

Utilizzare un Pin di output e un Pin di input per descrivere separatamente gli output da un'azione e gli input per un'altra.

I pin di input e di output sono parametri di azione

Per creare un pin, fare clic su Pin di input o su Pin di output nella casella degli strumenti, quindi fare clic su un'azione. È possibile spostare quindi il pin lungo il perimetro dell'azione e modificarne il nome. È possibile creare pin di input e output per qualsiasi tipo di azione, includendo Call Behavior Actions, Call Operation Actions, Send Signal Actions e Accept Event Actions.

Un connettore tra due pin rappresenta il flusso di un oggetto, proprio come fossero i flussi da e per un nodo oggetto.

Fornire a ogni pin che un nome che indica il ruolo degli oggetti che esso produce o accetta, quale un nome del parametro.

È possibile impostare il tipo di oggetti trasmessi nella proprietà Tipo. Si deve trattare di un tipo creato in un diagramma classi UML.

Gli oggetti che si propagano tra pin connessi devono essere compatibili per certi versi. Ciò potrebbe accadere perché gli oggetti prodotti dal pin di output appartengono a un tipo derivato del tipo del pin di input.

In alternativa è possibile specificare che il flusso dell'oggetto includa una trasformazione che converte i dati tra il tipo del pin di output e il tipo del pin di input. La trasformazione più comune di questo tipo estrae la parte adatta da un tipo più grande. L'esempio nella figura implica l'esistenza di una trasformazione che estrae Shipping Address da Shipping Address.

Definizione più dettagliata di un'azione

Oltre a utilizzare il nome dell'azione per rendere chiaro il risultato che generalmente viene restituito, di seguito sono riportate alcune modalità che è possibile utilizzare per aggiungere più dettagli a un'azione:

  • Scrivere una descrizione più dettagliata nella proprietà Corpo. Ad esempio, è possibile scrivere un frammento del codice o del pseudocodice del programma oppure una descrizione completa dei risultati ottenuti.

  • Sostituire l'azione con un'azione Call Behavior Action e descrivere il comportamento dettagliato all'interno di un diagramma di attività separato. Vedere Descrizione di sottoattività con Call Behavior Actions.

  • Impostare le proprietà Local Postconditions e Local Preconditions dell'azione per descrivere il risultato più dettagliatamente. Per ulteriori informazioni, vedere Definizione di postcondizioni e precondizioni.

Descrizione di sottoattività con Call Behavior Actions

È possibile descrivere il comportamento dettagliato di un'azione utilizzando un diagramma di attività separato. Un comportamento chiamato è un diagramma di attività rappresentato sul diagramma di attività principale da Call Behavior Action. È possibile utilizzare Call Behavior Action anche per descrivere il comportamento condiviso tra le diverse attività in modo che non sia necessario disegnare più volte le sottoattività.

Nella figura seguente, il diagramma 1 mostra un'attività che ha Call Behavior Action e il diagramma 2 mostra il diagramma di sottoattività che indica il comportamento chiamato.

Un diagramma di attività distinto mostra le azioni dettagliate

Per descrivere una sottoattività con Call Behavior Action

  1. Per creare il diagramma per la sottoattività, fare clic con il pulsante destro del mouse sul progetto di modello in Esplora soluzioni, scegliere Aggiungi e fare clic su Nuovo elemento.

  2. Nella finestra di dialogo Aggiungi nuovo elemento, sotto Modelli fare clic su Diagramma attività e nella casella Nome digitare il nome che si intende assegnare a Call Behavior Action.

  3. Disegnare il flusso di lavoro dettagliato per la sottoattività. Questo è il comportamento chiamato.

    • Nel diagramma di sottoattività chiamato, Nodo iniziale indica dove inizia il controllo quando viene richiamato il comportamento chiamato. Nodo finale attività mostra dove deve tornare il controllo all'attività padre.
  4. Impostare la proprietà Behaviour di Call Behavior Action per fare riferimento al diagramma di comportamento chiamato.

    Nota

    Il diagramma di sottoattività deve contenere alcuni elementi altrimenti non sarà disponibile nell'elenco a discesa per la proprietà Behaviour. Inoltre, l'icona del tridente non sarà visualizzata nella forma Call Behavior Action fino a che non viene impostata la proprietà Behaviour.

  5. Impostare la proprietà Is Synchronous dell'azione per indicare se l' attività attende che l'attività chiamata venga completata.

    • Se si imposta Is Synchronous su false, si indica che il flusso può continuare all'azione successiva prima che termini l'attività chiamata. Non è necessario definire pin di output o flussi di dati in uscita dall'azione.

Descrizione del flusso di dati in ingresso e in uscita di sottoattività

È possibile descrivere i dati delle sottoattività che vengono propagati in ingresso e in uscita nello stesso modo in cui si utilizzano i parametri nel software.

  • Creare pin di input e output (1) in Called Behavior Action per ogni dato dell'azione che si propaga in ingresso o in uscita. Assegnare un nome in modo appropriato a ognuno di essi.

  • Nel diagramma di sottoattività, creare un Nodo parametro attività (2) per ogni pin di input e di output nell'azione chiamante. Assegnare a ogni nodo lo stesso nome del pin corrispondente.

    Nota

    Un nodo parametro attività assomiglia a un nodo oggetto. Per controllare il tipo di nodo che viene visualizzato, fare clic con il pulsante destro del mouse nel nodo, quindi scegliere Proprietà. Il tipo di nodo verrà visualizzato nell'intestazione della finestra Proprietà.

  • Nel diagramma di sottoattività, disegnare i connettori che mostrano il flusso di oggetti in ingresso o in uscita di ogni nodo parametro attività.

I pin nell'Azione chiama comportamento sono associati ai parametri di attività

Definizione di postcondizioni e precondizioni

È possibile utilizzare le proprietà Local Postconditions e Local Preconditions per specificare in dettaglio il risultato di un'azione. Queste proprietà descrivono l'effetto dell'azione senza descrivere come viene ottenuto l'effetto.

Per impostare queste proprietà, fare clic con il pulsante destro del mouse sull'azione, quindi scegliere Proprietà. Digitare i valori nelle proprietà della finestra Proprietà.

Local Postconditions

Una postcondizione è una condizione che deve essere soddisfatta prima che l'azione possa essere considerata completata. Nell'azione Confirm Order dell'esempio, la postcondizione potrebbe essere:

Il cliente ha fornito dettagli completi e validi che vengono richiesti per l'elaborazione della carta di credito.

Una postcondizione può esprimere una relazione tra gli stati prima e dopo il verificarsi dell'azione. Ad esempio:

Il tasso di interesse è raddoppiato rispetto al valore precedente.

È possibile scrivere postcondizioni in uno stile più formale, facendo riferimento a attributi specifici dei dati coinvolti nelle azioni. Ad esempio:

InvoiceTotal == Sum(OrderItem.MenuItem.Price)

Local Preconditions

Una precondizione è una condizione che deve essere vera quando l'azione è pronta a iniziare. Ad esempio, l'azione Confirm Order potrebbe avere la precondizione:

Il cliente ha scelto almeno un elemento dal menu.

Descrizione delle chiamate alle operazioni

Generalmente, un'azione descrive il lavoro eseguito da persone, software o computer in qualsiasi combinazione. È tuttavia possibile utilizzare Azione chiama operazione per descrivere una chiamata a una funzione o un metodo del software specifico.

  • Impostare il nome di Azione chiama operazione per indicare l'operazione che viene chiamata e su quale oggetto o componente.

  • Aggiungere pin di input e output a Azione chiama operazione per descrivere parametri e valori restituiti.

  • È possibile impostare la proprietà Is Synchronous dell'azione per indicare se l' attività attende che l'operazione venga completata.

    • Se si imposta Is Synchronous su false, si indica che il flusso può continuare all'azione successiva prima che l'operazione chiamata sia completata. Non è necessario definire pin di output o flussi di dati in uscita dall'azione.

Flussi simultanei

È possibile utilizzare Nodo fork e Nodo join per descrivere due o più thread di attività che possono essere eseguite contemporaneamente.

I nodi fork e join mostrano flussi simultanei

L'effetto di Nodo fork (1) consiste nel dividere il thread del controllo in due o più thread. Quando l'azione precedente termina, possono iniziare tutte le azioni sul lato di output del fork.

Un Nodo join (2) raggruppa thread simultanei. L'azione dopo il Nodo join potrebbe non iniziare fino a che tutte le azioni che conducono al Nodo join non siano completate.

Descrizione di segnali ed eventi

È possibile impostare un passaggio in un processo che invia un segnale come Azione invia segnale in un'attività. È possibile impostare un passaggio che attende uno specifico segnale o evento prima che il passaggio possa continuare come Azione accetta evento.

Ad esempio, è possibile mostrare un passaggio che invia un ordine e quindi un altro passaggio che riceve l'ordine prima che venga elaborato.

Invio di un segnale

Utilizzare Azione invia segnale (3) per indicare che un segnale o un messaggio di qualche tipo viene inviato ad altre attività o processi. Utilizzare il nome dell'azione per indicare che tipo di messaggio viene inviato.

  • Il controllo immediatamente passa all'azione successiva nel flusso di controllo, se presente.

  • Non è possibile utilizzare Azione invia segnale per descrivere come il processo risponde a qualsiasi informazione restituita. A tale scopo, utilizzare separatamente Azione accetta evento.

  • È possibile mostrare il flusso di dati in ingresso a Azione invia segnale per indicare i dati che possono essere inviati con il messaggio in uscita. Per ulteriori informazioni, vedere Descrizione del flusso di dati.

Attesa di un segnalare o un evento

Utilizzare Azione accetta evento (4) per indicare che l'attività attende per un evento esterno o messaggio in ingresso. Utilizzare il nome dell'azione per indicare il tipo di eventi che si attende.

  • Per mostrare che l'attività attende un messaggio o un evento esterno in uno specifico punto nel flusso, disegnare Azione accetta evento con un flusso in ingresso al posto appropriato nell'attività.

  • Per mostrare che l'attività può rispondere in qualsiasi momento a un messaggio o un evento esterno, disegnare Azione accetta evento senza flusso in ingresso. Quando si verifica l'evento esterno denominato, un nuovo thread inizierà nell'attività a partire da Azione accetta evento.

  • Non è possibile utilizzare Azione accetta evento per descrivere un valore restituito al mittente del segnale. A tale scopo, utilizzare separatamente Azione invia segnale.

  • È possibile mostrare i flussi di dati in uscita dall'azione per mostrare come l'attività elabora i dati ricevuti nel segnale. Se si desidera mostrare più di un flusso di output, è necessario impostare la proprietà IsUnmarshall di Azione accetta evento che indica che l'azione analizza il segnale in ingresso nei componenti separati. Per ulteriori informazioni, vedere Descrizione del flusso di dati.

Descrizione di più flussi di dati

È possibile disegnare più di un flusso di controllo o flusso oggetto proveniente da un'azione per indicare che più di un thread emerge quando termina l'azione. L'effetto assomiglia a quello di un fork, ma si può utilizzare una combinazione di flussi di controllo e oggetto.

Nell'esempio seguente sono mostrati più flussi in ingresso e in uscita delle azioni.

Flussi oggetto paralleli

Quando l'azione "Customer provides details" viene completata, vengono prodotti due oggetti: "Shipment address" e "Credit card details". I due oggetti vengono elaborati da diverse azioni.

Poiché un'azione richiede che tutti gli input siano disponibili prima di iniziare, l'ultima azione non viene avviata fino a che tutte le azioni che conducono a essa non siano completate.

Flussi

È possibile utilizzare un diagramma di attività per descrivere una pipeline o una serie di azioni che vengono eseguite contemporaneamente e i dati continuamente passati da un'azione a un'altra.

L'intenzione dell'esempio seguente è quella di dimostrare che ogni azione può produrre oggetti e può continuare a lavorare. Poiché non ci sono flussi di controllo, ogni azione può essere avviata non appena riceve i primi oggetti.

Si noti che i connettori in questo esempio sono flussi oggetto perché tutti dispongono almeno di una estremità in un Nodo parametro attività, un Nodo oggetto, un Pin di input o un Pin di output.

Flusso di dati

1. Nell'esempio sono presenti tre nodi parametro attività che rappresentano gli input e gli output.

2. Nodi oggetto, Pin di input e Pin di output possono rappresentare i buffer. È possibile impostare la proprietà Upper Bound di un nodo oggetto per dichiarare quanti oggetti possono essere contemporaneamente nel buffer.

3. È possibile utilizzare nodi decisionali per mostrare che un flusso si divide, inviando oggetti diversi in rami diversi. È possibile utilizzare i commenti o i titoli dei nodi per spiegare quale è il criterio di divisione.

4. È possibile utilizzare nodi fork per mostrare che sono state create due o più copie degli oggetti, inviandoli per l'elaborazione simultanea.

5. È possibile utilizzare nodi join per mostrare che due flussi dell'elaborazione vengono uniti di nuovo in uno.

Selezione e trasformazione

È possibile specificare che gli oggetti in un flusso oggetto vengono trasformati, selezionati o entrambe le azioni. Un flusso oggetto è un flusso in ingresso o in uscita da un pin o un nodo oggetto.

  • Una trasformazione descrive come gli oggetti che entrano in un flusso vengono convertiti in un altro tipo.

  • Una selezione descrive come solo alcuni degli oggetti che entrano in un flusso vengono trasmessi all'azione ricevente.

Nell'esempio viene mostrata una trasformazione. La prima azione nel diagramma 1 produce un codice postale per un pin di output. È connesso a un pin di input sulla seconda azione. La seconda azione tuttavia attende un indirizzo completo. La conversione da un tipo in un altro viene specificata in una seconda attività, Address Lookup. A tale attività fa riferimento la proprietà Transformation del flusso oggetto. L'attività Address Lookup contiene un nodo parametro attività per il codice postale in ingresso e un altro nodo parametro attività per l'indirizzo completo in uscita.

Trasformazione dell'oggetto definita in un altro diagramma

È possibile specificare una trasformazione o una selezione in due modi:

  • Allegare un commento al pin di input o di output.

    • Per distinguere questa descrizione da un commento generale, è possibile iniziare il commento con <<trasformazione>> o <<selezione>>.
  • Specificare la trasformazione o la selezione in dettaglio in un diagramma di attività separato.

    • Se si utilizza questo metodo, allegare anche un commento per rendere chiaro ai lettori che la trasformazione è stata definita.

Per specificare la trasformazione o la selezione in un diagramma di attività separato

  1. Creare un nuovo diagramma attività nel quale descrivere il flusso di selezione o di trasformazione.

    • Fare clic con il pulsante destro del mouse sul progetto in Esplora soluzioni, scegliere Aggiungi e fare clic su Nuovo elemento e selezionare Activity Diagram. Assegnare al diagramma un nome appropriato per il flusso di selezione o di trasformazione. Scegliere Aggiungi.
  2. Nel nuovo diagramma:

    1. Creare due nodi parametro attività, uno per il flusso di input e uno per quello di output.

    2. Creare azioni interconnesse con i flussi oggetto. Mostra come funziona la trasformazione o la selezione.

  3. In qualsiasi diagramma dove si desidera utilizzare la trasformazione o la selezione:

    1. Creare un flusso oggetto, ovvero, un connettore da o per un pin di input o di output, un nodo oggetto o un nodo parametro attività.

    2. Fare clic con il pulsante destro del mouse sul flusso oggetto, quindi scegliere Proprietà.

    3. Nella proprietà Transformation o Selection, selezionare il diagramma dove è stato specificato il flusso di trasformazione o selezione.

È possibile definire anche una selezione per un nodo oggetto e su singoli pin di input e di output. Definire un'attività di selezione come nella procedura precedente, quindi impostare la proprietà Selection del nodo oggetto o il pin di input o di output.

Vedere anche

Riferimenti

Diagrammi di sequenza UML: riferimenti

Concetti

Procedura: modificare un modello UML e i diagrammi

Diagrammi dei componenti UML: riferimento

Diagrammi casi di utilizzo UML: riferimento

Diagrammi classi UML: riferimento

Diagrammi dei componenti UML: riferimento

Altre risorse

Video sull'acquisizione di flussi di lavoro aziendali tramite diagrammi di attività