EMIT-Japan WebCT レター

  • 登録・解除
  • プライバシーポリシー

【管理者向けミニティップス】IMS Enterprise API 実践 - コースXMLを作成する -

IMS Enterprise APIの機能を利用してコースをXMLから作成してみます。今回はコースXMLの書式と、コマンドラインを用いてインポートする方法を解説します。

IMS Enterprise APIとは

XMLを用いてWebCT内部情報を交換するプログラムで、コマンドラインによるものとWebベースで実行するものがあります。 ここでは初級の実践編としてコースを作成する事だけに着眼して進めていきます。

なお、IMS Enterprise APIの全ての機能を利用するにはInstitutionライセンスが必要です。また、このTipはWebCT 4.0/Red Hat Linux 7.3でのみ確認しております。ご了承ください。

コースXMLを記述する

単純にコースを作成するだけであれば、とても簡単なXMLで表現することが出来ます。最も基本的な形は以下のようになります。

<enterprise>
 <group>
   <sourcedid>
    <source>WebCT</source>
    <id>CourseID</id>
   </sourcedid>
   <description>
     <short>CourseTitle</short>
   </description>
 </group>
</enterprise>

以下に簡単な説明を書きます。

enterprise
これはXMLのルートタグになります。Enterprise APIを利用する場合はすべてこのenterpriseというルートタグで始まる必要があります。
enterprise/group
コース情報を示すことを意味します
enterprise/group/sourcedid/source
これは特に意味をもたない値ですが、WebCTと記述しておかないとインポートに失敗するようです。
enterprise/group/source/id
これはコースIDになります
enterprise/group/description/short
これはコースタイトルになります

XMLに日本語を含める場合は文字コードに注意してください。基本的にはUTF-8で記述する事をおすすめします。例えばUTF-8で記述した場合、XMLをインポートする際、管理者の設定で「API インポートのキャラクタセット」を「UTF-8」に一致させる事が必要です。

インポートしてみる

まずコースID(enterprise/group/source/id)が既存のコースIDと競合しないよう十分に気をつけてコースXMLを記述してみてください。その後記述したXMLをサーバに転送し、以下のコマンドを実行します。

cd $webct_insta_dir/webct/webct/generic/ims
./ep_api.pl import unrestrict <作成したXMLファイル>

正常に成功するとSuccess: というような表示が出ると思います。うまくいかなかった場合は$webct_insta_dir/webct/webct/generic/logs/ims_log.txtを参照して原因を探ってみてください。

より詳細なコース情報の設定

上記XMLでコースをインポートしてみるとわかりますが、「簡易」テンプレートを用いてコースが作成されます。インポート時にテンプレートを変更する事もできますし、またコースの「詳細」情報を記述する事も可能です。以下に、より詳細なコース情報を表現したXMLを記述してみます。

<enterprise>
 <group>
   <sourcedid>
    <source>WebCT</source>
    <id>CourseID</id>
   </sourcedid>
   <description>
     <short>CourseTitle</short>
     <long>CourseDescription</long>
   </description>
   <org>
     <orgunit>Category</orgunit>
   </org>
   <extension>
     <template>Blank</template>
   </extension>
 </group>
</enterprise>

追加した情報を説明します。

enterprise/group/description/long
これはコース概要になります
enterprise/group/description/org/orgunit
これはカテゴリになります
enterprise/group/extension/template
これはコーステンプレートになります。以下の指定が可能です
  • Blank -> ブランクコース
  • photo_basic -> 初級
  • photo -> 中級
  • photo_comprehensive -> 上級
  • 有効な既存のコースID -> そのコースをテンプレートにして作成
  • 無効な指定 -> デフォルト(簡易)

新規、更新、削除モードの指定

ここで作成したXMLをインポートする際、「新規」、「更新」、「削除」という3つのモードが指定できます。例えば以下のようなXMLを記述してインポートすると指定したコースを削除する事もできます。

<enterprise>
 <group recstatus="3">
   <sourcedid>
    <source>WebCT</source>
    <id>CourseID</id>
   </sourcedid>
   <description>
     <short>CourseTitle</short>
   </description>
 </group>
</enterprise>

上記XMLのようにgroupタグにrecstatusという属性を与えることで可能になります。指定できる属性は以下の通りです。

  • 1 -> 新規作成
  • 2 -> 更新
  • 3 -> 削除

指定が無い場合は、指定されたコースIDが存在しない場合は「新規作成」、指定されたコースIDが存在する場合は「更新」、となります。更新作業でコース内容がテンプレートにより置換される事は無いようです。よって更新時にテンプレートを指定しても無視されます。

複数のコースの操作

操作したいコースの分だけgroupを作成してXMLで並べれば可能です。

<enterprise>
 <group>
   <sourcedid>
    <source>WebCT</source>
    <id>CourseID</id>
   </sourcedid>
   <description>
     <short>CourseTitle</short>
   </description>
 </group>
 <group>
   <sourcedid>
    <source>WebCT</source>
    <id>CourseID2</id>
   </sourcedid>
   <description>
     <short>CourseTitle2</short>
   </description>
 </group>
</enterprise>
文責: エミットジャパン 福山貴幸
(2004年 8月)