Wiki-Quellcode von Schnittstelle ONYX Reporter

Version 238.1 von Carina Enke am 19.05.2020

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