Esta pregunta es muy similar a esta , pero la respuesta no coincide con mis necesidades. Se centra en una herramienta UML específica (Papyrus), mientras que mi pregunta es más general sobre UML.
Me gustaría representar una acción anidada en un diagrama de actividad , pero no sé cuál es la forma común de hacerlo. La idea es que hay una acción del mismo alcance que las otras acciones, pero más compleja en su ejecución. Me gustaría mostrar más detalles sobre su ejecución sin dejar de mostrar esta acción al mismo nivel que las demás.
En el siguiente ejemplo, que es un diagrama de actividad que muestra algún tipo de actividad "de regreso a casa ", las acciones anidadas están en la Pet the cat
acción. Tenga en cuenta que hay otro error potencial en este diagrama, vea la errata al final de la pregunta.
He usado el nodo estructurado, pero no estoy seguro de que sea la forma correcta, de ahí la pregunta. En un diagrama de estado, el equivalente sería un estado compuesto, pero simplemente no puedo encontrar nada sobre una acción compuesta. Con respecto al nodo estructurado, después de leer algunos documentos al respecto, todavía no entiendo cómo se debe usar, por lo que podría estar completamente equivocado con este diagrama.
También sé que existe la posibilidad de referirme a otra sub-actividad con el símbolo del tridente, como en la imagen a continuación, pero no coincide con mis necesidades ya que me gustaría toda la información en el mismo diagrama (para poder imprimir sin pérdida de información):
Entonces, ¿cuál es la forma estándar de representar una acción anidada? Por estándar, me refiero a UML válido, comúnmente visto y, si es posible, factible en la mayoría de las herramientas de diseño UML.
Erratas no relacionadas: Otra cosa está mal en mis diagramas, las flechas que vienen a la misma acción ( Scratch behind the ears
) deberían ir a un nodo de fusión antes de ingresar a la acción. Vea los comentarios a continuación, incluida esta cita de JOT .
Respuestas:
Ambos son "estándar". La primera imagen según las especificaciones UML es
La segunda foto es
La principal diferencia entre ambos casos es la reutilización. Mientras que en primer lugar solo tienes cierta complejidad en un solo lugar (tu
Pet the cat
), el segundo es cuando (re) usas una determinada acción en múltiples lugares. Sin embargo, tiendo a usar la variante de invocación incluso si es solo para un solo uso. Aquí agrego un diagrama compuesto (que en EA se abre al hacer doble clic) para mostrar detalles de la acción correspondiente. El flujo principal solo muestra la descripción general y si se necesitan detalles, están a solo un doble clic de distancia.Ahora, crear un diagrama compuesto en EA es (nuevamente) diferente. Debe crear un AD a nivel de paquete y luego arrastrarlo al elemento de invocación. Ahora, cuando haces doble clic en eso, se abrirá el diagrama incrustado.
fuente