What's not clear is whether you're talking about Use Cases or UML.
Use cases:
With regards to use cases: with BPMN, you use those to develop the BPMN. In fact, to some degree, BPMN is meant to replace some of the use cases. Use cases are typically used to illustrate the business process to the developer -- but in this case, the business analyst/use case writer can put a lot of that "description" into the BPMN.
What's left over is maybe some detail about the BPMN process, which analysts can add in a document. But again, in that document, it needs to be clear that the BPMN is what's being described (and not that the BPMN is an addition to the text).
(This also depends on whether or not the analyst or the developer is writing the BPMN: if the developer is writing the BPMN, then obviously you need the use cases to help the developer define the BPMN -- but that's a little weird. In an effective organization, the business analysts know how to and can write BPMN and the developers can help double-check it. BPMN is, to some degree, meant to free developers from writing business logic code and get analysts to "write" it.)
The only use cases that should be left over should be cases that describe situations that are not fully covered by the BPMN. For example:
- Web page or UI interactions
- Technical use cases involving multiple systems
- web service descriptions, for example.
The whole purpose of BPMN is to remove the business logic from your application (code). Use cases which describe business logic are often used to build business logic into an application. In short, if you're using both, you need to make rules about which one is the defining definition. (Otherwise, we get possibly conflicting descriptions of the same process/logic...)
UML:
With regards to UML: the BPM engine becomes an actor. Similar to how use cases should be used, it's important to not describe the same thing in both your UML and your BPMN. Otherwise, you may have two slightly similar but conflicting descriptions of the same thing.
It looks like an official notation for this kind of referencing was introduced with UML v.2 and is called ref
Usually, all your sequence diagrams will contain a label in the upper left corner to identify your diagram. For example: sd:login-verification. Using this label, you can then reference this sequence diagram from within another one by drawing a simple box onto the concerned lifeline.
This box must mention ref in its upper left corner together with the name of the referenced diagram in the middle of the box. In addition, you have to pass those instance(s) that are used within the referenced diagram.
|
|
-----------------------------------------------
| ref / |
|------- |
| login-verification(user, token) : bool |
| |
-----------------------------------------------
|
|
I think that the following article might be quite helpful as it gives a concrete example. Have a look at the section called "Beyond the basics" where they talk about "Referencing another sequence diagram".
Article: UML basics : The sequence diagram
Best Answer
I think there is 2 factors that can make you choose between one or the other
Now ideally depending on the result of the two questions :