Wiki-Quellcode von Schnittstelle ONYX Reporter

Version 378.1 von sandra_riediger am 15.12.2014

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