next up previous contents
Next: Limiting Access to Modules Up: Using the Module Features Previous: Exporting/Importing Objects

Setting Home Modules for Users

When ConceptBase is used in a multi-user setting, it makes sense to automatically assign clients of ConceptBase users to a dedicated module context, their so-called home module. To use this feature, the database of the ConceptBase server has to contain instances of the pre-defined class CB_User. This class is defined as follows:

CB_User with
 attribute
      homeModule : Module
end

Assume that we have two users mary and john who need to be assigned to different modules when they log into the CBserver by their favorite user interface. The system adminstrator should then include the following definitions to the database of the CBserver:

Project1 in Module end
Project2 in Module end


mary in CB_User with
 homeModule m1 : Project1
end

john in CB_User with
 homeModule m1 : Project2
end

As a consequence, the start module of the two users will be set accordingly when they log into the CBserver. The home module feature is especially useful in a teaching environment. The teacher can put some Telos models into the shared System module. Students' home modules would be assigned to sub-modules, e.g. based on group membership. Each student group can then work on an assignment by working on their sub-module without interfering with other student groups.

There is a subclass AutoHomeModule of Module which addresses teaching applications of ConceptBase where by default any user should work in her own module context. Rather than having to define separate modules for each user explicitely, you can just define a certain module to be of type AutoHomeModule:

LectureModule in AutoHomeModule with
  exception e1: mary
end

mary in CB_User with
 homeModule m1 : LectureModule
end

john in CB_User with
  homeModule m1: LectureModule
end

Here, user john (a student) will be automatically be assigned to a new module Workspace_john that is created as sub module of LectureModule. User mary, presumably the teacher, is defined to be an exception to this rule and she will get the home module LectureModule. By this, one can reduce the chances of unwanted interferences between users of the module LectureModule. Still, all student members can read the definitions in the module LectureModule.

An even simpler way to separate the workspaces of any user is to define

System in AutoHomeModule with
  exception
    e1: mary
end

mary in CB_User end

Then, no user needs to be defined explicitelygif as instance of CB_User and still will get assigned her own sub module to work in. One user like mary should be kept as exception because she would work by default on the System module to define objects that are visible to all students.

The home module definitions need to be made at the root module System because they will be evaluated upon client registration (server method ENROLL_ME) in this module context. Please note that the module context is only dependent on the user name, not on the client and not on the network location of the user. It could well be that a user mary is defined on multiple computers on the network and that different natural persons are identified by mary.


next up previous contents
Next: Limiting Access to Modules Up: Using the Module Features Previous: Exporting/Importing Objects

ConceptBase Team