Should I select UML or BPMN swimlane for role-based process diagramming? What is the difference between the two, and which one is universal?
Based on experience, most of us would probably say that the UML pool is vertical and the BPMN pool is horizontal. That's a bit shallow, so let's take a step back.
The challenge of communication between the business and the development is widely known, not to say notorious. If you ask a business analyst to explain their job like you're 5, they'll probably say they translate from business to technical language and back. When a work process is being analyzed and documented, business and technical teams must agree to it, so conventional language is needed.
BPMN (Business Process Model and Notation) and UML (Unified Modelling Language) are the two major alternatives. UML is a versatile modeling toolkit that is not particularly process-oriented, but rather object-oriented. Nevertheless, it supports activity diagrams with swimlanes partitioning to separate activities performed by different actors, which could be organizations, departments, or business roles. BPMN however has been developed directly for process-modeling, and it is action-centered. However, within the limits of answering to "Who does what and when?" question, those two are mutually replaceable, as long as all sides of the negotiation process are familiar with the language notation and can read it.
It appears that the intuitive answer about the lane orientation was not that shallow, now that we see that both notations are similar when it comes to workflows 🏆. Then it shouldn't be surprising that they both have the same application limit. They are role-based. A swimlane is essentially a role. It can be thought of as a strength from a programming perspective, but when it comes to real-life workflows, things can get worse. Here are the situations that make swimlane diagrams messy:
🎭 An action can be performed by several roles, so the action block should be present in several lanes at once
👺 There is a role that performs one single action and goes away - but you still need a lane for it.
👯♀️ What if two roles share a lot of responsibilities, still having small differences? Would you create a separate role and maintain twin actions for both, or would you create an artificial additional micro-role just for those differences?
The moral is as transparent as the water in the swimming pool: lane modeling has limited application area because role-based action control is a logical abstraction that does not take place so often in real life. It's a powerful technique when used wisely. There are other modeling methods for other types of processes, just like a water polo with its rules is so different from classical swimming.
P.S. Do you know why UML swimlanes traditionally have vertical orientation, and BPMN - horizontal? We can only guess, but we bet that UML, dating back to 1995, comes from the era of narrow monitors when horizontal scrolling was not widely used. BPMN in turn is a bit younger technology first disclosed in 2004, when working with digital 2D objects like maps and Gantt charts was already commonly in place. What do you think?