08 Schnittstelle ONYX Reporter

Zuletzt geändert von Carina Enke am 13.02.2024

Allgemeines

Über die Schnittstelle zum ONYX WebReporter erfolgt jede Kommunikation zwischen dem LMS und dem Reporter. Dazu erfolgt eine Reihe von Aufrufen:

armSite

Anmeldung von Folgerequests beim ONYX Reporter.

initiateSite

Initiiert die Reporter-Session (Übertragung des CPs).

disarmSite

Freigabe von allen Reporter-Ressourcen für diese Session.

getResultValues

Gibt alle bzw. die angeforderten Resultate für den Test zurück. Voraussetzung: Es ist nur exakt ein Student in der bei initiateSite übertragenen Liste.

getResultVariables

Gibt alle bzw. die angeforderten Outcome-Variablen für den Test zurück. Hierfür sind kein armSite, initiateSite oder disarmSite erforderlich.

Anmeldung des LMS

Anmeldung des LMS
@WebMethod(operationName = „armSite")
public String armSite(
@WebParam(name = „version") final Integer version,
@WebParam(name = „userId") final String userId,
@WebParam(name = „optionalRole") final Integer role,
@WebParam(name = „secretToShare") final String secretToShare,
@WebParam(name = „optionalUserLastName") final String userLastName,
@WebParam(name = „optionalUserFirstName") final String userFirstName,
@WebParam(name = „additionalParams") final HashMapWrapper additionalParams) {
}

Parameter armSite

version

Angefragte Version: 1

userId

UserId des anfragenden Reporter-Benutzers

optionalRole

Optional. Rolle des Benutzers. 0 = Student, 1= Tutor

secretToShare

Ein geheimer String, mit dessen Hilfe Server und Client ihre Kommunikation verschlüsseln. Muss bei jeder weiteren Kommunikation gleich bleiben.

optionalUserLastName

Optional. Nachname des Benutzers.

optionalUserFirstName

Optional. Vorname des Benutzers.

additionalParams

Reserved for future use.

ReturnValue armSite

String

Session ID, mit der alle weiteren Reporter-Aufrufe gekennzeichnet werden müssen.

Initialisierung durch LMS

Initialisierung durch LMS
@WebMethod(operationName = „initiateSite")
public String initiateSite(
@WebParam(name = „version") final Integer version,
@WebParam(name = „sessionId") final String sessionId,
@WebParam(name = „secretToShare") final String secretToShare,
@WebParam(name = „students") final ArrayList<ResultsForStudent> students,
@WebParam(name = „optionalContentPackage") final byte[] contentPackage,
@WebParam(name = „additionalParams") final HashMapWrapper additionalParams) {
}

Parameter initiateSite

version

Angefragte Version: 1

sessionId

SessionId, wie von armSite zurück geliefert.

secretToShare

Ein geheimer String, mit dessen Hilfe Server und Client ihre Kommunikation verschlüsseln. Muss bei jeder weiteren Kommunikation gleich bleiben.

students

Liste der Studenten mit ihren Resultaten. Siehe unten.

optionalContentPackage

Optional. Content Package (gezippt) als Byte-Array.

additionalParams

Reserved for future use.

ReturnValue initiateSite

String

Absolute URL der Reporter-Seite für den IFrame. Dieser ist vom LMS durch die folgenden URL-Parameter anzureichern:

  • sid: Session ID, wie von armSite zurück gegeben
  • uid: Student ID, wie in initiateSite beim Reporter angemeldet
public class ResultsForStudent {
   private String studentId = „";
   private String firstname = „";
   private String lastname = „";
   private String groupname = „";
   private String tutorname = „";
   private File contentFile = null;
   private byte[] resultsFile = null;
}

Abmeldung durch LMS

@WebMethod(operationName = disarmSite")
public Boolean disarmSite(
@WebParam(name = „version"
) final Integer version,
@WebParam(name = sessionId") final String sessionId,
@WebParam(name = „secretToShare"
) final String secretToShare,
@WebParam(name = additionalParams") final HashMapWrapper additionalParams) {
}

Parameter disarmSite

version

Angefragte Version: 1

sessionId

SessionId, wie von armSite zurück geliefert.

secretToShare

Ein geheimer String, mit dessen Hilfe Server und Client ihre Kommunikation verschlüsseln. Muss bei jeder weiteren Kommunikation gleich bleiben.

additionalParams

Reserved for future use.

ReturnValue disarmSite

Boolean

True bei Erfolg, sonst false.

Abfrage von Lernerresultaten durch LMS

Abfrage von Lernerresultaten durch LMS
 @WebMethod(operationName = „getResultValues")
public HashMapWrapper getResultValues(
   @WebParam(name = „version") final Integer version,
   @WebParam(name = „sessionId") final String sessionId,
   @WebParam(name = „secretToShare") final String secretToShare,
   @WebParam(name = „requestedValues") final HashMap<String, String>
        requestedValues,
   @WebParam(name = „additionalParams") final HashMapWrapper additionalParams) {
}

Parameter getResultValues

version

Angefragte Version: 1

sessionId

SessionId, wie von armSite zurück geliefert.

secretToShare

Ein geheimer String, mit dessen Hilfe Server und Client ihre Kommunikation verschlüsseln. Muss bei jeder weiteren Kommunikation gleich bleiben.

requestedValues

Kann leer sein, dann werden alle Result-Variables zurück geliefert. Sind Keys enthalten, so kommen nur diese zurück.

additionalParams

Reserved for future use.

ReturnValue getResultValues

HashMap<String, String>

Map der Result-Variables, Key ist der Variablenname, Value der jeweilige Wert (HashMap ist gewrappt)

Abfrage von Ergebnisvariablen durch LMS

Abfrage von Ergebnisvariablen durch LMS
 @WebMethod(operationName = „getResultVariables")
public HashMapWrapper getResultVariables(
@WebParam(name = „version") final Integer version,
@WebParam(name = „contentPackage") final byte[] contentPackage,
@WebParam(name = „additionalParams") final HashMapWrapper additionalParams) {
}

Parameter getResultVariables

version

Angefragte Version: 1

contentPackage

Content Package (gezippt) als Byte-Array.

additionalParams

Reserved for future use.

ReturnValue getResultVariables

HashMap<String, String>

Map der Result-Variables, Key ist der Variablenname, Value der jeweilige Wert (HashMap ist gewrappt)

Wrapper

Da die Übertragung von Maps und Listen über JAX-WS Probleme machen kann, müssen diese gewrappt werden.

Wrapper für die HashMap<String, String>

HashMapWrapper.java:

HashMapWrapperjava.png

HashMapWrapperjava2.png

Wrapper für die ArrayList<ResultsForStudent>

ResultsForStudentsWrapper.java:

ResultsForStudentsWrapperjava.png