Hello,
The UML notation is quite rich in that it allows a relatively wide variety of shapes in some diagrams.
For instance, SDL-like signal reception and emission are allowed in activity diagrams (supported in PlantUML activity2/beta), but also in state diagrams (see figures 15.44 page 587 and 15.45 page 588 of UML 2.4.1 specification).
Directly supporting all UML presentation options in PlantUML is probably quite complex.
However, it may be possible to simply allow any diagram to use any (supported) shape (e.g., using skinparams or stereotypes or a combination thereof).
For instance, figure 15.44 mentionned above could be specified in the following way:
@startuml
state "Req(Id)" as ReqId <<sdlreceive>>
state "Minor(Id)" as MinorId <<sdlsend>>
state "MinorReq := Id;" as MinorReq <<rect>>
state "Major(Id)" as MajorId <<sdlsend>>
state "MajorReq := Id;" as MajorReq <<rect>>
state j <<junction>>
state c <<choice>>
Idle --> ReqId
ReqId --> c
c --> MinorId : [Id <= 10]
MinorId --> MinorReq
c --> MajorId : [Id > 10]
MajorId --> MajorReq
MinorReq --> j
MajorReq --> j
j --> Busy
@enduml
Note that some nodes (such as ReqId, MinorId, and MinorReq) are declared as "states", although they are not states. It may be interesting to introduce a generic "node" keyword for such cases (i.e., arbitrary nodes with user-selected shapes), but this is not absolutely necessary.
Also, note the use of <<junction>>, which is currently not supported by PlantUML. Therefore, <<backcircle>> may be more appropriate as generic shape identifier.
Thanks,
Fred