UML: procesador de colas en un diagrama de secuencia

7

¿Cuál es la forma adecuada de representar un procesador de colas en un diagrama de secuencia UML?

Quiero representar en el mismo diagrama dos sistemas que están acoplados libremente a través de una cola. El primer sistema realiza algunas acciones e inserta una acción en una cola, el otro sistema siempre está escuchando y cuando el evento aparece en la cola, saca el evento y lo procesa, generando nuevas acciones. Ambos están en el mismo diagrama porque representa un caso de uso de integración que muestra cómo ambos trabajan juntos.

¿Debo crear una línea de vida que represente la cola?

Debería representar el proceso de "escucha" como un cuadro de bucle que contiene: un mensaje propio con la etiqueta "escuchar", un mensaje propio para procesar el mensaje y mensajes que representan el envío del resultado.

    
pregunta NullOrEmpty 08.08.2014 - 17:54

3 respuestas

7

Como la cola es un componente importante en la secuencia que está presentando, definitivamente debería estar presente con una línea de vida.

A medida que el consumidor escucha explícitamente los eventos de la cola, iniciaría el diagrama con la llamada listen del consumidor a la cola.
Después de eso, el productor puede insertar su evento en la cola (posiblemente con una indicación de que puede transcurrir una cantidad de tiempo considerable entre la llamada listen y la inserción del evento). En este punto, usaría las flechas dos devolver . Uno vuelve al productor para indicar la finalización de la llamada insert y el otro al consumidor para indicar la finalización de la llamada listen .
Esto es bajo el supuesto de que el productor y el consumidor se ejecutan de forma asíncrona.

Se vería así:

+---+       +---+       +---+
| P |       | Q |       | C |
+---+       +---+       +---+
  |           |   listen  |
  |           | <|------- |
  |           |           |
  |  insert   |           |
  | -------|> ++          |
  | < - - - - ++  event   |
  |           ++ - - - - >++
  |           |           ++
  |           |           ++
  |           |   listen  ++
  |           | <|------- ++
  |           |           |

Para indicar que el consumidor siempre está escuchando, he terminado el diagrama nuevamente con una llamada listen que no ha regresado.

    
respondido por el Bart van Ingen Schenau 08.08.2014 - 18:27
7

Implementar la respuesta de Bart en el maravilloso PlantUML podría verse así, (ab) usando un entity para distinguir la cola de la hilos participantes:

El código fuente correspondiente:

participant Producer
entity Queue

Consumer->Queue : dequeue
activate Consumer
...
Producer->Queue : enqueue
activate Producer
Queue-->Consumer
deactivate Consumer
Queue-->Producer
deactivate Producer
    
respondido por el Eugene Beresovsky 19.12.2014 - 06:58
2

Si te refieres a cómo dibujar un diagrama de secuencia para algo similar a este escenario ...

..entoncesyotambiénmodelaríael"espacio de la tupla" central o la estructura de coordinación multiagente central como un inconsciente tonto, pero un actor vivo que metabolizaría algunas moléculas de olor cada vez que "come" algo a través de la membrana. Los agentes del vecindario podrían "olerlo" y metabolizarlo aún más.

llevando tus zapatos

.. (1) sí, crearía una línea de vida que represente la cola

.. (2) y también dibujaría la señal de "cola cambiada" transmitida por la cola al recibir un nuevo token igual que @ bart-van-ingen-schenau

.. (3) y sí, representaría el proceso de "escucha" como un cuadro de bucle en su propia línea de vida, como usted sugiere

..y yo también consideraría dibujar el escenario (caso de uso) desde diferentes perspectivas con un enfoque diferente usando diferentes diagramas, principalmente pensaría en dibujar un diagrama general utilizando el lenguaje "BPMN 2.0 - Modelo de proceso de negocios y notación" ( la hoja de trucos está disponible aquí: enlace )

    
respondido por el xmojmr 08.08.2014 - 21:30

Lea otras preguntas en las etiquetas