Version 396.1 von Carina Enke am 13.02.2024

Zeige letzte Bearbeiter
1 {{layout}}
2 {{layout-section ac:type="two_right_sidebar"}}
3 {{layout-cell}}
4
5 {{/layout-cell}}
6
7 {{layout-cell}}
8 {{panel borderColor="#ddd" bgColor="#f0f0f0" borderStyle="solid" title="Inhalt"}}
9 {{toc start="2"/}}
10 {{/panel}}
11 {{/layout-cell}}
12 {{/layout-section}}
13
14 {{layout-section ac:type="single"}}
15 {{layout-cell}}
16 == Allgemeines ==
17
18 Über die Schnittstelle zum ONYX WebReporter erfolgt jede Kommunikation zwischen dem LMS und dem Reporter. Dazu erfolgt eine Reihe von Aufrufen:
19
20 (% class="wrapped" %)
21 |(((
22 armSite
23 )))|(((
24 Anmeldung von Folgerequests beim ONYX Reporter.
25 )))
26 |(((
27 initiateSite
28 )))|(((
29 Initiiert die Reporter-Session (Übertragung des CPs).
30 )))
31 |(((
32 disarmSite
33 )))|(((
34 Freigabe von allen Reporter-Ressourcen für diese Session.
35 )))
36 |(((
37 getResultValues
38 )))|(((
39 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.
40 )))
41 |(% colspan="1" %)(% colspan="1" %)
42 (((
43 getResultVariables
44 )))|(% colspan="1" %)(% colspan="1" %)
45 (((
46 Gibt alle bzw. die angeforderten Outcome-Variablen für den Test zurück. Hierfür sind kein armSite, initiateSite oder disarmSite erforderlich.
47 )))
48
49 == Anmeldung des LMS ==
50
51 {{code language="xml" title="Anmeldung des LMS"}}
52 @WebMethod(operationName = „armSite")
53 public String armSite(
54 @WebParam(name = „version") final Integer version,
55 @WebParam(name = „userId") final String userId,
56 @WebParam(name = „optionalRole") final Integer role,
57 @WebParam(name = „secretToShare") final String secretToShare,
58 @WebParam(name = „optionalUserLastName") final String userLastName,
59 @WebParam(name = „optionalUserFirstName") final String userFirstName,
60 @WebParam(name = „additionalParams") final HashMapWrapper additionalParams) {
61 }
62 {{/code}}
63
64 === Parameter armSite ===
65
66 (% class="wrapped" %)
67 |(((
68 version
69 )))|(((
70 Angefragte Version: 1
71 )))
72 |(((
73 userId
74 )))|(((
75 UserId des anfragenden Reporter-Benutzers
76 )))
77 |(((
78 optionalRole
79 )))|(((
80 Optional. Rolle des Benutzers. 0 = Student, 1= Tutor
81 )))
82 |(((
83 secretToShare
84 )))|(((
85 Ein geheimer String, mit dessen Hilfe Server und Client ihre Kommunikation verschlüsseln. Muss bei jeder weiteren Kommunikation gleich bleiben.
86 )))
87 |(((
88 optionalUserLastName
89 )))|(((
90 Optional. Nachname des Benutzers.
91 )))
92 |(% colspan="1" %)(% colspan="1" %)
93 (((
94 optionalUserFirstName
95 )))|(% colspan="1" %)(% colspan="1" %)
96 (((
97 Optional. Vorname des Benutzers.
98 )))
99 |(% colspan="1" %)(% colspan="1" %)
100 (((
101 additionalParams
102 )))|(% colspan="1" %)(% colspan="1" %)
103 (((
104 Reserved for future use.
105 )))
106
107 === ReturnValue armSite ===
108
109 (% class="wrapped" %)
110 |(((
111 String
112 )))|(((
113 Session ID, mit der alle weiteren Reporter-Aufrufe gekennzeichnet werden müssen.
114 )))
115
116 == Initialisierung durch LMS ==
117
118 {{code language="xml" title="Initialisierung durch LMS"}}
119 @WebMethod(operationName = „initiateSite")
120 public String initiateSite(
121 @WebParam(name = „version") final Integer version,
122 @WebParam(name = „sessionId") final String sessionId,
123 @WebParam(name = „secretToShare") final String secretToShare,
124 @WebParam(name = „students") final ArrayList<ResultsForStudent> students,
125 @WebParam(name = „optionalContentPackage") final byte[] contentPackage,
126 @WebParam(name = „additionalParams") final HashMapWrapper additionalParams) {
127 }
128 {{/code}}
129
130 === Parameter initiateSite ===
131
132 (% class="wrapped" %)
133 |(((
134 version
135 )))|(((
136 Angefragte Version: 1
137 )))
138 |(% colspan="1" %)(% colspan="1" %)
139 (((
140 sessionId
141 )))|(% colspan="1" %)(% colspan="1" %)
142 (((
143 SessionId, wie von armSite zurück geliefert.
144 )))
145 |(((
146 secretToShare
147 )))|(((
148 Ein geheimer String, mit dessen Hilfe Server und Client ihre Kommunikation verschlüsseln. Muss bei jeder weiteren Kommunikation gleich bleiben.
149 )))
150 |(((
151 students
152 )))|(((
153 Liste der Studenten mit ihren Resultaten. Siehe unten.
154 )))
155 |(((
156 optionalContentPackage
157 )))|(((
158 Optional. Content Package (gezippt) als Byte-Array.
159 )))
160 |(((
161 additionalParams
162 )))|(((
163 Reserved for future use.
164 )))
165
166 === ReturnValue initiateSite ===
167
168 (% class="wrapped" %)
169 |(((
170 String
171 )))|(((
172 Absolute URL der Reporter-Seite für den IFrame. Dieser ist vom LMS durch die folgenden URL-Parameter anzureichern:
173
174 * sid: Session ID, wie von armSite zurück gegeben
175 * uid: Student ID, wie in initiateSite beim Reporter angemeldet
176 )))
177
178 {{code language="xml"}}
179 public class ResultsForStudent {
180    private String studentId = „";
181    private String firstname = „";
182    private String lastname = „";
183    private String groupname = „";
184    private String tutorname = „";
185    private File contentFile = null;
186    private byte[] resultsFile = null;
187 }
188 {{/code}}
189
190 == Abmeldung durch LMS ==
191
192
193 {{code}}
194 @WebMethod(operationName = „disarmSite")
195 public Boolean disarmSite(
196 @WebParam(name = „version") final Integer version,
197 @WebParam(name = „sessionId") final String sessionId,
198 @WebParam(name = „secretToShare") final String secretToShare,
199 @WebParam(name = „additionalParams") final HashMapWrapper additionalParams) {
200 }
201 {{/code}}
202
203
204 === Parameter disarmSite ===
205
206 (% class="wrapped" %)
207 |(((
208 version
209 )))|(((
210 Angefragte Version: 1
211 )))
212 |(% colspan="1" %)(% colspan="1" %)
213 (((
214 sessionId
215 )))|(% colspan="1" %)(% colspan="1" %)
216 (((
217 SessionId, wie von armSite zurück geliefert.
218 )))
219 |(((
220 secretToShare
221 )))|(((
222 Ein geheimer String, mit dessen Hilfe Server und Client ihre Kommunikation verschlüsseln. Muss bei jeder weiteren Kommunikation gleich bleiben.
223 )))
224 |(((
225 additionalParams
226 )))|(((
227 Reserved for future use.
228 )))
229
230 === ReturnValue disarmSite ===
231
232 (% class="wrapped" %)
233 |(((
234 Boolean
235 )))|(((
236 True bei Erfolg, sonst false.
237 )))
238
239 == Abfrage von Lernerresultaten durch LMS ==
240
241 {{code language="xml" title="Abfrage von Lernerresultaten durch LMS"}}
242  @WebMethod(operationName = „getResultValues")
243 public HashMapWrapper getResultValues(
244 @WebParam(name = „version") final Integer version,
245 @WebParam(name = „sessionId") final String sessionId,
246 @WebParam(name = „secretToShare") final String secretToShare,
247 @WebParam(name = „requestedValues") final HashMap<String, String>
248 requestedValues,
249 @WebParam(name = „additionalParams") final HashMapWrapper additionalParams) {
250 }
251 {{/code}}
252
253 === Parameter getResultValues ===
254
255 (% class="wrapped" %)
256 |(((
257 version
258 )))|(((
259 Angefragte Version: 1
260 )))
261 |(% colspan="1" %)(% colspan="1" %)
262 (((
263 sessionId
264 )))|(% colspan="1" %)(% colspan="1" %)
265 (((
266 SessionId, wie von armSite zurück geliefert.
267 )))
268 |(((
269 secretToShare
270 )))|(((
271 Ein geheimer String, mit dessen Hilfe Server und Client ihre Kommunikation verschlüsseln. Muss bei jeder weiteren Kommunikation gleich bleiben.
272 )))
273 |(((
274 requestedValues
275 )))|(((
276 Kann leer sein, dann werden alle Result-Variables zurück geliefert. Sind Keys enthalten, so kommen nur diese zurück.
277 )))
278 |(((
279 additionalParams
280 )))|(((
281 Reserved for future use.
282 )))
283
284 === ReturnValue getResultValues ===
285
286 (% class="wrapped" %)
287 |(((
288 HashMap<String, String>
289 )))|(((
290 Map der Result-Variables, Key ist der Variablenname, Value der jeweilige Wert (HashMap ist gewrappt)
291 )))
292
293 == Abfrage von Ergebnisvariablen durch LMS ==
294
295 {{code language="xml" title="Abfrage von Ergebnisvariablen durch LMS"}}
296  @WebMethod(operationName = „getResultVariables")
297 public HashMapWrapper getResultVariables(
298 @WebParam(name = „version") final Integer version,
299 @WebParam(name = „contentPackage") final byte[] contentPackage,
300 @WebParam(name = „additionalParams") final HashMapWrapper additionalParams) {
301 }
302 {{/code}}
303
304 === Parameter getResultVariables ===
305
306 (% class="wrapped" %)
307 |(((
308 version
309 )))|(((
310 Angefragte Version: 1
311 )))
312 |(((
313 contentPackage
314 )))|(((
315 Content Package (gezippt) als Byte-Array.
316 )))
317 |(((
318 additionalParams
319 )))|(((
320 Reserved for future use.
321 )))
322
323 === ReturnValue getResultVariables ===
324
325 (% class="wrapped" %)
326 |(((
327 HashMap<String, String>
328 )))|(((
329 Map der Result-Variables, Key ist der Variablenname, Value der jeweilige Wert (HashMap ist gewrappt)
330 )))
331
332 == Wrapper ==
333
334 Da die Übertragung von Maps und Listen über JAX-WS Probleme machen kann, müssen diese gewrappt werden.
335
336 === Wrapper für die HashMap<String, String> ===
337
338 HashMapWrapper.java:
339
340 [[image:attach:HashMapWrapperjava.png||data-xwiki-image-style="img-screen" data-xwiki-image-style-border="true" width="500"]]
341
342 [[image:attach:HashMapWrapperjava2.png||data-xwiki-image-style="img-screen" data-xwiki-image-style-border="true" width="500"]]
343
344 === Wrapper für die ArrayList<ResultsForStudent> ===
345
346 ResultsForStudentsWrapper.java:
347
348 [[image:attach:ResultsForStudentsWrapperjava.png||data-xwiki-image-style="img-screen" data-xwiki-image-style-border="true" width="500"]]
349 {{/layout-cell}}
350 {{/layout-section}}
351
352 {{layout-section ac:type="two_right_sidebar"}}
353 {{layout-cell}}
354
355 {{/layout-cell}}
356
357 {{layout-cell}}
358 ====== relevante Links: ======
359
360 * [[ONYX Player Interface>>doc:ONYX.Systeminformationen.Schnittstelle ONYX Player.WebHome]]
361 {{/layout-cell}}
362 {{/layout-section}}
363 {{/layout}}
364
365 {{layout}}
366 {{layout-section ac:type="two_equal"}}
367 {{layout-cell}}
368 ====== Content: ======
369
370 {{toc start="2"/}}
371 {{/layout-cell}}
372
373 {{layout-cell}}
374
375 {{/layout-cell}}
376 {{/layout-section}}
377
378 {{layout-section ac:type="single"}}
379 {{layout-cell}}
380 == General information ==
381
382 The API to the ONYX WebReporter enables the communication between the LMS and the Reporter. Therefore, a couple of commands will be executed:
383
384 |(((
385 armSite
386 )))|(((
387 Registration of sequence requests at the ONYX Reporter
388 )))
389 |(((
390 initiateSite
391 )))|(((
392 Initiates the Reporter session (transmission of the CP).
393 )))
394 |(((
395 disarmSite
396 )))|(((
397 Release of all Reporter resources for this session.
398 )))
399 |(((
400 getResultValues
401 )))|(((
402 Returns all (requested) results for the test. Condition: There is only one student in the list transmitted with initiateSite.
403 )))
404 |(% colspan="1" %)(% colspan="1" %)
405 (((
406 getResultVariables
407 )))|(% colspan="1" %)(% colspan="1" %)
408 (((
409 Returns all (requested) outcome variables for the test. No armSite, initiateSite, or disarmSite is required.
410 )))
411
412 == Login through the LMS ==
413
414 {{code language="xml" title="Login through the LMS"}}
415 @WebMethod(operationName = „armSite")
416 public String armSite(
417 @WebParam(name = „version") final Integer version,
418 @WebParam(name = „userId") final String userId,
419 @WebParam(name = „optionalRole") final Integer role,
420 @WebParam(name = „secretToShare") final String secretToShare,
421 @WebParam(name = „optionalUserLastName") final String userLastName,
422 @WebParam(name = „optionalUserFirstName") final String userFirstName,
423 @WebParam(name = „additionalParams") final HashMapWrapper additionalParams) {
424 }
425 {{/code}}
426
427 === Parameter armSite ===
428
429 |(((
430 version
431 )))|(((
432 Requested version: 1
433 )))
434 |(((
435 userId
436 )))|(((
437 UserId of the requested Reporter user
438 )))
439 |(((
440 optionalRole
441 )))|(((
442 Optional. User role. 0 = student, 1 = tutor
443 )))
444 |(((
445 secretToShare
446 )))|(((
447 A secret string that allows the server and client to encrypt their communication. Must remain the same for any further communication.
448 )))
449 |(((
450 optionalUserLastName
451 )))|(((
452 Optional. Last name of the user.
453 )))
454 |(% colspan="1" %)(% colspan="1" %)
455 (((
456 optionalUserFirstName
457 )))|(% colspan="1" %)(% colspan="1" %)
458 (((
459 Optional. First name of the user.
460 )))
461 |(% colspan="1" %)(% colspan="1" %)
462 (((
463 additionalParams
464 )))|(% colspan="1" %)(% colspan="1" %)
465 (((
466 Reserved for future use.
467 )))
468
469 === ReturnValue armSite ===
470
471 |(((
472 String
473 )))|(((
474 Session ID which has to be used to mark any other Reporter call.
475 )))
476
477 == Initialisation through LMS ==
478
479 {{code language="xml" title="Initialisation through LMS"}}
480 @WebMethod(operationName = „initiateSite")
481 public String initiateSite(
482 @WebParam(name = „version") final Integer version,
483 @WebParam(name = „sessionId") final String sessionId,
484 @WebParam(name = „secretToShare") final String secretToShare,
485 @WebParam(name = „students") final ArrayList<ResultsForStudent> students,
486 @WebParam(name = „optionalContentPackage") final byte[] contentPackage,
487 @WebParam(name = „additionalParams") final HashMapWrapper additionalParams) {
488 }
489 {{/code}}
490
491 === Parameter initiateSite ===
492
493 |(((
494 version
495 )))|(((
496 Requested version: 1
497 )))
498 |(% colspan="1" %)(% colspan="1" %)
499 (((
500 sessionId
501 )))|(% colspan="1" %)(% colspan="1" %)
502 (((
503 SessionId, as returned by armSite.
504 )))
505 |(((
506 secretToShare
507 )))|(((
508 A secret string that allows the server and client to encrypt their communication. Must remain the same for any further communication.
509 )))
510 |(((
511 students
512 )))|(((
513 List of students and their results. See below.
514 )))
515 |(((
516 optionalContentPackage
517 )))|(((
518 Optional. Content package (zipped) as byte array.
519 )))
520 |(((
521 additionalParams
522 )))|(((
523 Reserved for future use.
524 )))
525
526 === ReturnValue initiateSite ===
527
528 |(((
529 String
530 )))|(((
531 Absolute URL of the Reporter site for the IFrame. The URL has to be amended by the LMS with the following URL parameters:
532
533 * sid: Session ID, as returned by armSite
534 * (((
535 uid: Student ID, as registrated in the initiateSite at the ONYX Reporter
536 )))
537 )))
538
539 {{code language="xml"}}
540 public class ResultsForStudent {
541    private String studentId = „";
542    private String firstname = „";
543    private String lastname = „";
544    private String groupname = „";
545    private String tutorname = „";
546    private File contentFile = null;
547    private byte[] resultsFile = null;
548 }
549 {{/code}}
550
551 == Logout through the LMS ==
552
553
554 {{code}}
555 @WebMethod(operationName = „disarmSite")
556 public Boolean disarmSite(
557 @WebParam(name = „version") final Integer version,
558 @WebParam(name = „sessionId") final String sessionId,
559 @WebParam(name = „secretToShare") final String secretToShare,
560 @WebParam(name = „additionalParams") final HashMapWrapper additionalParams) {
561 }
562 {{/code}}
563
564
565 === Parameter disarmSite ===
566
567 |(((
568 version
569 )))|(((
570 Requested version: 1
571 )))
572 |(% colspan="1" %)(% colspan="1" %)
573 (((
574 sessionId
575 )))|(% colspan="1" %)(% colspan="1" %)
576 (((
577 SessionId, as returned by armSite.
578 )))
579 |(((
580 secretToShare
581 )))|(((
582 A secret string that allows the server and client to encrypt their communication. Must remain the same for any further communication.
583 )))
584 |(((
585 additionalParams
586 )))|(((
587 Reserved for future use.
588 )))
589
590 === ReturnValue disarmSite ===
591
592 |(((
593 Boolean
594 )))|(((
595 True in the case of success, otherwise false.
596 )))
597
598 == Request of learner results through the LMS ==
599
600 {{code language="xml" title="Request of learner results through the LMS"}}
601  @WebMethod(operationName = „getResultValues")
602 public HashMapWrapper getResultValues(
603 @WebParam(name = „version") final Integer version,
604 @WebParam(name = „sessionId") final String sessionId,
605 @WebParam(name = „secretToShare") final String secretToShare,
606 @WebParam(name = „requestedValues") final HashMap<String, String>
607 requestedValues,
608 @WebParam(name = „additionalParams") final HashMapWrapper additionalParams) {
609 }
610 {{/code}}
611
612 === Parameter getResultValues ===
613
614 |(((
615 version
616 )))|(((
617 Requested version: 1
618 )))
619 |(% colspan="1" %)(% colspan="1" %)
620 (((
621 sessionId
622 )))|(% colspan="1" %)(% colspan="1" %)
623 (((
624 SessionId, as returned by armSite.
625 )))
626 |(((
627 secretToShare
628 )))|(((
629 A secret string that allows the server and client to encrypt their communication. Must remain the same for any further communication.
630 )))
631 |(((
632 requestedValues
633 )))|(((
634 Can be empty, in which case all result variables are returned. If keys are included, only the keys will be returned.
635 )))
636 |(((
637 additionalParams
638 )))|(((
639 Reserved for future use.
640 )))
641
642 === ReturnValue getResultValues ===
643
644 |(((
645 HashMap<String, String>
646 )))|(((
647 Map of result variables, key is the variable name, value is the respective variable's value (HashMap is wrapped)
648 )))
649
650 == Request of result variables through the LMS ==
651
652 {{code language="xml" title="Request of result variables through the LMS"}}
653  @WebMethod(operationName = „getResultVariables")
654 public HashMapWrapper getResultVariables(
655 @WebParam(name = „version") final Integer version,
656 @WebParam(name = „contentPackage") final byte[] contentPackage,
657 @WebParam(name = „additionalParams") final HashMapWrapper additionalParams) {
658 }
659 {{/code}}
660
661 === Parameter getResultVariables ===
662
663 |(((
664 version
665 )))|(((
666 Requested version: 1
667 )))
668 |(((
669 contentPackage
670 )))|(((
671 Content package (zipped) as byte array.
672 )))
673 |(((
674 additionalParams
675 )))|(((
676 Reserved for future use.
677 )))
678
679 === ReturnValue getResultVariables ===
680
681 |(((
682 HashMap<String, String>
683 )))|(((
684 Map of result variables, key is the variable name, value is the respective variable's value (HashMap is wrapped)
685 )))
686
687 == Wrapper ==
688
689 Since the transmission of maps and lists via JAX-WS can cause problems, they have to be wrapped.
690
691 === Wrapper for HashMap<String, String> ===
692
693 HashMapWrapper.java:
694
695 [[image:attach:HashMapWrapperjava.png||data-xwiki-image-style="img-screen" data-xwiki-image-style-border="true" width="500"]]
696
697 [[image:attach:HashMapWrapperjava2.png||data-xwiki-image-style="img-screen" data-xwiki-image-style-border="true" width="500"]]
698
699 === Wrapper for the ArrayList<ResultsForStudent> ===
700
701 ResultsForStudentsWrapper.java:
702
703 [[image:attach:ResultsForStudentsWrapperjava.png||data-xwiki-image-style="img-screen" data-xwiki-image-style-border="true" width="500"]]
704 {{/layout-cell}}
705 {{/layout-section}}
706 {{/layout}}