First off: please keep in mind that you’re responding to a thread which is several years old. This means that some of its participants may not be active anymore or people no longer pay attention to the thread due to its age.
Well, the current specification is 2.5.1 (last update was December 2017) and nothing has changed here. VP is still fully compliant, you can check this webpage for the latest shared specification.
Pay special attention to 18.104.22.168 ‘Graphic paths’, this contains table 17.2 which shows an overview of messages. The asynchronous message shows with an open arrow head, a call is shown with the filled arrowhead and finally we have a return message with a dotted line. This also refers us to 17.4.4 which tells us:
- An asynchronous Message (messageSort equals asynchCall or asynchSignal) has an open arrow head.
- A synchronous Message (messageSort equals synchCall) has a filled arrow head.
- A reply Message (messageSort equals reply) has a dashed line with either an open or filled arrow head.
- An object creation Message (messageSort equals createMessage) has a dashed line with an open arrow head.
- An object deletion Message (messageSort equals deleteMessage) must end in a
- A lost Message is denoted with a small black circle at the arrow end of the Message.
- A found Message is denoted with a small black circle at the starting end of the Message.
Now, I definitely agree that this can get a bit confusing at first because if you draw a regular message and check its properties then ‘asynchronous’ is not checked; thus hinting at a synchronous message thus a filled arrowhead should be used.
You can achieve this by opening the message specification and then selecting the appropriate type, see here:
This will also ensure that the arrow head follows the right syntax, as you can see.