
Die Datenübertragung bei SilverlightIsland wird anhand eines Beispiels erkläutert. Bei dem Beispiel handelt es sich um ein mit dem Microsoft Visual Studio erstelltes Balkendiagramm, mit dem die Belegungsrate von Flugbuchungen visuell dargestellt werden kann. Das Balkendiagramm gibt Auskunft darüber, wieviele Sitzplätze einer Flugverbindung maximal verfügbar und wieviele davon noch frei sind. Aus einer Table in der Web Dynpro Anwendung kann der Benutzer eine Flugverbindung auswählen. Zu dieser wird dann die Belegungsrate angezeigt.
Das Beispiel befindet sich im System in der Web-Dynpro-Component DEMO_SILVERLIGHT_SEATS.
Sie finden die Silverlight-Projektdateien (von Microsoft Visual Studio) für dieses Beispiel als .zip Datei im MIME Repository im Ordner von DEMO_SILVERLIGHT_SEATS.
Ausgangspunkt ist bei diesem Beispiel eine XAP-Datei sowie Informationen über diese XAP-Datei, beispielsweise welche Variablen, Listen und Aktionen benötigt werden.
Die im Beispiel verwendete XAP-Datei erwartet ein Attribut mit Namen Flight und eine Datenquelle Seats mit den Attributen SeatsOcc und SeatsMax.
Achten Sie dabei auf Groß- und Kleinschreibung.
Damit die Microsoft Silverlight-Anwendung mit der Web Dynpro-Anwendung kommunizieren kann, müssen Sie die Web Dynpro Island Library for Silverlight Ihrem Projekt bekannt machen.
Dabei handelt es sich um die Datei WDSilverlightIslandLibrary.dll
Diese Datei befindet sich im MIME-Repository unter dem Pfad:
SAP/PUBLIC/BC/UR/nw7/SilverlightIslands/
Speichern Sie sich diese Datei so ab, dass Sie jederzeit Zugriff darauf haben, z.B. auf Ihrem lokalen Dateisystem Ihres Rechners.
Fügen Sie diese Datei in Microsoft Visual Studio unter References hinzu.
Im Microsoft Silverlight C#-Coding importieren Sie die Bibliothek an den Stellen, an denen Sie mit Silverlight-Islands programmieren möchten.
Im folgenden Beispiel-Coding ist das die Zeile using SAP;
Um die Datenübertragung zu Web Dynpro zu aktivieren, registrieren Sie in der Microsoft Silverlight-Anwendung die entsprechende Komponente über ein zuvor instantiiertes Objekt vom Typ Silverlight Island mit Hilfe der Methode register( <component_name>, <start_parameter>);
Die relevanten Teile, um eine Kommunikation mit Web Dynpro zu ermöglichen, sind im Beispiel markiert. Um die Kommunikation auszuführen werden noch entsprechende Attribute und Datenquellen benötigt.
Diese Variablen sollen von der Web-Dynpro-Applikation zu der Silverlight Island und umgekehrt in Form von gebundenen Variablen übergeben werden.
Der Zugriff auf ein Attribut der Datenquelle kann wie folgt aussehen:
In Ihrer Web-Dynpro-Anwendung liegt ein Context-Knoten vor, der wenigstens das Attribut FLIGHT und einen Unterknoten SEATS mit den folgenden Attributen besitzt:
SEATSOCC
SEATSMAX
Dies kann beispielsweise wie folgt aussehen:
Dieser Context-Knoten sollte vor dem Aufruf der SilverlightIsland gefüllt sein. Dazu können Sie beispielsweise eine Supply-Funktion verwenden.
Legen Sie das Layout fest.
Sie benötigen für jede XAP-Datei eine eigene Web-Dynpro-View, da eine SilverlightIsland immer der RootUIElementContainer einer View ist und dessen Eigenschaft source während der Lebensdauer der View nicht geändert werden kann. Daher gehen Sie folgendermaßen vor:
Wechseln Sie zu Ihrer View.
Ändern Sie den Typ des RootUIElementContainerüber Root-Element austauschen im Kontextmenü auf SilverlightIsland.
Da die XAP-Datei wie oben erläutert ein Attribut und eine Datenquelle mit wiederum 2 Attributen erwartet, legen Sie eine Eigenschaft ( GACProperties) mit Namen Flight an. Die ID dieser Eigenschaft hat weder Einfluss auf Web Dynpro, noch auf Silverlight. Sie dient lediglich dem Entwickler. Relevant sind name und value.
Binden Sie die Eigenschaft an das Context-Attribut FLIGHT.
Weiter aggregieren Sie eine GACDataSource, geben Sie ihr den Namen Seats und binden Sie diese an den Context-Knoten SEATS. Zu dieser Datenquelle legen Sie zwei Eigenschaften, SeatsOcc welche an das Context-Attribut SEATSOCC gebunden wird und SeatsMax, welche an das Context-Attribut SEATSMAX gebunden wird, an.
Dies kann dann folgendermaßen aussehen:
Achten Sie dabei immer auf Namensgleichheit.
Importieren Sie die XAP-Datei in das MIME-Repository.
Falls nur eine Component auf die XAP-Datei zugreift, speichern Sie diese Datei immer unterhalb dieser Component. Wenn auf eine XAP-Datei von mehrern Components zugegriffen werden soll, legen Sie sie in einem übergreifenden Ordner im MIME-Repository ab.
Beachten Sie dabei Kunden-Namensräume
Tragen Sie den Pfad auf die enstprechende XAP-Datei als Wert für die Eigenschaft source der SilverlightIsland ein:
Aktivieren Sie die Component und die View und starten Sie die Anwendung.
Sie bekommen die Anwendung im Browser oder im Business Client angezeigt, wie oben im Beispiel dargestellt.