제 3절 API(Application Programming Interface)

Professor Ho's Wiki Site

목차

API 개요

  API는 SCORM 콘텐츠내에 삽입되는 ECMAScript (표준화된 Java Script언어)로서 LMS와 통신을 하게 하는 역할을 담당한다. API는 몇 가지 정해진 함수의 사용 방법을 통하여 콘텐츠의 시작과 종료, 학습 데이터의 송수신, 오류 메시지의 확인 등이 가능하다.


그림 40 API 개요

API 함수(method)

  API의 핵심은 SCO화된 콘텐츠가 LMS와 통신할 수 있도록 통신 방법을 제공하는 것이다. SCO가 제대로 동작하면 서버와의 세션 연결을 초기화하고 데이터를 송수신한 후 초기화한 세션을 종료하는 작업을 수행할 수 있다. LMS와 SCO 간의 모든 통신 세션은 하나 하나의 SCO 단위로 이루어진다. API 구현에 사용된 함수는 표 1과 같이 세 가지 범주로 분류된다.


표 1 API 함수 범주
함수 설명
세션 함수
(sesseion method)
세션 함수는 API Instance를 통한 SCO와 LMS 간의 통신 세션의 시작과 종료를 관리한다.
데이터 전달 함수
(Data-transfer method)
데이터 전달 함수는 API Instance를 통한 SCO와 LMS 간의 RTE 데이터 모델 값 전달 작업을 수행한다.
지원 함수
(Support method)
지원 함수는 API Instance를 통한 SCO와 LMS 간의 오류 사항 확인 및 통지 작업을 수행한다.


세션 함수(Session Method)

  SCO는 자신과 API Instance 간의 데이터 통신의 시작과 종료에 관한 표준 API 함수를 제공한다. (자세한 내용은 부록을 참조하기 바란다.)

  예) Initialize(), Terminate()


데이터 전달 함수(Data-transfer Method)

  SCO는 해당 통신 세션 내에서 데이터 쓰기와 읽기를 위해 데이터 전달 함수를 이용한다. SCO는 이들 함수를 이용하여 LMS와 학습 데이터를 주고받는다. 예를 들어, LMS는 이 데이터를 이용하여 활동에 대한 완료/완성을 확인한다. 궁극적으로 이러한 데이터들은 실행 단계에서 시퀀싱 및 네비게이션 결정에 반영된다. (자세한 내용은 부록을 참조하기 바란다.)

  예) GetValue(), SetValue(), Commit(),


지원 함수(Support Method)

  지원 함수는 SCO가 시스템에서 발생한 오류를 진단하고 처리할 수 있도록 지원한다. LMS 상에서 진행되는 동안 발생한 오류는 지정된 항목과 이름으로 SCO로 보내 질 수 있다. 물론 LMS 측에서는 지정된 항목과 이름으로 발생한 오류를 지원함수를 통하여 제공될 수 있도록 개발되어야 한다. SCO 는 오류를 확인하고 진단하여 어떠한 상황이 발생하였는지를 확인할 수 있으며 이에 대한 작업 절차를 콘텐츠 안에 구현할 수 있다.

  예) GetLastError(), GetErrorString(), GetDiagnostic(),


API 구현

  ADL이 제공한 두 개의 API 구현 파일은 APIWrapper.js와 Functions.js 이다. 이 파일들은 콘텐츠와 서버간의 통신을 통해 정보를 주고 받거나 오류 메시지를 제공하는 함수들이 포함되어 있다. 구현하는 방식은 이 두개의 파일을 콘텐츠 헤더 영역에 포함(include)시키고 필요에 따라 적절한 함수들을 활용한다. 샘플 콘텐츠들을 중심으로 예를 들어보면 아래와 같이 사용이 가능하다.


API 구현 오류 코드

  모든 오류 코드는 문자열로 표현된 정수이어야 한다. IEEE 표준은 모든 오류 코드의 범위를 0~65536로 정의하고 있다. 이중 0에서부터 999 사이는 차후의 버전을 위해 예약되어 있다. 추가의 오류 코드는 1000에서부터 65535 까지의 범위에 정의될 수 있다. 물론 각 버전에서는 정의된 오류에 해당하는 오류 코드만을 사용해야 할 것이다.


표 2 오류 코드의 범주
오류 코드 범주 오류 코드 범위
오류 없음 0
일반 오류 100~199
신택스 오류 200~299
RTS 오류 300~399
데이터 모델 오류 400~499
구현 정의 오류 1000~65535

개인 도구