In our cloud infrastructure we receive customer requests and depending on the request and internal state, we return one of several possible kinds of responses. Sometimes the set of possible kinds of responses is 2, sometimes it's 5 or 10. The customers need to handle them all and the handling depends on the the response we provide. I'm developing flow diagrams and I'm trying to find a symbol that would represent one incoming request and multiple possible responses. Is there such a thing?

Perhaps there's a better way to look at the problem?


4 Answers 4


What you probably want is a decision node with multiple guards as per this example

There is NO single symbol. Multiple possible conditions are handled by the normal decision nodes (flow control, or "IF" block) is used, but one has different guards (or criteria) for each route.

Why no single symbol? It is a common misconception that UML is about "diagrams". UML is about a model of software, one (almost) strict enough to generate running system.. The UML model is carefully crafted to (a) have same syntax and semantics across the model and thus attached diagrams, and (b) a minimal language that is composed to cover broad range of semantics.

  • This answer is the best approach to the symbol I'm looking for, thank you!
    – Rom
    Nov 18, 2014 at 9:14
  • Nice resource! +1 Nov 19, 2014 at 3:38

I believe that an activity diagram is the ULM-diagram you're looking for...

In the activity diagram, you use a black bar to indicate the start or end of concurrent activities:

enter image description here

  • thank you for the idea! Unfortunately the meaning of this symbol is not what I'm looking for. This symbol means that it will start ALL child processes once the incoming criteria is met. I'm looking for a symbol that means that only one process will be started, depending on the result of the operation. Essentially, I'm looking for the decision diamond, but without predefined number of outputs.
    – Rom
    Nov 18, 2014 at 9:11

In UML or database diagrams there are a few ways to denote a "one to many" relationship.

The typical option is to use an asterisk * on the side w/multiple outputs. See "Association Qualifier" here for examples.

A "1" on both sides of an arrow connecting 2 entities/processes indicates a "one-to-one" relationship, whereas 1..* on a side indicates at least one match up to some arbitrary number. You could also use zero in a range like 0..* to indicate you might not have any matches at all. Whatever fits your needs.

A graphical alternative is an arrow with multiple 'forks' on the side with multiple outputs.

  • So in flowchart after a decision (diamond) each transition can be configured with a different guard statement.
    – Jason A.
    Nov 12, 2014 at 21:58

You might want to use a placeholder to jump to a separate page which breaks down the decisions which go into the response. Not sure how close this is to gospel UML, but hopefully it conveys what I am talking about.

Multi-Branch UML

Finally, you might add a comment to the primary document, telling the reader where to find the secondary document (page#, bottom of this page, etc.)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.