2012-07-11 20 views
9

Estoy intentando modelar mi aplicación con diagramas de actividad UML. Estoy usando JavaScript y Node.js y muchas devoluciones de llamada asincrónicas. Esto es lo que ocurrió:Devolución de llamada asincrónica en diagramas de actividad UML

Activity Diagram

¿Qué opinas? ¿Entiendes qué está pasando? Estoy usando un "conector genérico" para asociar la devolución de llamada con la acción ("ejecutar MyClass.myMethod) y un fork-node para mostrar la ejecución" paralela ". No encontré una palabra escrita sobre devoluciones de llamada en Diagramas de Actividad en ningún lugar . la web o mis libros

EDITAR Este sería el código JavaScript para el diagrama:.

var MyClass = function() { 
    //constructor 
}; 
MyClass.prototype = { 
    myMethod : function(cb) { 
     //this is an async method 
     var result = 5 + 5; 
     setTimeout(function() { 
      cb(null, result); 
     },100); //execute Callback after 100ms 
    } 
}; 

//instanciate a MyClass Object 
var myClassInstance = new MyClass(); 

//create a callback function that prints the result 
var callbackFunction = function (err,result) { 
    console.log(result); 
}; 

myClassInstance.myMethod(callbackFunction); 
console.log('I am first'); 
+0

posible duplicado de http://stackoverflow.com/questions/415974/how- to-show-asynchronous-operations-on-uml-activity-diagram – Rayfleck

Respuesta

6

Una forma correcta de mostrar las devoluciones de llamada es el siguiente: ⁺

Usted instanciar un objeto, pasarlo al objetivo de puertos y llamar a la operación especificada (calculateTime) sobre el mismo. El flujo de control continúa inmediatamente y cuando finaliza la operación asíncrona, el resultado se transfiere al pin de resultado. Los argumentos para la llamada asincrónica se pueden especificar agregando más pines put de objeto (en) a la Acción.

async callback Activity Diagram

⁺ (ver UML Spec. 11.08.06 11.3.10 CallOperationAction/11.3.8 CallAction)

3

la mejor manera de mostrar las devoluciones de llamada en los diagramas de actividad sería señales sólo tiene en cuenta que las señales son completamente asincrónicos (separación completa entre el emisor y el receptor) y no estoy seguro de que este sea el caso en javascript. Pero tienen un significado más cercano a lo que quieres.

+0

Las señales son una buena idea, pero no puedo pasar argumentos del remitente al receptor? – Chris

+2

Por supuesto que puedes. – vainolo

Cuestiones relacionadas