Registrati
Diagrammi di flusso
Espressione grafica
Mappe mentali
Espressione strutturata
Note
Espressione efficiente

Diagramma a blocchiSintassi

Diagramma a blocchi

Il diagramma a blocchi è composto da blocchi e connettori, per rappresentare visivamente sistemi, processi o architetture complesse. I blocchi rappresentano componenti o funzionalità di base, mentre i connettori mostrano le relazioni o il flusso tra questi componenti; il diagramma a blocchi è essenziale in vari campi come l'ingegneria, lo sviluppo software e la gestione dei processi.

Codice
                            
Copia
Incorpora
block-beta columns 1 db(("DB")) blockArrowId6<["   "]>(down) block:ID A B["A wide one in the middle"] C end space D ID --> D C --> D style B fill:#f96,stroke:#333,stroke-width:4px

Usi del diagramma a blocchi

Lo scopo principale del diagramma a blocchi è fornire una visione ad alto livello del sistema, permettendo alle persone di comprenderlo e analizzarlo facilmente senza addentrarsi nei dettagli complessi di ogni componente. Questo rende il diagramma a blocchi particolarmente utile per semplificare sistemi complessi e per spiegare la struttura e le interazioni generali dei componenti all'interno di un sistema.

Scenari d'uso

Il diagramma a blocchi ha applicazioni ampie in vari settori e discipline, tra cui principalmente:

  • Architettura software: nello sviluppo software, i diagrammi a blocchi possono essere usati per illustrare l'architettura di un'applicazione software. Questo include mostrare come interagiscono i vari moduli o servizi, il flusso dei dati e le interazioni tra i componenti di alto livello.
  • Topologia di rete: i diagrammi a blocchi sono ideali per rappresentare l'architettura di rete nell'IT e nelle telecomunicazioni. Possono mostrare come si collegano tra loro i diversi dispositivi e servizi di rete, compresi routing, switch, firewall e il flusso dei dati nella rete.
  • Diagramma di flusso dei processi: nel mondo aziendale e manifatturiero, i diagrammi a blocchi possono essere usati per creare diagrammi di flusso. Questi diagrammi rappresentano le varie fasi di un processo aziendale o produttivo e aiutano a visualizzare la sequenza dei passi, i punti decisionali e il flusso di controllo.
  • Sistemi elettrici: gli ingegneri usano i diagrammi a blocchi per rappresentare sistemi elettrici e circuiti. Possono illustrare la struttura di alto livello di un sistema elettrico, le interazioni tra i diversi componenti elettrici e il flusso della corrente.
  • Scopi didattici: i diagrammi a blocchi sono ampiamente usati anche nei materiali didattici per spiegare in modo semplificato concetti e sistemi complessi. I diagrammi a blocchi aiutano a scomporre e visualizzare teorie scientifiche, principi ingegneristici e sistemi tecnologici.

Di seguito, approfondiremo i modi per creare e manipolare i diagrammi a blocchi con Mermaid, coprendo tutto, dalla sintassi di base alle configurazioni avanzate e agli stili.

Diagramma a blocchi semplice

Struttura di base

Il diagramma a blocchi è composto da blocchi che rappresentano diverse entità o componenti; in Mermaid i blocchi possono essere creati facilmente con semplici etichette testuali. La forma più elementare di diagramma a blocchi può essere una serie di blocchi senza alcuna linea di collegamento.

Esempio di diagramma a blocchi semplice: per creare un semplice diagramma a blocchi contenente tre blocchi etichettati a, b e c, la sintassi è la seguente:

Codice
                            
Copia
Incorpora
block-beta a b c

Questo codice genererà tre blocchi disposti orizzontalmente, ciascuno automaticamente spaziato e allineato per una leggibilità ottimale.

Definire il numero di colonne da usare

Diagramma a più colonne

Sebbene un semplice diagramma a blocchi sia lineare e semplice, sistemi più complessi possono richiedere un layout strutturato. Mermaid permette di organizzare i blocchi in più colonne, aiutando così a creare diagrammi più complessi e dettagliati.

Esempio di diagramma a più colonne: quando è necessario distribuire i blocchi su più colonne, puoi specificare il numero di colonne e disporre i blocchi di conseguenza. Ecco come creare un diagramma a blocchi con tre colonne e quattro blocchi, in cui il quarto blocco compare nella seconda riga:

Codice
                            
Copia
Incorpora
block-beta columns 3 a b c d

Con questa sintassi Mermaid dispone i blocchi a, b, c e d su tre colonne e va a capo sulla riga successiva secondo necessità. Questa funzionalità è particolarmente utile per rappresentare sistemi gerarchici o a più livelli.

Configurazione avanzata dei blocchi

La sintassi avanzata di Mermaid conferisce al design dei diagrammi maggiore flessibilità e complessità, adattandosi a una più ampia gamma di casi d'uso e scenari.

Regolare la larghezza dei blocchi

Estendersi su più colonne

In diagrammi più complessi, potresti aver bisogno di blocchi che si estendono su più colonne, per enfatizzare determinati componenti o rappresentare entità più grandi. Mermaid permette di regolare la larghezza dei blocchi per coprire più colonne, migliorando così la leggibilità e la struttura del diagramma.

Esempio: per creare un blocco che si estende su due colonne, puoi specificare la larghezza desiderata per ciascun blocco:

Codice
                            
Copia
Incorpora
block-beta columns 3 a["A label"] b:2 c:2 d

In questo esempio, il blocco etichettato A label occupa una colonna, mentre i blocchi b e c si estendono su 2 colonne e d è assegnato alla propria colonna. Questa flessibilità nella dimensione dei blocchi è essenziale per rappresentare accuratamente sistemi con componenti di importanza o dimensione diverse.

Creare blocchi composti

Blocchi annidati

I blocchi composti permettono di rappresentare sistemi annidati o gerarchici, in cui un componente contiene più sottocomponenti.

Esempio: creare un blocco composto comporta la definizione di un blocco padre e poi di blocchi figli annidati al suo interno. Ecco la sintassi per definire un blocco composto con elementi annidati:

Codice
                            
Copia
Incorpora
block-beta block D end A["A: I am a wide one"]

In questa sintassi, D è un blocco figlio annidato in un blocco padre più grande. Questa funzionalità è particolarmente utile per descrivere strutture complesse, come un server con più servizi o un reparto all'interno di un'organizzazione più ampia.

Larghezza di colonna automatica

Regolare la larghezza

Mermaid permette di regolare dinamicamente la larghezza delle colonne in base al contenuto dei blocchi. La larghezza di una colonna è determinata dal blocco più largo della colonna, garantendo che il diagramma resti equilibrato e leggibile.

Esempio: in un diagramma con blocchi di dimensioni diverse, Mermaid regola automaticamente la larghezza delle colonne per adattarla al blocco più grande di ciascuna colonna.

Codice
                            
Copia
Incorpora
block-beta columns 3 a:3 block:group1:2 columns 2 h i j k end g block:group2:3 %% columns auto (default) l m n o p q r end

Qui viene dimostrato come Mermaid regola dinamicamente la larghezza delle colonne per adattarla al blocco più largo.

Unione orizzontale dei blocchi: quando è necessario impilare i blocchi orizzontalmente, puoi farlo usando la larghezza delle colonne. Ecco la sintassi per creare un diagramma a blocchi con 4 blocchi impilati insieme:

Codice
                            
Copia
Incorpora
block-beta block columns 1 a["A label"] b c d end

In questo esempio, la larghezza dei blocchi uniti viene regolata automaticamente alla larghezza del blocco figlio più grande.

Tipi e forme dei blocchi

Il diagramma a blocchi di Mermaid non è limitato alla forma rettangolare standard. Mermaid offre diverse forme di blocco, permettendo così una rappresentazione più dettagliata e personalizzata di diversi tipi di informazioni o entità.

Forme di blocchi standard

Rettangolo con angoli arrotondati

Crea un riquadro rettangolare con angoli arrotondati, utile per rappresentare componenti più morbidi o flessibili:

Codice
                            
Copia
Incorpora
block-beta id1("This is the text in the box")

Forma a stadio

Il blocco a forma di stadio può essere usato per rappresentare componenti orientati al processo:

Codice
                            
Copia
Incorpora
block-beta id1(["This is the text in the box"])

Forma di sottoprocesso

Serve a rappresentare un sottoprocesso o un processo contenuto, rappresentato con un blocco rettangolare con doppia linea verticale:

Codice
                            
Copia
Incorpora
block-beta id1[["This is the text in the box"]]

Forma cilindrica

La forma cilindrica è ideale per rappresentare database o componenti di archiviazione:

Codice
                            
Copia
Incorpora
block-beta id1[("Database")]

Cerchio

Il cerchio può essere usato per rappresentare componenti centralizzati o critici:

Codice
                            
Copia
Incorpora
block-beta id1(("This is the text in the circle"))

Forma asimmetrica, rombo ed esagono

Per le decisioni usa il rombo; per processi unici o specializzati puoi usare la forma asimmetrica e l'esagono:

Forma asimmetrica
Codice
                            
Copia
Incorpora
block-beta id1>"This is the text in the box"]
Rombo
Codice
                            
Copia
Incorpora
block-beta id1{"This is the text in the box"}
Esagono
Codice
                            
Copia
Incorpora
block-beta id1{{"This is the text in the box"}}

Parallelogramma e trapezio

Il parallelogramma e il trapezio sono ideali per input/output e processi di transizione

Codice
                            
Copia
Incorpora
block-beta id1[/"This is the text in the box"/] id2["This is the text in the box"] A[/"Christmas"] B["Go shopping"/]

Doppio cerchio

Per evidenziare componenti critici o ad alta priorità, usare un doppio cerchio è molto efficace:

Codice
                            
Copia
Incorpora
block-beta id1((("This is the text in the circle")))

Blocchi a freccia e blocchi vuoti

Blocco a freccia

Il blocco a freccia può mostrare visivamente la direzione o il flusso all'interno di un processo:

Codice
                            
Copia
Incorpora
block-beta blockArrowId<["Label"]>(right) blockArrowId2<["Label"]>(left) blockArrowId3<["Label"]>(up) blockArrowId4<["Label"]>(down) blockArrowId5<["Label"]>(x) blockArrowId6<["Label"]>(y) blockArrowId6<["Label"]>(x, down)

Blocco vuoto

I blocchi vuoti possono essere usati per creare spazi bianchi, utili per il layout e la leggibilità:

Codice
                            
Copia
Incorpora
block-beta columns 3 a space b c d e
Codice
                            
Copia
Incorpora
block-beta ida space:3 idb idc

Nota che puoi usare il simbolo numerico space:num per impostare il numero di colonne occupate da un blocco vuoto, dove num indica la larghezza in colonne. Puoi anche usare space, che per impostazione predefinita vale una colonna.

Le forme standard e speciali in Mermaid migliorano l'espressività del diagramma a blocchi, permettendone una rappresentazione più accurata e più contestualizzata.

Collegare i blocchi con linee

Una caratteristica fondamentale dei diagrammi a blocchi di Mermaid è la possibilità di collegare i vari blocchi usando diversi tipi di linee o link.

Tipi di collegamento e frecce di base

Per collegare i blocchi occorrono frecce o linee: questi connettori descrivono le relazioni o il flusso di informazioni tra i blocchi. Mermaid offre una serie di tipi di freccia per soddisfare diverse esigenze di diagramma.

Collegamento di base

Crea un semplice collegamento con una freccia, che mostra la direzione o il flusso da un blocco a un altro:

Codice
                            
Copia
Incorpora
block-beta A space B A-->B

Questo esempio illustra il collegamento diretto dal blocco A al blocco B.

Testo sul link

Oltre a collegare i blocchi, di solito è necessario anche descrivere o etichettare la relazione. Mermaid permette di aggiungere testo sui link, fornendo contesto al collegamento.

Per aggiungere testo su un link, la sintassi è includere quel testo nella definizione del collegamento:

Codice
                            
Copia
Incorpora
block-beta A space:2 B A-- "X" -->B
Bordi e stili:
Codice
                            
Copia
Incorpora
block-beta columns 1 db(("DB")) blockArrowId6<["   "]>(down) block:ID A B["A wide one in the middle"] C end space D ID --> D C --> D style B fill:pink,stroke:#333,stroke-width:4px

Stili e personalizzazione

Oltre alla struttura e al layout dei diagrammi a blocchi, Mermaid offre numerose opzioni di stile; queste funzionalità di personalizzazione permettono di creare diagrammi più caratterizzati visivamente e più informativi.

Stile di un singolo blocco

Mermaid consente di applicare stili dettagliati a singoli blocchi; puoi applicare varie proprietà CSS, come colore, bordo (stroke) e spessore del bordo.

Personalizzare lo stile di un singolo blocco

Per applicare uno stile personalizzato a un blocco, puoi usare la sintassi style, seguita dall'identificatore del blocco e dalle proprietà CSS desiderate:

Codice
                            
Copia
Incorpora
block-beta id1 space id2 id1("Start")-->id2("Stop") style id1 fill:pink,stroke:#333,stroke-width:4px style id2 fill:#bbf,stroke:#f66,stroke-width:2px,color:#fff,stroke-dasharray: 5 5

Stile della classe

Mermaid supporta l'applicazione di stili alle classi. Se vuoi applicare un insieme specifico di stili a più elementi, usare un'impostazione di stile è più semplice, perché devi solo collegare questi elementi a una classe.

Impostare lo stile per una singola classe

Codice
                            
Copia
Incorpora
block-beta A space B A-->B classDef blue fill:pink,stroke:#333,stroke-width:4px; class A blue style B fill:#bbf,stroke:#f66,stroke-width:2px,color:#fff,stroke-dasharray: 5 5

Qui è stata definita la classe chiamata blue e applicata al blocco A, mentre il blocco B riceve uno stile separato.

Casi d'uso

Quando i diagrammi modulari del diagramma a blocchi di Mermaid vengono applicati a scenari reali, la loro versatilità si manifesta pienamente.

Esempi dettagliati delle varie funzionalità

Attraverso elementi strutturali, collegamenti e stili, possiamo creare diagrammi a blocchi di Mermaid che svolgono ruoli specifici in contesti diversi.

Architettura del sistema

Di seguito è riportata una semplice architettura di un sistema software con componenti interconnessi:

Codice
                            
Copia
Incorpora
block-beta columns 3 Frontend blockArrowId6<[" "]>(right) Backend space:2 down<[" "]>(down) Disk left<[" "]>(left) Database[("Database")] classDef front fill:pink,stroke:#333; classDef back fill:#f96,stroke:#333; class Frontend front class Backend,Database back

Questo esempio mostra un'architettura di base comprendente frontend, backend e database, con blocchi dall'aspetto diverso per distinguere i diversi tipi di componente.

Processo aziendale

Di seguito è riportato un processo aziendale con punti decisionali e più fasi:

Codice
                            
Copia
Incorpora
block-beta columns 3 Start(("Start")) space:2 down<[" "]>(down) space:2 Decision{{"Make Decision"}} right<["Yes"]>(right) Process1["Process A"] downAgain<["No"]>(down) space r3<["Done"]>(down) Process2["Process B"] r2<["Done"]>(right) End(("End")) style Start fill:pink; style End fill:pink;

Questi casi reali evidenziano il valore pratico del diagramma a blocchi di Mermaid nel semplificare informazioni complesse e nel consentire una comunicazione efficace tra ambiti diversi.

Risoluzione dei problemi

Creare diagrammi a blocchi complessi con la sintassi di Mermaid a volte presenta delle sfide; qui elenchiamo gli errori di sintassi comuni e forniamo suggerimenti per gestire strutture di diagramma più complesse.

Errori di sintassi comuni

Evitare gli errori di sintassi comuni è fondamentale per usare con successo il diagramma a blocchi di Mermaid.

Errore di collegamento

Usare una sintassi di collegamento errata può causare risultati imprevisti o diagrammi danneggiati:

                            
Copia
Incorpora
block-beta A - B

Correzione: assicurati di usare correttamente le frecce di collegamento (--> o ---) per collegare i blocchi, per definire la direzione e il tipo di collegamento. Inoltre, uno dei principi fondamentali dei diagrammi a blocchi è che l'autore ha il pieno controllo della posizione dei blocchi; quindi nei casi precedenti è necessario aggiungere uno spazio tra i blocchi:

Codice
                            
Copia
Incorpora
block-beta A space B A --> B

Stile disallineato

Applicare uno stile nel contesto sbagliato o con una sintassi errata può impedire che lo stile venga applicato come previsto:

Codice
                            
Copia
Incorpora
block-beta A style A fillpink;

Correzione: assicurati di separare correttamente le proprietà di stile con virgole e di usare il formato corretto delle proprietà CSS per correggere la sintassi:

Codice
                            
Copia
Incorpora
block-beta A style A fill:pink,stroke:#333;