During the flow of an activity, it might happen that the activity needs to wait for or respond to an external event. This external event happens outside of the activity. Other times your activity might be the event that another activity is waiting for. In these cases, you can use signals. In part, signals are used for asynchronous communication. Signal nodes come in three varieties:
Signals are still connected using edges.
Take note that signals are not necessarily only waiting for or sending to other computer-based actors. Signals can also wait for actions by human actors that might not happen immediately. For example, after registration, a system might send the user a confirmation email for them to respond on. This sending of the email and then waiting for a response are also signals.
The administrator can select certain modules to backup. Once the backup is complete, the system should send an email notification.
Here you can see that the “Initiate backup” action is a signal. The system will not actively block (you know? when a system freezes waiting for a response) while the system performs the backup. Once the backup is complete, the system will continue with the activity; in this case send an e-mail notification. See how the e-mail notification is not a send signal node? The system will just send the notification email and be done with the activity.