2012-07-11 292 views
9

我試圖用UML活動圖對我的應用程序建模。我使用JavaScript和Node.js以及大量的異步回調。以下是我想出了:UML活動圖中的異步回調

Activity Diagram

你覺得呢?你明白髮生了什麼事?我正在使用「通用連接器」將回調與操作(「run MyClass.myMethod)」和一個fork-node關聯起來以顯示「並行」執行。我沒有在任何地方找到關於Activity Diagrams中的回調的書面文字。網頁或我的書

編輯 這將是該圖中的JavaScript代碼:

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

的可能重複http://stackoverflow.com/questions/415974/how- to-show-asynchronous-operations-on-uml-activity-diagram – Rayfleck 2012-09-28 14:47:11

回答

6

顯示回調正確的方法如下:⁺

你實例化一個對象,把它傳遞到目標端口,並在其上調用指定的操作(calculateTime)。控制流程會立即繼續,當異步操作結束時,結果會轉移到結果引腳。異步調用的參數可以通過在Action中添加更多的對象(in)放置引腳來指定。

async callback Activity Diagram

⁺(參見UML規格。06年11月8日11.3.10 CallOperationAction/11.3.8 CallAction)

3

顯示在活動圖回調將是信號最好的方法只是考慮到信號是完全異步的(發送者和接收者之間的完全分離),我不確定這是否是javascript中的情況,但它們對於你想要的有更接近的含義。

+0

信號是一個好主意,但我不能從發送者傳遞參數給接收者!? – Chris 2012-07-11 15:33:00

+2

當然可以。 – vainolo 2012-07-12 12:45:41