Wiki-Quellcode von Schnittstelle ONYX Reporter

Version 310.1 von Carina Enke am 15.10.2018

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