2012-07-11 2 views
9

UML 활동 다이어그램을 사용하여 응용 프로그램을 모델링하려고합니다. JavaScript 및 Node.js와 많은 비동기 콜백을 사용하고 있습니다.UML 활동 다이어그램의 비동기 콜백

Activity Diagram

당신은 어떻게 생각 : 여기에 내가 무엇을 최대 온입니까? 너 무슨 일이 벌어지고 있는지 이해하니? "일반 커넥터"를 사용하여 콜백을 작업 ("MyClass.myMethod 실행")과 "병렬"실행을 표시하는 포크 ​​노드와 연관시킵니다. 어디서나 활동 다이어그램의 콜백에 대한 서면 단어를 찾지 못했습니다. . 웹 또는 내 책

편집 이 다이어그램에 대한 자바 스크립트 코드 다음과 같습니다. 신호 것 액티비티 다이어그램에서 콜백을 보여

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

답변

6

콜백을 표시하기위한 올바른 방법은 다음과 같다 : ⁺

당신은 객체를 실체화 대상 포트에 전달하고 그 위에 지정된 작업 (calculateTime)로 전화하십시오. 제어 흐름은 즉시 계속되고 비동기 연산이 끝나면 결과는 결과 핀으로 전송됩니다. 비동기 호출에 대한 인수는 더 많은 객체 (in) put 핀을 Action에 추가하여 지정할 수 있습니다.

async callback Activity Diagram

⁺ (UML 사양 참조. 11-08-06 11.3.10 CallOperationAction/호출 액션 11.3.8)의

3

가장 좋은 방법은 그냥 그 신호 고려 완전히 비동기 (발신자와 수신자 사이의 완전한 분리)이며 이것이 자바 스크립트의 경우 확실하지 않습니다. 그러나 원하는 의미와 더 밀접한 관련이 있습니다.

+0

신호는 좋은 생각이지만 발신자로부터 수신자에게 인수를 전달할 수는 없습니다. – Chris

+2

물론 가능합니다. – vainolo