EMIT-Japan WebCT レター

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

【管理者向けミニティップス】IMS Enterprise APIを利用する - ユーザとコースのロール(役割)を決定する -

IMS Enterprise APIを利用した前回前々回のTipsで、ユーザ、およびコースの作成を行って来ました。これらをみるとわかるように「ユーザ」という概念(IMS XMLにおける<person>から</person>までの間)、と「コース」という概念(IMS XMLにおける<group>から</group>までの間)はそれぞれ独立して定義されており、それらを関連付ける記述がありませんでした。今回はこの「ユーザ」と「コース」を結びつける「ロール」という概念についてお話します。

WebCT IDとIMS ID

普段WebインタフェースのみでWebCTを利用している場合は全く意識する必要の無い事なのですが、WebCTでユーザを管理する場合「WebCT ID」と「IMS ID」という2種類の異なるIDでユーザを管理しています。

「WebCT ID」とはWebインタフェースからユーザを「追加」する際のIDで、普段ログインでも利用する、ごく一般的な「ID」です。WebCTを普通にWebインタフェースのみで運用する際にはこのIDのみを意識して管理すれば良い事になります。

では「IMS ID」とは何かというと、WebCTの内部でさらにWebCT IDと連動するように生成されている別のIDの事を差します。前回のTipsでenterprise/person/sourcedid/idと説明したものがそれに相当します。Webインタフェースでユーザを管理する場合には全く意識する必要の無いIDですが、IMS Enterprise APIを利用する際はこのIDを管理者側で管理してやる必要があります。尚、Webインタフェースでユーザを作成した場合はIMS IDはユニークになるような複雑なIDを自動生成してくれます。

例として「fukuyama」というWebCT IDを管理者のインタフェースより追加したとしましょう。そこで

 WEBCTROOT/webct/webct/generic/ims

にcdし、以下のように入力します

 $ ./ep_api.pl configure get_person_ims_info fukuyama

成功すると以下のような表示が帰ってきます。

 Retrieving person_ims_info for Global ID (fukuyama).
 Success: IMS id="0550137094CC0D000CC1548AB1A1BC48". IMS source="WebCT"

これによりGlobal ID:fukuyamaは IMS ID:0550137094CC0D000CC1548AB1A1BC48に関連付けられている事がわかりました。Webインタフェースから作成するとこのようなユニークな(おそらく何らかのmd5のようですが)IDが割り当てられますが、この作業を管理者側で行う必要があります。そしてGlobal IDしかりIMS IDしかり両者ともデータベース内でかならず一意である事が求められるので注意してください。

前回までのXMLのおさらい

前回「ユーザXML」と「コースXML」を作成しました。これらを結合して並べたものを以下に記述します。(適当にコメントをいれておきます。)

<enterprise>
 <!-- ここからコース情報 -->
 <group>
   <sourcedid>
      <source>WebCT</source>

      <!-- コースID -->
      <id>CourseID</id>
   </sourcedid>
   <description>
     <!-- コースタイトル -->
     <short>CourseTitle</short>
   </description>
 </group>
 <!-- ここまでコース情報 -->

 <!-- ここからユーザ情報 -->
 <person>
   <sourcedid>
      <source>WebCT</source>

      <!-- IMS ID -->
      <id>0001</id>
   </sourcedid>

   <userid password="passwd">ichiro</userid>

   <name>
     <fn>suzuki ichiro</fn>
     <n>
       <!-- 姓 -->
       <family>suzuki</family>
       <!-- 名 -->
       <given>ichiro</given>
     </n>
   </name>
 </person>
</enterprise>

person(ユーザ)とgroup(コース)を結び付ける

ではいよいよ作成したpersonオブジェクトとコースを結び付けます。結び付ける場合「学生」・「TA」・「デザイナ」のいわゆる「ロール(役割)」と呼ばれる設定も同時に行う事になります(ただし、IMS Enterprise APIはTAのインポートのサポートを行っておりません。どうしてもTAを登録したい場合は学生として登録しておき、WebインタフェースでTAに変更する方法が良いでしょう)。

今回は以下の設定で結び付けを行います。

  • コース: CourseID
  • WebCT ID: ichiro
  • ロール: デザイナ(プライマリ)

この結び付けは<membership>というタグにより行います。上記の設定で最も簡単にデザイナとして関連付けを行うXMLを示したのが以下になります。

  <membership>
    <sourcedid>
      <source>WebCT</source>
      
      <!-- これはコース ID(group/sourcedid/id)に合わせる -->
      <id>CourseID</id>
    </sourcedid>

    <member>
      <sourcedid>
        <source>WebCT</source>

        <!-- これはIMS ID(person/sourcedid/id)に合わせる -->
        <id>0001</id>
      </sourcedid>

      <!-- ここは(WebCTで利用する場合は)「1」に固定する -->
      <idtype>1</idtype>

      <!-- デザイナの場合は「02」にする -->
      <role roletype="02">
          <!-- プライマリデザイナを示す(デフォルト・省略可) -->
        <subrole>Primary</subrole>

          <!-- ユーザが1のときアクティブ、0のとき非アクティブ(0がデフォルト・省略可ですが
        非アクティブになってしまう事に注意してください!) -->
        <status>1</status>
      </role>
    </member>
  </membership>

<membership></membership>内に<person></person>と関連付けられているものが「WebCT ID」ではなく「IMS ID」のみである事がお解り頂けると思います。このようにIMS IDはロールの作成等IMS関連のツールを扱う場合度々「WebCT ID」の代わりに用いられるものなので注意して管理してください。

以上をまとめて、省略できる部分を省略したXMLを作成すると以下のようになります。

<?xml version="1.0" encoding="utf-8"?>
<enterprise>
  <person>
    <sourcedid>
       <source>WebCT</source>
       <id>0001</id>
    </sourcedid>
    <userid password="passwd">ichiro</userid>
    <name>
      <fn>suzuki ichiro</fn>
      <n>
        <family>suzuki</family>
        <given>ichiro</given>
      </n>
    </name>
    <datasource>WebCT</datasource>
  </person>

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

  <membership>
    <sourcedid>
      <source>WebCT</source>
      <id>CourseID</id>
    </sourcedid>
    <member>
      <sourcedid>
        <source>WebCT</source>
        <id>0001</id>
      </sourcedid>
      <idtype>1</idtype>
      <role roletype="02">
        <status>1</status>
      </role>
    </member>
  </membership>
</enterprise>

これを以下のコマンドでインポートします。

$ ./ep_api.pl import unrestrict <保存した名前の>.xml

以下は作成したコースに適当な学生を追加するXMLの一例です。

<?xml version="1.0" encoding="utf-8"?>
<enterprise>
  <person>
    <sourcedid>
       <source>WebCT</source>
       <id>0002</id>
    </sourcedid>
    <userid password="passwd">ziro</userid>
    <name>
      <fn>suzuki ziro</fn>
      <n>
        <family>suzuki</family>
        <given>ziro</given>
      </n>
    </name>
    <datasource>WebCT</datasource>
  </person>

  <membership>
    <sourcedid>
      <source>WebCT</source>
      <id>CourseID</id>
    </sourcedid>
    <member>
      <sourcedid>
        <source>WebCT</source>
        <id>0002</id>
      </sourcedid>
      <idtype>1</idtype>
      <role roletype="01">
        <status>1</status>
      </role>
    </member>
  </membership>
</enterprise>

すなわち roleタグの属性「roletype」を02から01に変更すると「学生」として登録される事になります

文責: エミットジャパン 福山
(2005年 4月)