Hi Krans,
In BPMN you could use a boundery event on a call activity. The event interrupts the process inside the activity. It would look like this:
However if the process is heavily event driven you could consider a state machine based approach. I made a simple example in SDL (Specification and Description Language).
The system starts and goes to the AlarmOff state. An SDL state has an implicit message queue and hangs there until there is an input in the queue. The SetAlarm message comes in and triggers some action. In that case the only action is to set a timer for the desired delay. It then ends up in the AlarmOn state. When the timer goes off it appears as a message with the name of the timer. So when the timer goes off in the AlarmOn state, the state machine sends out a BeepOn message and goes to the AlarmRinging state. The '*' state means any state. So whatever the state if ResetAlarm is received it sends out BeepOff and goes to the AlarmOff state. That means you can add any message input in the different states of the state machine.
An execution trace produces the following:
With that notation everything is an event, it is now up to you to find out which one is the best suited for what you want to describe.
Regards,
Emmanuel