ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • SCORM RTE(Run-Time Environment)
    SCORM 2010. 5. 3. 08:24
    스콤 실행 환경

    목표

    실행환경이 왜 필요하고. 어떻게 구성되어 있고. 실제 호출하는 함수나 데이터 모델이 어떠한지.
    

    1.SCORM RTE의 개념

    • 콘텐츠의 각 SCO와 시스템인 LMS Server의 API Adapter가 웹브라우저를 통해 서로 연결되는 것. (※API : Application Program Interface)
    • 콘텐츠에서는 API 라는 것을 둬서 호출을 하고, 서버에서는 그 API를 받아서 처리하는 부분을 만들어 두는 것.
    • 대부분의 콘텐츠는 HTML로 되어있고, HTML에서 API를 호출하는 방식으로 자바스크립트가 사용된다.

    2.SCORM RTE 동작원리

    • Asset은 API를 가지고 있지않고 , SCO는 반드시 가지고 있어야 한다.
    • 서버와 통신하는 것은 SCO만 하고, 학습결과 등의 데이터를 기록하는 것 또한 SCO만 가능(Asset은 학습을 했는지 안했는지 전혀 알 수 없다.)

     

    API는 ECMAScript로 되어있다
    API를 호출할 때 전달되는 데이터는 Data Model.이라고 하는 것에 담겨있게 된다.
    

    3.API 함수들

    • 8개의 API함수가 존재
    • 모든 데이터별로 함수가 존재하는 것이 아니라 데이터는 Data Model에 따라 정해지고 함수는 공통적으로 사용하기 때문이다.
    Initialize (“”)
    초기화 함수로서.. SCO가 Launch 될 때 호출한다. (즉, 콘텐츠가 시작될 때 실행되는 것이다)
    
    Terminate (“”)
    SCO가 종료될 때, 즉 콘텐츠가 닫힐 때 실행된다.
    
    Commit (“”)
    보통 SCO가 종료될 때 서버에 데이터를 전달하게 된다. 즉, Terminate가 호출될 때 서버에 데이터가 저장되는 것이다.
    그러나 중간에 이 Commit을 실행하면 현재 상태를 서버에 저장하는 역할을 한다.
    
    GetValue (parameter1)
    서버에서 parameter1에 해당하는 값을 가져옵니다. 그렇다면.. parameter1의 형식이 바로 Data Model이 되겠죠. ^^
    
    SetValue (parameter1, parameter2)
    GetValue와 반대로 parameter1에 해당하는 값 parameter2를 서버에 저장합니다.
    
    GetLastError ()
    현재 발생한 오류 코드를 가져옵니다.
    
    GetErrorString (errorcode)
    GetLastError에서 가져온 오류코드 errorcode에 대한 에러 관련 문자열을 가져옵니다.
    
    GetDiagnostics (errorcode)
    GetLastError에서 가져온 오류코드 errorcode에 대한 에러 관련 상세한 내용을 가져옵니다.
    
    • 위 함수들을 포함하는 함수를 만들어놓고 사용하는 데 , 보통 Wrapper함수라고 한다.

    4.API Wrapper함수

    • 왜 Wrapper함수를 쓰는가.
    그대로 쓰기보다는 사용자의 다양한 요구를 받아들여서 적절히 수정해서 적용할 수 있는 융통성을 주기 위함이다.(함수이름도 변경가능)
    
    • Wrapper 함수가 API 함수들과 1:1 매핑이 되는 것
    doInitialize() -> Initialize()
    doTerminate() -> Terminate()
    doCommit() -> Commit()
    doGetValue() -> GetValue()
    doSetValue() -> SetValue()
    doGetLastError() -> GetLastError()
    doGetErrorString() -> GetErrorString()
    doGetDiagnostic() -> GetDiagnostic()
    
    • SCORM Wrapper함수에서 getAPI()함수는 반드시 가지고 있어야한다.

    ( ※ getAPI()함수는 SCORM RTE를 처리하기 위한 API Adapter를 가져오는 부분)

    function getAPI()
    {
      var theAPI = findAPI(window);
      if ((theAPI == null) && (window.opener != null) && (typeof(window.opener) != "undefined"))
      {
         theAPI = findAPI(window.opener);
      }
      if (theAPI == null)
      {
         alert("Unable to find an API adapter");
      }
      return theAPI
    }
    
    findAPI 함수를 호출해서 API Adapter를 찾게 된다.
    findAPI(win) { while ((win.API_1484_11 == null) && (win.parent != null) && (win.parent != win)) { findAPITries++; if (findAPITries > 500) { alert("Error finding API -- too deeply nested."); return null; } win = win.parent; } return win.API_1484_11; }
    findAPI는 루프를 돌면서 API_1484_11이란 이름을 찾게 되는 것
    SCORM 1.2에서는 win.API를 가져오고. 2004에서는 win.API_1484_11을 찾으면 된다.
    
    • 이렇게 해서 가져오는 API Adapter를 가지고서 각종 API 함수를 호출할 수 있게 되는 것.

    5.SCO와 API의 연결 (Wrapper함수의 사용)

    • 콘텐츠에서 사용 (서버와 통신하는 SCO)
    <script language=javascript src="util/Photoshop_APIWrapper.js"></script>   - SCO의 Wrapper함수 사용부분
    
    <body onLoad="loadPage()" onunload="return unloadPage()">    - HTML의 <body>
    
    • loadPage()에서는 doInitialize()를 호출
    • unloadPage()에서는 doTerminate()를 호출
    • 상황에 따라 doSetValue()나 doGetValue()를 호출

    6.SCORM Data Model

    • LMS시스템에 넘겨줄 데이터
    • CMI Data Model -> 콘텐츠와 시스템 연결 후 , 전송할 데이터의 형식을 결정하는 것.
    • Wrappr 함수를 호출하는 형식으로 써보면 다음과 같다.
    name = doGetValue("cmi.learner_name");
    doSetValue("cmi.learner_name", "judy");    이외 60여개의 데이터 모델이 있다.
    
    • 또한, 모든 데이터 모델이 GetValue와 SetValue가 허용되는 것은 아니다.
    • 읽기 전용인 경우, SetValue가 허용되지 않기도 한다.
    • 버전 정보를 나타내는 cmi._version이나 LMS에서 보내는 메시지를 나타내는 cmi.comments_from_ims._children도 해당.

    'SCORM' 카테고리의 다른 글

    매니위즈 메뉴얼..  (0) 2010.05.12
    콘텐츠통합모델(Contents Aggregation Model-CAM)  (0) 2010.05.03
    SCORM의 기초  (0) 2010.05.03
Designed by Tistory.