Posted
Filed under Scorm

[출처]www.word.pe.kr

4 SCORM RTE(Run-Time Environment) 첫번째~~


오랜만에.. SCORM 강좌를 이어서 진행하도록 하겠습니다. ^^

오늘은 SCORM RTE 부분을 살펴볼 것인데요.. RTE는 Run-Time Environment의 약자로서..

굳이 번역하자면 실행환경이라고 할 수 있습니다.


그렇다면 이런 실행환경이 왜 필요하고, 어떻게 구성되어 있으며~~

실제 호출하는 함수나 데이터 모델이 어떠한지를 살펴보도록 할 것입니다.


이것이 바로 SCORM RTE에서 다룰 내용의 전부라고 생각하시면 됩니다. *^^*

자~ 그럼 시작해 보도록 하겠습니다.~~


SCORM RTE의 개념


먼저 RTE가 왜 필요한지 생각해 보도록 하죠~~

SCORM이 등장하게 된 중요한 이유중의 하나는 바로 콘텐츠와 시스템의 분리였습니다.

그래서 목차나 각각의 차시에 대한 파일이나 여러 정보는 imsmanifest.xml을 통해 콘텐츠에 포함시켰습니다.

(어~ 이 부분의 내용이 생각이 안나신다구요.. ㅋㅋ 바로 앞의 강좌 5.3 콘텐츠 통합 모델을 다시 살펴보세요~~)


그렇다면, 이제는 콘텐츠가 가지고 있는 정보를 시스템에 알려줘야 합니다.

그래야 시스템에서 해당하는 목차도 띄워주고~ (물론 시쿼싱이 도입되면서 목차는 시퀀서가 처리하게 되지만.. 여기서는 편의를 위해 일단 이렇게 설명합니다.) 학습자의 학습시간, 평가점수 등도 받아서 저장하거나, 학습자가 요청할 때는 보내주어야 합니다.


이전의 이러닝에서는 콘텐츠와 시스템이 통합되어 있었기 때문에 이 모든 것을 시스템이 알아서 처리했죠~~


그러나 SCORM에서는 다음과 같은 방식으로 콘텐츠와 시스템의 연결을 해결하고 있습니다.




간단하게 도식화 한 것인데요~ 중요한 부분은 바로 API Adapter라는 것임다~ 콘텐츠의 각 SCO(Sharable Content Object)와 시스템인 LMS Server의 API Adapter가 웹 브라우저를 통해 서로 연결되는 것이죠..


다시 정리해 보면.. 콘텐츠에서는 API란 것을 두어서 호출을 합니다. 그럼 서버에서는 그 API를 받아서 처리하는 부분을 만들어 두는 것임다.


(참고로 API란 Application Program Interface로서 프로그램들을 서로 연결시켜주는 것이라고 대략 알아두시면 될 것 같네요)


그렇다면.. 대부분의 콘텐츠는 HTML이죠~ HTML에서 API란 걸 호출하는 방식으로 주로 자바스크립트가 사용됩니다.

그래서 콘텐츠의 SCO에 추가되는 API는 자바스크립트로 되어 있습니다.


자.. 서버에서는 호출된 API를 받아서 처리해야 하죠~ 그게 바로 API Adapter입니다. 기능은 콘텐츠에서 전달해온 값들을 저장하고, 콘텐츠에서 호출하는 값을 보내주는 역할이라고 생각하면 됩니다. 일반적으로 java로 구현하기도 하구요.. ActiveX로 만들기도 하죠.. 최근에는 이것을 Flash나 다른 걸로도 구현하기도 하더라구요..


SCORM RTE 동작 원리


이전 강좌에서 SCO와 Asset에 대해 설명을 했었죠 ~~ 기억나나요?

SCO가 여러개 모여야 Asset이 된다고 했었죠~~ 그쵸...

(네.. 하고 대답하신 분은 이전 강좌를 다시 살펴보시기 바랍니다. ㅋㅋ)


*^^* 아니죠.. Asset이 여러개 모여 SCO가 되기도 하고, Asset 하나가 SCO 하나가 되기도 한다고 했었죠~~


이 Asset과 SCO의 가장 큰 차이점이 바로 RTE에 있습니다.

Asset의 위에서 설명한 API를 가지고 있지 않구요.. SCO는 반드시 가지고 있어야 합니다.


즉, 서버와 통신하는 것은 SCO만 하는 것이구.. 그러므로 학습 결과 등의 데이터를 기록하는 것 또한 SCO만 가능한 거죠.

Asset은 학습을 했는지 않했는지 전혀 알 수 없습니다.


어쨌든.. 지금까지 왜 RTE가 필요하고 어떻게 콘텐츠와 시스템에 상호 통신하는지 알아봤습니다.

그렇다면 보다 자세하게 동작 원리를 좀 살펴보도록 하죠~~




자~ 그림을 위에서부터 시계방향으로 따라가 볼까요~~

LMS Server가 콘텐츠를 불러옵니다. Launch라는 표현을 쓰고 있네요.. Asset을 호출하기도 하고.. SCO를 호출하기도 합니다.


이중에 Asset은 API와의 연결이 없구요.. SCO만 API와의 연결고리가 있죠.. 바로 위에서 설명했었죠.. ^^


잘 보시면 SCO가 API를 통해 LMS Server와 통신을 하는데요.. 두 가지 정도 유의해서 보시면 됩니다.


1. API는 ECMAScript (걍 자바스크립트라고 생각하면 됩니다.)로 되어 있음다..

2. API를 호출할 때 전달되는 데이터는 Data Model이라고 하는 것에  담겨 있게 됩니다.


그렇다면,... 앞으로 살펴볼 것은 API의 내용과 Data Model이 되겠죠.. ^^


API 함수들


SCORM에 사용하는 API 함수는 다행히도 8개가 전부입니다.

와우~~ 너무 간단하죠^^


API 함수가 간단한 이유는 모든 데이터별로 함수가 존재하는 것이 아니고.. 데이터는 Data Model에 따라 정해지고..

함수는 공통적으로 사용하기 때문입니다.


그럼.. 8개의 함수를 살펴보도록 할까요?


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에 대한 에러 관련 상세한 내용을 가져옵니다.


간단하죠.. 그리 어려운 것은 없습니다.

시작할 때 Initialize, 끝날때 Terminate, 값을 가져오고 저장할 때 GetValue, SetValue 요게 핵심이죠.. ^^


하지만.. 실제 활용할 때는 위 함수들을 조합해서 많이 사용합니다. 그래서 위 함수들을 포함하는 함수를 만들어 놓고 사용하죠.. 보통 Wrapper 함수라고 이야기 하는데요..


다음 시간에는 이 Wrapper 함수와 실제 Photoshop 예제에서 어떻게 사용되고 있는지..


그리고 RTE에서 사용하는 Data Model에 대해서 정리해 보도록 하겠습니다.


그럼.. 좋은 하루 되세요~~ 2007.1.25 From 미니..

2009/07/17 20:43 2009/07/17 20:43