IE84098B1 - Tracking of computer based training courses - Google Patents
Tracking of computer based training courses Download PDFInfo
- Publication number
- IE84098B1 IE84098B1 IE2001/1030A IE20011030A IE84098B1 IE 84098 B1 IE84098 B1 IE 84098B1 IE 2001/1030 A IE2001/1030 A IE 2001/1030A IE 20011030 A IE20011030 A IE 20011030A IE 84098 B1 IE84098 B1 IE 84098B1
- Authority
- IE
- Ireland
- Prior art keywords
- sao
- database
- tracking
- engine
- comprises means
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09B—EDUCATIONAL OR DEMONSTRATION APPLIANCES; APPLIANCES FOR TEACHING, OR COMMUNICATING WITH, THE BLIND, DEAF OR MUTE; MODELS; PLANETARIA; GLOBES; MAPS; DIAGRAMS
- G09B5/00—Electrically-operated educational appliances
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09B—EDUCATIONAL OR DEMONSTRATION APPLIANCES; APPLIANCES FOR TEACHING, OR COMMUNICATING WITH, THE BLIND, DEAF OR MUTE; MODELS; PLANETARIA; GLOBES; MAPS; DIAGRAMS
- G09B7/00—Electrically-operated teaching apparatus or devices working with questions and answers
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/953—Organization of data
- Y10S707/955—Object-oriented
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
Abstract
ABSTRACT (Fig. 2) A tracking system (1) updates data to, and retrieves data from, learning management databases (10). Update data is received from course player servers (4), and requests are received from client systems. A common interface (21) interfaces with all players and clients, and it polls translation modules (22) for an appropriate and available module when a message is received. A tracking engine (20) manages threads and a queue for both synchronous and asynchronous communication. The queue is linked with database interfaces (24), which are Schema Access Objects (SAOS). Each SAO is pooled as a set of instances, activated and managed by a pooling manager. lEn1103n \ /' ‘I_'|T.I.2ur.l.~'..in2. 9.! mI1.1p_u.t_L:r lm.s_<:<.|__!.r_eIiniI1t;r:s_uuscs" INTRODUCTION 5 Field of the Invention The invention relates to learning management, and more particularly to tracking of progress of computer based training courses. 10 Prior Art Discussion Our European Patent No. 0690426B describes a computer based training system (“course player”) which delivers and manages course content for a student. As computer based training has developed, many students use a number of courses. 15 Also, a particular organisation may have many students and many courses, possibly hosted on an intranet. This gives rise to a need for tracking of courses according to various criteria including per student, per organisation group, and per course. Thus, the invention is directed towards providing a system for effective and versatile 20 tracking of computer based training courses. SUMMARY OF THE INVENTION According to the invention, there is provided a tracking system comprising means for 25 receiving course player update data, and for writing the update data to a leaming management database, characterised in that, the system comprises database interface means for communication with a plurality of learning management databases, and OPEN TO PUBLIC INSPECTION INT cl 7 (fut-,F I§loo‘_ I1Lt+o_- angst. Gen.‘-’. l‘1I<»|eL|'<.2. Q UNDER SECTION 28 AND RULE 2.’; , iEflllfl3u the system comprises a tracking engine comprising means for managing uni- directional communication for asynchronous course player data updates, and for managing bi-directional communication for synchronous course player data updates and responses. In one embodiment, the system further comprises a plurality of translation modules, each comprising means for translating from a player language to a common engine language, and vice-versa. In another embodiment, each translation module is an object instantiated at start-up. In a further embodiment, the system further comprises a common interface comprising means for interfacing with all players, and for polling by routing a received message to all translation modules; wherein each translation module comprises means for parsing received messages and, if it can translate the message, indicating as such; and wherein the common interface comprises means for activating a translation module which responds positively. In one embodiment, the common interface comprises means for polling the translation modules according to a pre-set file. In another embodiment, the common interface comprises means for receiving translated messages from the translation modules. In a fiuther embodiment, the engine comprises means for managing a queue, and for establishing threads for input and output to the queue. In one embodiment, the engine comprises means for assuming that a data update message is synchronous unless the message indicates otherwise. lEnrrn3a In another embodiment, the database interface means comprises a schema access object (SAO) associated with each learning management database. In a further embodiment, all SAOs have the same exposed interface to the tracking engine. In one embodiment, the system comprises means for both pre~setting and for subsequently modifying associations between players and SAOs. In another embodiment, the system comprises pooling means, comprising means for creating a number of instances of each SAO and for reusing the instances. In a further embodiment, the pooling means comprises a manager comprising means for managing a pool of SAOS, for determining a free SAO if one exists, for putting a requesting thread in a sleep state if an instance is temporarily unavailable, and for instructing a new set of SAO instances to be created. In one embodiment, the system comprises means for determining during initialisation a connection string to be passed to an SAO instance to indicate the database to be opened. In another embodiment, the manager comprises means for re-initialising a pooled SAO instance if it operates incorrectly. In a further embodiment, the tracking engine comprises means for maintaining an input thread between the common interface and the queue. In one embodiment, the tracking engine comprises means for maintaining a plurality of database-side threads for routing messages from the queue to the database interface 11163115. lEfll103n In another embodiment, each database-side thread comprises means for waiting for a response from the database interface means, and for directly routing received responses to a relevant translation module for translation and for receiving translated responses back from the translation modules. In a further embodiment, each database-side thread comprises means for directly routing a translated response to an originating player. In one embodiment, the engine comprises means for maintaining each database-side thread in an active state or a sleep state. In another embodiment, the engine comprises means for switching a database-side thread to an active state in response to the input thread request. In one embodiment, the engine comprises means for writing the contents of the queue to a log file when shutting down unexpectedly, and for automatically searching for a log file upon start-up. In another embodiment, the common interface comprises a time-out function comprising means for terminating a player connection upon expiry of a pre-set time period. In one embodiment, the database interface means comprises a time-out function comprising means for terminating a learning management database connection upon expiry of a pre-set time period. lZlfil‘/\lglgliI.Il.1ES(7l§_Ifl,l'|([N()l"'|'lII3 lNVl3l_\{'l‘l( IN lE011U3u Brief Description of the Drawings The invention will be more clearly understood from the following description of some embodiments thereof, given by way of example only with reference to the accompanying drawings in which:- Fig. 1 is a high level diagram illustrating the context of a tracking system of the invention; and Fig. 2 is a diagram illustrating architecture of the tracking system. Description of the Embodiments Referring to Fig. 1 a tracking system 1 is used for tracking progress of courses executing on student browsers 2 receiving content via the Internet 3 from course player servers 4. On its other side the tracking system 1 writes progress data to learning management databases 10. In this embodiment all course data is received from course player servers 4, however, it may alternatively be received from stand-alone course players executing as applications on student computers. The players and/ or player servers which provide the course data and the learning management databases may be operated by third parties. Thus, the operator of the tracking system 1 may provide a service of generating learning management data for any chosen player or player server for a third party. The tracking system 1 operates with minimal impact on the course players and/ or servers (henceforth “players"). One reason is that they can communicate asynchronously in a “fire and forget" mode. This is made possible by use of a low- level communication layer (TCP) ensuring safe receipt. lE01I03g The tracking system 1 can handle data captures from players at any frequency to suit the player, the range being from seconds to hours. Some players may be configured for updating on a timed basis of every two seconds, whereas others may be configured for updating only after the end of a course. In the latter case, the player performs internal tracking during the course. Referring to Fig. 2, the tracking system 1 comprises a central tracking engine 20. A common interface 21 communicates with all players, and routes signals to a chosen translation module 22 (“translator"). The engine 20 manages threads between the translators 22 and database interfaces 24. There is one database interface 24 for each learning database 10. The engine 20 performs queuing so that there is effective buffering between the players 4 and the databases 10. In more detail, the tracking system 1 also interfaces on the player side with client systems requesting data, such as a testing engine or a reporting tool. The translation modules 22 translate to a common language used by the tracking engine 2, CMIML2. If the incoming data is in this format it is routed directly to the engine 20 without translation. The engine 20 queues received requests/ data messages and parses them while in the queues. It then performs the database operation via the interfaces 24, either writes or reads. Where the incoming message is synchronous the engine routes a response back to the requesting application. Each database interface 24 is a SAO (Schema Access Object). This is an object that understands how student tracking information is stored in a particular type of learning management database (for example the student tracking database in Smartforce Campus“). Each SAO has the same interface exposed. Each SAO is defined in a module, having a well-defined factory method to create an instance of the SAO. The lEo11n3o interface and the factory method that must exist in the SAO’s module is defined. An SAO may be supplied as a modular plug-in to the system 1, typically by the suppliers of the databases 10. To create an instance of an SAO, the system 1 loads the required module (located by its name and vendor), and invokes the defined factory method to obtain an instance of an object that complies with the well-known SAO interface. There is an override for this process. It is possible for the set-up administrator to set up the system 1 in a way that specifies, “All requests that come from the player X should be dealt with by the Y SAO". This is achieved by changing the “redirect.dat" file. This is a file, which the administrator can edit, that redirects all requests for SAD A to requests for SAO B. This “redirect.dat” file is read when the system 1 starts up, and allows client systems to communicate with tracking databases of the administrator’s choice, even if the particular combination of client system and database 10 were never designed to work together. The following is a sample redirectdat file. ; Redirect.dat ; SAO Redirection to illustrate SAO redirection. This file is a sample, ; The entries in this file are processed in the order in which ; they occur. , The first entry (below) for the 2.0|cbt|WebPlus SAO to the 1.01VendorA|Learning*Management_System_A SAO. maps all requests 2.D|cbtiWebPlus —> 1.0|VendorAflearning_Management_System_A ; The next entry maps all other 2.0|cbt SAO requests to the 2.0|cbt|campus SAO. ; Note that the asterix ‘*‘ any name. is a wildcard, and can correspond to IEa11n3a 2.0|cbt|* —> 2.0|cbt|campus ; The last entry is a "catch-all". It maps all other requests to the 2.0|cbt1null SAO. *|*l* —> 2.0|cbt|null The system 1 pools SAOs. This allows it to create a number of instances of each SAO, and reuse these instances for each request. When a request is received from a client, the request is examined. The request contains two fields indicating what product (and from which vendor) has sent the request. This correlates directly to an SAO. The system 1 queries an “SAO manager” to check if this SAO is already ir1 memory. This leads to one of two situations: 1. Ifthe required SAO is already in memory, the SAO manager examines its pool of SAOS to find a free instance of the required type of SAO. If none is available, the thread is put in a "sleep" state, waiting for an SAO to become available. 2. If the required SAO is not in memory, the SAO manager locates the correct module by name, loads it, and invokes the module’s factory method. It invokes the factory method multiple times, each time retrieving a new instance of the SAO. These instances are placed in a pool for future use. Each SAO module must have a corresponding INI file (which the administrator can edit), containing (at least) the number of instances of that SAO that should be pooled by the system 1, and the connection string that must be passed to the instance of the SAO in order for the SAO to know what database to open. This allows the administrator to point the SAO to a different instance of a database, without changing code. The system 1 examines this INI file before creating the pool of SAOs, and uses the “Pool size" value to decide how many instances of the SAO to create, and passes the connection string to the SAO when creating the SAO. !Eaiin3g If, at any stage, the system 1 determines that an instance of an SAO ceases to operate correctly, it attempts to re—initialise that instance of the SAO. It does this by uninitialising the SAO, then attempting to re-initialise it again. This allows the system 1 to automatically recover, should the database crash or have any other fault. The tracking engine 20 exists as a process executing on a server. Each translation module 22 is an object, stored in a module (a DLL on Windows, at J avaBean in Java). There is a setting (in a “sfconnectini” file) which the system 1 checks on start—up, indicating which translators 22 are to be used. The required translators 22 are loaded and used while the system 1 is executing. When a request is received from a client, the request is passed (using a method call) to each translator 22 in turn. The first translator that returns indicating that it can handle the request is chosen to handle that request. The order in which the translators are polled is according to a user-defined list, stored in an XML file and parsed on start-up. Thus, the common interface 21 operates as a client of the translators 22, calling them as they are required. An input thread 30 of the tracking engine 20 delivers incoming messages from the common interface 21 to a queue 31. The thread 31 also activates database-side threads 32 as they are required. The messages placed in the queue 31 include flags indicating the requesting player or client. Also, the common interface 21 inserts a flag indicating which, if any, translator 22 was used. The queue 31 is a thread-safe data structure in memory, which grows and shrinks as needed. Administration settings specify the maximum permitted number of requests that can be queued at any one time. {Ell l Ml‘ 3 .51» -1[]_ The database-side threads 32 are permanent execution threads each operating on only one message at a time. They have active and sleep states, switching from the sleep to the active state in response to the input thread 30. In the active state, a thread 32 reads the message currently at the head of the queue. It makes a call (invocation) on the relevant SAO 24 and awaits a response if the message is synchronous. lt presumes a message is synchronous unless a flag in the message indicates otherwise. Upon receipt of the response from the SAO 24, the thread 32 determines if translation is required. If so it makes a call on the relevant translator 22 (indicated in the message itself). Again, it awaits the translat0r’s response. The response is then routed directly to the network socket for direct transmission to the originating player or client. Integrity of the communication links is assisted by time-out programs which terminate connections between the player or client and the common interface 21 and between the SAOs and the databases 10 if pre-set times expire. This ensures that a faulty SAO does not affect overall system operation. If the system 1 detects a severe problem, or receives an administrator message indicating that it should be unloaded from memory, it must shut down. Before shutting down, it examines its queue. Any requests in the queue are dumped out to a log file just before it shuts down. Every time it is started, it searches for this log file. If it exists, the contents of the log are re-queued for processing, and the log file deleted. This helps to ensure that requests are not lost, even if the system 1 must shut down. The system 1 may operate in an asynchronous "f1re—and-forget" mode. This allows a client to send a (typically update) request, and not wait for a response. The client can be confident that the request will be processed because: lEl_lllD3g -11- 1. The underlying network protocol, TCP, guarantees that any data is successfully sent only when the destination has received the data. 2. When the system 1 does receive the data, its queuing mechanism guarantees that it will be handled, even if a catastrophe occurs in the meantime. The system 1 can use a network in two ways. 1. Dedicated Port In this mode, it uses a dedicated port, and communicates directly using the language of choice (e. g. CMIML) over the network/internet on that port. 2. HTTP support In this mode, requests as in (1) above are allowed. However, the system 1 also allows clients to “piggy—back” requests over HTTP, using the same port. For example, the administrator could configure the system 1 to operate on port 80, and turn on HTTP support. This allows client applications to either send the requests directly to the system 1 over port 80, or alternatively, to encapsulate the requests (and responses) in HTTP requests over port 80. This allows communication with the system 1 to occur over the Internet even where firewalls are in place. (Firewalls typically allow HTTP communications to pass, but block many other types of communication). The settings that indicate to the system 1 which port to use, and whether or not to allow requests to be piggy-backed on HTTP, are located in the SFCONNECT.lNI file. The administrator can change these settings himself. It will be appreciated that the invention allows for extremely versatile updating and reporting from learning management databases. The translators, the threads, and the SAOs are particularly advantageous for versatility and also robustness. |EU1103o - 12 - The invention is not limited to the embodiments described but may be varied in construction and detail. ( .'l.1i_ms |EUllU3g -13- A tracking system (1) comprising means for receiving course player update data, and for writing the update data to a learning management database, characterised in that, the system (1) comprises database interface means for communication (24) with a plurality of learning management databases (10), and the system comprises a tracking engine (20) comprising means for managing unidirectional communication for asynchronous course player data updates, and for managing bi-directional communication for synchronous course player data updates and responses. A system as claimed in claim 1, wherein the system further comprises a plurality of translation modules (22), each comprising means for translating fiom a player language to a common engine language, and vice—versa. A system as claimed in claim 2, wherein each translation module is an object instantiated at start-up. A system as claimed in claims 2 or 3, wherein the system (1) further comprises a common interface (21) comprising means for interfacing with all players (4), and for polling by routing a received message to all translation modules (22); wherein each translation module (22) comprises means for parsing received messages and, if it can translate the message, indicating as such; and wherein the common interface (21) comprises means for activating a translation module (22) which responds positively. lEo11o3¢ -14. A system as claimed in claim 4, wherein the common interface (21) comprises means for polling the translation modules (22) according to a pre-set file. A system as claimed in claim 4 or 5, wherein the common interface comprises means for receiving translated messages from the translation modules. A system as claimed in any preceding claim, wherein the engine (20) comprises means for managing a queue (31), and for establishing threads for input and output to the queue. A system as claimed in claim 7, wherein the engine (20) comprises means for assuming that a data update message is synchronous unless the message indicates otherwise. A system as claimed in any preceding claim, wherein the database interface means (24) comprises a schema access object (SAO) associated with each learning management database (10). A system as claimed in claim 9, wherein all SAOs (24) have the same exposed interface to the tracking engine (20). A system as claimed in claims 9 or 10, wherein the system (1) comprises means for both pre-setting and for subsequently modifying associations between players and SAOS. A system as claimed in any of claims 9 to 11, wherein the system (1) comprises pooling means, comprising means for creating a number of instances of each SAO and for reusing the instances. lEnt1fl3u -15- A system as claimed in claim 12, wherein the pooling means comprises a manager comprising means for managing a pool of SAOs, for determining a free SAO if one exists, for putting a requesting thread in a sleep state if an instance is temporarily unavailable, and for instructing a new set of SAO instances to be created. A system as claimed in claim 13, wherein the system (1) comprises means for determining during initialisation a connection string to be passed to an SAO instance to indicate the database (10) to be opened. A system as claimed in claims 13 or 14, wherein the manager comprises means for re-initialising a pooled SAO instance if it operates incorrectly. A system as claimed in any of claims 6 to 14, wherein the tracking engine (20) comprises means for maintaining an input thread (30) between the common interface (21) and the queue (31). A system as claimed in any of claims 7 to 15, wherein the tracking engine (20) comprises means for maintaining a plurality of database-side threads (32) for routing messages from the queue (31) to the database interface means (24). A system as claimed in claim 17, wherein each database—side thread (32) comprises means for waiting for a response from the database interface means (24), and for directly routing received responses to a relevant translation module (22) for translation and for receiving translated responses back from the translation modules. A system as claimed in claim 18, wherein each database—side thread (32) comprises means for directly routing a translated response to an originating player. lE0l1D3o -15- A system as claimed in any of claims 17 to 19, wherein the engine (20) comprises means for maintaining each database—side thread (32) in an active state or a sleep state. A system as claimed in claim 19, wherein the engine (20) comprises means for switching a database—side thread (32) to an active state in response to the input thread request. A system as claimed in any preceding claim, wherein the engine (20) comprises means for writing the contents of the queue to a log file when shutting down unexpectedly, and for automatically searching for a log file upon start-up. A system as claimed in any of claims 4 to 22, wherein the common interface (21) comprises a time-out function comprising means for terminating a player connection upon expiry of a pre-set time period. A system as claimed in any preceding claim, wherein the database interface means comprises a time-out function comprising means for terminating a learning management database (10) connection upon expiry of a pre-set time period. A computer program product comprising software code for completing a system as claimed in any preceding claim when executing on a digital computer. lEd11o§fi Student BrQwse__r_s 4 3 Course J Player 4'“”‘ ,7 Server <—> \,;'*-r”“/\\ /J’ / 1 N Internet ' From - \,q\/J q,«° Other 0 Q95 Players & o g.» Clients 0 +4 ““"—> Q.®°60‘\ 5% Q<>‘< <8‘ Tracking System «§?'" § (, her 00° Players & <2?‘ Clients 1 _,,- Mana ement DB5 _ 9 Fig. 1 IEo11o3a From 1 Players 22 \~y calls 4 / ;_ T; ¢ > > | Common rans. Trans. T.-an5_ Interface Module Module _ . . _ _ Mo¢|u|e 21/‘ 1 2 “ 20 31 Qtts) L Tracking k/) 3;} Engme 99* translator ( ’ $9 call 30 60 32 QQ9 t0 network \ <2 socket “<9 SAO call \ DB <3‘ ‘ inter- SAO SAO SAO SAO SAO faces 1. 2 3 m-1 m ::,(“‘“’5
Description
Tracking of computer based training courses
INTRODUCTION
Field of the Invention
The invention relates to learning management, and more particularly to tracking of
progress of computer based training courses.
Prior Art Discussion
Our European Patent No. 0690426B describes a computer based training system
(“course player”) which delivers and manages course content for a student. As
computer based training has developed, many students use a number of courses.
Also, a particular organisation may have many students and many courses, possibly
hosted on an intranet. This gives rise to a need for tracking of courses according to
various criteria including per student, per organisation group, and per course.
Thus, the invention is directed towards providing a system for effective and versatile
tracking of computer based training courses.
SUMMARY OF THE INVENTION
According to the invention, there is provided a tracking system comprising means for
receiving course player update data, and for writing the update data to a learning
management database, characterised in that,
the system comprises database interface means for communication with a
plurality of learning management databases,
the system comprises a tracking engine comprising means for managing uni-
directional communication for asynchronous course player data updates, and
for managing bi—directional communication for synchronous course player
data updates and responses, and
the system further comprises a plurality of translation modules, each
comprising means for translating from a player language to a common engine
language, and vice-versa.
In another embodiment, each translation module is an object instantiated at start-up.
In a further embodiment, the system further comprises a common interface
comprising means for interfacing with all players, and for polling by routing a
received message to all translation modules; wherein each translation module
comprises means for parsing received messages and, if it can translate the message,
indicating as such; and wherein the common interface comprises means for activating
a translation module which responds positively.
In one embodiment, the common interface comprises means for polling the
translation modules according to a pre-set file.
In another embodiment, the common interface comprises means for receiving
translated messages from the translation modules.
In a further embodiment, the engine comprises means for managing a queue, and for
establishing threads for input and output to the queue.
In one embodiment, the engine comprises means for assuming that a data update
message is synchronous unless the message indicates otherwise.
In another embodiment, the database interface means comprises a schema access
object (SAO) associated with each learning management database.
In a further embodiment, all SAOs have the same exposed interface to the tracking
engine.
In one embodiment, the system comprises means for both pre—setting and for
subsequently modifying associations between players and SAOS.
In another embodiment, the system comprises pooling means, comprising means for
creating a number of instances of each SAO and for reusing the instances.
In a further embodiment, the pooling means comprises a manager comprising means
for managing a pool of SAOS, for determining a free SAO if one exists, for putting a
requesting thread in a sleep state if an instance is temporarily unavailable, and for
instructing a new set of SAO instances to be created.
In one embodiment, the system comprises means for determining during initialisation
a connection string to be passed to an SAO instance to indicate the database to be
opened.
In another embodiment, the manager comprises means for re—initialising a pooled
SAO instance if it operates incorrectly.
In a further embodiment, the tracking engine comprises means for maintaining an
input thread between the common interface and the queue.
In one embodiment, the tracking engine comprises means for maintaining a plurality
of database-side threads for routing messages from the queue to the database interface
means.
In another embodiment, each database-side thread comprises means for Waiting for a
response from the database interface means, and for directly routing received
responses to a relevant translation module for translation and for receiving translated
responses back from the translation modules.
In a further embodiment, each database-side thread comprises means for directly
routing a translated response to an originating player.
In one embodiment, the engine comprises means for maintaining each database-side
thread in an active state or a sleep state.
In another embodiment, the engine comprises means for switching a database-side
thread to an active state in response to the input thread request.
In one embodiment, the engine comprises means for Writing the contents of the queue
to a log file when shutting down unexpectedly, and for automatically searching for a
log file upon start-up.
In another embodiment, the common interface comprises a time-out function
comprising means for terminating a player connection upon expiry of a pre—set time
period.
In one embodiment, the database interface means comprises a time-out function
comprising means for terminating a learning management database connection upon
expiry of a pre—set time period.
In another aspect, the invention provides a method of operation of a tracking system
for receiving course player update data, and for writing the update data to a learning
management database, the method comprising the steps of:
IQ
U:
a database interface means of the system communicating with a plurality of
learning management databases (10),
a tracking engine (20) of the system managing uni—directional communication
for asynchronous course player data updates, and managing bi-directional
communication for synchronous course player data updates and responses,
and
a plurality of translation modules (22) of the system, each translating from a
player language to a common engine language, and vice-versa.
DETAILED DESCRIPTION OF THE INVENTION
Brief Description of the Drawings
The invention will be more clearly understood from the following description of some
embodiments thereof, given by way of example only with reference to the
accompanying drawings in which:—
Fig. 1 is a high level diagram illustrating the context of a tracking system of the
invention; and
Fig. 2 is a diagram illustrating architecture of the tracking system.
Description of the Embodiments
Referring to Fig. l a tracking system 1 is used for tracking progress of courses
executing on student browsers 2 receiving content via the Internet 3 from course
player servers 4. On its other side the tracking system 1 writes progress data to
learning management databases 10.
In this embodiment all course data is received from course player servers 4, however,
it may alternatively be received from stand—alone course players executing as
applications on student computers. The players and/ or player servers which provide
the course data and the learning management databases may be operated by third
parties. Thus, the operator of the tracking system 1 may provide a service of
generating learning management data for any chosen player or player server for a
third party.
The tracking system 1 operates with minimal impact on the course players and/ or
servers (henceforth “players”). One reason is that they can communicate
asynchronously in a “fire and forget” mode. This is made possible by use of a low-
level communication layer (TCP) ensuring safe receipt.
The tracking system 1 can handle data captures from players at any frequency to suit
the player, the range being from seconds to hours. Some players may be configured
for updating on a timed basis of every two seconds, whereas others may be configured
for updating only after the end of a course. In the latter case, the player performs
internal tracking during the course.
Referring to Fig. 2, the tracking system 1 comprises a central tracking engine 20. A
common interface 21 communicates with all players, and routes signals to a chosen
translation module 22 (“translator”). The engine 20 manages threads between the
translators 22 and database interfaces 24. There is one database interface 24 for each
learning database 10. The engine 20 performs queuing so that there is effective
buffering between the players 4 and the databases 10.
In more detail, the tracking system 1 also interfaces on the player side with client
systems requesting data, such as a testing engine or a reporting tool. The translation
modules 22 translate to a common language used by the tracking engine 2, CMIMLZ.
If the incoming data is in this format it is routed directly to the engine 20 without
translation.
The engine 20 queues received requests/ data messages and parses them while in the
queues. It then performs the database operation via the interfaces 24, either writes or
reads. Where the incoming message is synchronous the engine routes a response back
to the requesting application.
Each database interface 24 is a SAO (Schema Access Object). This is an object that
understands how student tracking information is stored in a particular type of learning
management database (for example the student tracking database in Smartforce
Campus”). Each SAO has the same interface exposed. Each SAO is defined in a
module, having a well—defined factory method to create an instance of the SAO. The
interface and the factory method that must exist in the SAO’s module is defined. An
SAO may be supplied as a modular plug-in to the system I, typically by the suppliers
of the databases 10.
To create an instance of an SAO, the system 1 loads the required module (located by
its name and vendor), and invokes the defined factory method to obtain an instance of
an object that complies with the well—known SAO interface.
There is an override for this process. It is possible for the set—up administrator to set up
the system l in a way that specifies, “All requests that come from the player X should
be dealt with by the Y SAO”. This is achieved by changing the “redirect.dat” file.
This is a file, which the administrator can edit, that redirects all requests for SAO A to
requests for SAO B. This “redirect.dat” file is read when the system 1 starts up, and
allows client systems to communicate with tracking databases of the administrator’s
DJ
<3
D)
U:
choice, even if the particular combination of client system and database lO were never
designed to work together. The following is a sample redirect.dat file.
; Redirect.dat
; SAO Redirection
; This file is a sample, to illustrate SAO redirection.
; The entries in this file are processed in the order in which
; they occur.
, The first entry (below)
2.0|cbt|WebPlus SAO to the
1.0|VendorAlLearning_Management_System_A SAO.
maps all requests for the
.0lcbt|WebPlus ~> 1.02VendorAflearning_Management_System_A
; The next entry maps all other 2.0|cbt SAO requests to the
2.0|cbt|campus SAO.
; Note that the asterix '*'
any name.
is a wildcard, and can correspond to
2.0|cbt|* -> 2.0|cbt1campus
; The last entry is a "catch—all".
the 2.0|cbt|null SAO.
It maps all other requests to
I
*|*‘*
—> 2.0lcbt|null
The system 1 pools SAOS. This allows it to create a number of instances of each SAO,
and reuse these instances for each request. When a request is received from a client,
the request is examined. The request contains two fields indicating what product (and
from which vendor) has sent the request. This correlates directly to an SAO. The
system l queries an “SAO manager” to check if this SAO is already in memory. This
leads to one of two situations:
. If the required SAO is already in memory, the SAO manager examines its pool
of SAOs to find a free instance of the required type of SAO. If none is
I\)
LII
available, the thread is put in a “sleep” state, waiting for an SAO to become
available.
. If the required SAO is not in memory, the SAO manager locates the correct
module by name, loads it, and invokes the module’s factory method. It invokes
the factory method multiple times, each time retrieving a new instance of the
SAO. These instances are placed in a pool for future use.
Each SAO module must have a corresponding INI file (which the administrator can
edit), containing (at least) the number of instances of that SAO that should be pooled
by the system 1, and the connection string that must be passed to the instance of the
SAO in order for the SAO to know what database to open. This allows the
administrator to point the SAO to a different instance of a database, without changing
code. The system 1 examines this INI file before creating the pool of SAOs, and uses
the “Pool size” value to decide how many instances of the SAO to create, and passes
the connection string to the SAO when creating the SAO.
If, at any stage, the system 1 determines that an instance of an SAO ceases to operate
correctly, it attempts to re-initialise that instance of the SAO. It does this by
uninitialising the SAO, then attempting to re—initialise it again. This allows the system
to automatically recover, should the database crash or have any other fault.
The tracking engine 20 exists as a process executing on a server. Each translation
module 22 is an object, stored in a module (a DLL on Windows, a J avaBean in Java).
There is a setting (in a “sfconnect.ini” file) which the system 1 checks on start-up,
indicating which translators 22 are to be used. The required translators 22 are loaded
and used while the system 1 is executing. When a request is received from a client,
the request is passed (using a method call) to each translator 22 in turn. The first
translator that returns indicating that it can handle the request is chosen to handle that
request. The order in which the translators are polled is according to a user-defined
list, stored in an XML file and parsed on start-up.
l\.)
U:
Thus, the common interface 21 operates as a client of the translators 22, calling them
as they are required. An input thread 30 of the tracking engine 20 delivers incoming
messages from the common interface 21 to a queue 31. The thread 31 also activates
database-side threads 32 as they are required.
The messages placed in the queue 31 include flags indicating the requesting player or
client. Also, the common interface 21 inserts a flag indicating which, if any,
translator 22 was used.
The queue 31 is a thread-safe data structure in memory, which grows and shrinks as
needed. Administration settings specify the maximum permitted number of requests
that can be queued at any one time.
The database-side threads 32 are permanent execution threads each operating on only
one message at a time. They have active and sleep states, switching from the sleep to
the active state in response to the input thread 30.
In the active state, a thread 32 reads the message currently at the head of the queue. It
makes a call (invocation) on the relevant SAO 24 and awaits a response if the
message is synchronous. It presumes a message is synchronous unless a flag in the
message indicates otherwise.
Upon receipt of the response from the SAO 24, the thread 32 determines if translation
is required. If so it makes a call on the relevant translator 22 (indicated in the message
itself). Again, it awaits the translator’s response. The response is then routed directly
to the network socket for direct transmission to the originating player or client.
Integrity of the communication links is assisted by time-out programs which terminate
connections between the player or client and the common interface 21 and between
I\)
LII
the SAOS and the databases 10 if pre-set times expire. This ensures that a faulty SAO
does not affect overall system operation.
If the system 1 detects a severe problem, or receives an administrator message
indicating that it should be unloaded from memory, it must shut down. Before
shutting down, it examines its queue. Any requests in the queue are dumped out to a
log file just before it shuts down. Every time it is started, it searches for this log file. If
it exists, the contents of the log are re-queued for processing, and the log file deleted.
This helps to ensure that requests are not lost, even if the system l must shut down.
The system 1 may operate in an asynchronous “fire—and-forget” mode. This allows a
client to send a (typically update) request, and not wait for a response. The client can
be confident that the request will be processed because:
l. The underlying network protocol, TCP, guarantees that any data is
successfully sent only when the destination has received the data.
. When the system l does receive the data, its queuing mechanism guarantees
that it will be handled, even if a catastrophe occurs in the meantime.
The system 1 can use a network in two ways.
l. Dedicated Port
In this mode, it uses a dedicated port, and communicates directly using the
language of choice (e. g. CMIML) over the netvvork/internet on that port.
. HTTP support
In this mode, requests as in (1) above are allowed. However, the system 1 also
allows clients to “piggy—back” requests over HTTP, using the same port. For
example, the administrator could configure the system l to operate on port 80,
and turn on HTTP support. This allows client applications to either send the
requests directly to the system 1 over port 80, or alternatively, to encapsulate the
requests (and responses) in HTTP requests over port 80. This allows
communication with the system 1 to occur over the Internet even where firewalls
are in place. (Firewalls typically allow HTTP communications to pass, but block
many other types of communication).
The settings that indicate to the system 1 which port to use, and whether or not to
allow requests to be piggy-backed on HTTP, are located in the SFCONNECTINI
file. The administrator can change these settings himself.
It will be appreciated that the invention allows for extremely versatile updating and
reporting from learning management databases. The translators, the threads, and the
SAOs are particularly advantageous for versatility and also robustness.
The invention is not limited to the embodiments described but may be varied in
construction and detail.
Claims (3)
1. A tracking system (1) comprising means for receiving course player update data, and for writing the update data to a learning management database, 3 characterised in that, the system (1) comprises database interface means for communication (24) with a plurality of learning management databases (10), 10 the system comprises a tracking engine (20) comprising means for managing uni—directional communication for asynchronous course player data updates, and for managing bi-directional communication for synchronous course player data updates and responses, and 15 the system further comprises a plurality of translation modules (22), each comprising means for translating from a player language to a common engine language, and vice-versa.
2. A system as claimed in claim 1, wherein each translation module is an object 2() instantiated at start-up.
3. A system as claimed in claims 1 or 2, wherein the system (1) further comprises a common interface (21) comprising means for interfacing with all players (4), and for polling by routing a received message to all translation modules (22); td U1 wherein each translation module (22) comprises means for parsing received messages and, if it can translate the message, indicating as such; and wherein the common interface (21) comprises means for activating a translation module (22) which responds positively. A system as claimed in claim 3, wherein the common interface (21) comprises means for polling the translation modules (22) according to a pre-set file. A system as claimed in claims 3 or 4, wherein the common interface comprises means for receiving translated messages from the translation modules. A system as claimed in any preceding claim, wherein the engine (20) comprises means for managing a queue (31), and for establishing threads for input and output to the queue. A system as claimed in claim 6, wherein the engine (20) comprises means for assuming that a data update message is synchronous unless the message indicates otherwise. A system as claimed in any preceding claim, wherein the database interface means (24) comprises a schema access object (SAO) associated with each learning management database (10). A system as claimed in claim 8, wherein all SAOs (24) have the same exposed interface to the tracking engine (20). A system as claimed in claims 8 or 9, wherein the system (1) comprises means for both pre—setting and for subsequently modifying associations between players and SAOs. A system as claimed in any of claims 8 to l0, wherein the system (1) comprises pooling means, comprising means for creating a number of instances of each SAO and for reusing the instances. A system as claimed in claim ll, wherein the pooling means comprises a manager comprising means for managing a pool of SAOs, for determining a free SAO if one exists, for putting a requesting thread in a sleep state if an instance is temporarily unavailable, and for instructing a new set of SAO instances to be created. A system as claimed in claim 12, wherein the system (1) comprises means for determining during initialisation a connection string to be passed to an SAO instance to indicate the database (10) to be opened. A system as claimed in claims 12 or 13, wherein the manager comprises means for re-initialising a pooled SAO instance if it operates incorrectly. A system as claimed in any of claims 5 to 13, wherein the tracking engine (20) comprises means for maintaining an input thread (30) between the common interface (21) and the queue (31). A system as claimed in any of claims 6 to 14, wherein the tracking engine (20) comprises means for maintaining a plurality of database-side threads (32) for routing messages from the queue (31) to the database interface means (24). A system as claimed in claim 16, wherein each database-side thread (32) comprises means for waiting for a response from the database interface means (24), and for directly routing received responses to a relevant translation module (22) for translation and for receiving translated responses back from the translation modules. A system as claimed in claim 17, wherein each database-side thread (32) comprises means for directly routing a translated response to an originating player. A system as claimed in any of claims 16 to 18, wherein the engine (20) comprises means for maintaining each database-side thread (32) in an active state or a sleep state. A system as claimed in claim 19, wherein the engine (20) comprises means for switching a database—side thread (32) to an active state in response to the input thread request. A system as claimed in any preceding claim, wherein the engine (20) comprises means for writing the contents of the queue to a log file when shutting down unexpectedly, and for automatically searching for a log file upon start-up. A system as claimed in any of claims 3 to 21, wherein the common interface (21) comprises a time-out function comprising means for terminating a player connection upon expiry of a pre—set time period. A system as claimed in any preceding claim, wherein the database interface means comprises a time-out function comprising means for terminating a learning management database (10) connection upon expiry of a pre-set time period. A method of operation of a tracking system for receiving course player update data, and for writing the update data to a learning management database, the method comprising the steps of: a database interface means of the system communicating with a plurality of learning management databases (10), a tracking engine (20) of the system managing uni-directional communication for asynchronous course player data updates, and managing bi—directional communication for synchronous course player data updates and responses, and a plurality of translation modules (22) of the system, each translating from a player language to a common engine language, and Vice-Versa. A computer program product comprising software code for performing the steps of the method of claim 24 when executing on a digital computer. Student Browsers Learning Management DB5 84098
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
IE2001/1030A IE84098B1 (en) | 2001-11-29 | Tracking of computer based training courses |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
IEIRELAND30/11/20002000/0973 | |||
IE20000973 | 2000-11-30 | ||
IE2001/1030A IE84098B1 (en) | 2001-11-29 | Tracking of computer based training courses |
Publications (2)
Publication Number | Publication Date |
---|---|
IE20011030A1 IE20011030A1 (en) | 2002-07-10 |
IE84098B1 true IE84098B1 (en) | 2005-12-29 |
Family
ID=
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP0956687B1 (en) | Web request broker controlling multiple processes | |
EP1025507B1 (en) | Combined internet and data access system | |
US6785380B2 (en) | Network-centric self-administered call center with intelligent mobile agent terminals | |
EP0860966B1 (en) | Distributed network computing system, and data exchange apparatus | |
EP0667693B1 (en) | Network arrangement for glassware forming system | |
US7930362B2 (en) | Techniques for delivering personalized content with a real-time routing network | |
US20020038346A1 (en) | Method for screen image sharing | |
US5857201A (en) | Enterprise connectivity to handheld devices | |
CA2440835A1 (en) | Application synchronisation | |
EP1198102B1 (en) | Extendable provisioning mechanism for a service gateway | |
US6269378B1 (en) | Method and apparatus for providing a name service with an apparently synchronous interface | |
US7739389B2 (en) | Providing web services from a service environment with a gateway | |
US20030120782A1 (en) | Method and computer system for client server inter process communication | |
US6985891B2 (en) | Tracking of computer based training courses | |
IE84098B1 (en) | Tracking of computer based training courses | |
US20040107244A1 (en) | Scalable and intelligent network platform for distributed system | |
Cisco | Cisco Customer Response Applications Error Codes | |
JP4703859B2 (en) | Method for setting up data communication by means of communication, and program module and means therefor | |
US7103675B1 (en) | Multiplexed request and reply packets | |
US20030005105A1 (en) | Method and apparatus for a common management software systems | |
US7116764B1 (en) | Network interface unit having an embedded services processor | |
US20030061257A1 (en) | Multithreaded universal daemon for network data exchanges | |
JPH0511995A (en) | Method and device for automatically determining software module capability |