ThingWorx Erweiterbarkeit > Erweiterungen > Remote-Zugriff > RAClientLinker-Widget verwenden
RAClientLinker-Widget verwenden
Die ThingWorx Remote Access Extension (RAE) enthält das Widget RAClientLinker, mit dem Sie Ihre eigene Benutzeroberfläche unter Verwendung von ThingWorx Mashup Builder erstellen können. Dieses Widget ermöglicht das Starten einer Remotesitzung, wofür der Client gestartet bzw. geprüft wird, ob der Client auf dem System des Benutzers installiert ist. Es wird vorausgesetzt, dass Sie mit Mashup Builder vertraut sind, über die entsprechende Lizenz für die Anwendung verfügen und wissen, wie Sie die Anwendung verwenden. In diesem Thema steht das Widget im Mittelpunkt.
Dieses Thema enthält die folgenden Abschnitte:
Das RAClientLinker Widget
Widgets ermöglichen das Erstellen von Mashups mit vorgefertigten Funktionen. Das RAClientLinker-Widget stellt hierbei keine Ausnahme dar. Es besitzt Eigenschaften, die allen Widgets gemeinsam sind, sowie Eigenschaften speziell für das Erstellen von Remotesitzungen für Edge-Geräte, die sich derzeit im Status isReporting befinden. Beachten Sie, dass die Dinge, die die Edge-Geräte darstellen, die RemoteAccessible-Dingform implementieren müssen.
Einzelheiten zur Verwendung von Mashup Builder und Widgets finden Sie in der Dokumentation zu ThingWorx Mashup Builder.
Das RAClientLinker-Widget kann für alle Typen von Remote-Zugriffssitzungen verwendet werden. Die Eigenschaft RemoteEndpoint des Widgets muss mit einem gültigen Wert verbunden werden. In der Regel erfolgt dies durch Binden der Eigenschaft an eine vom Dienst GetRemoteAccessibleEndpoints in der Dingform RemoteAccessProvider zurückgegebene Zeile.
Beim Entwickeln eines Mashups muss der Dienst StartSession bei Verwendung des RAClientLinker-Widgets nicht aufgerufen werden. Es müssen lediglich die Eigenschaften ThingName, RemoteEndpoint und ProviderConfig für das Widget festgelegt werden. Diese werden dann an den Dienst StartSession weitergegeben. ProviderConfig ist eine JSON-Eigenschaft und speziell für den verwendeten RemoteAccessProvider-Typ formatiert, entweder das ThingWorxInternalRemoteAccessProvider-Ding für ThingWorx AlwaysOn-Agenten wie WS EMS oder das GASRemoteAccessProvider-Ding für Axeda eMessage-Agenten.
Widget zu einem Mashup hinzufügen
Durch Importieren der ThingWorx Remote Access Extension (RAE) in ThingWorx Platform steht das Widget in der IDE-Ansicht von Mashup Builder als RemoteAccessClientLinker zur Verfügung, wie nachfolgend gezeigt:
Von hier können Sie eine Instanz des Widgets in Ihr Mashup ziehen. Beachten Sie, dass das Widget, obwohl es in der IDE-Benutzeroberfläche angezeigt wird, zur Laufzeit nicht im tatsächlichen Mashup gerendert wird. Ähnlich wie bei einem Widget Ausdruck sehen Sie Folgendes im Mashup:
Nachdem Sie das Widget in das Mashup gezogen haben, können Sie es auswählen, verschieben und bindbare Elemente darauf ziehen, um die zugehörigen Eigenschaften und Dienste zu verbinden. Wo sich das Widget im Mashup befindet, ist für seine Funktion irrelevant.
Ding auswählen und Sitzung starten
Um es Benutzern zu ermöglichen, ein Ding zur Laufzeit auszuwählen und dann eine Sitzung über das Widget zu starten, führen Sie die folgenden Schritte aus:
1. Fügen Sie ein EntityPicker-Widget zum Mashup hinzu, damit Benutzer ein Ding zur Laufzeit auswählen können.
2. Binden Sie den Inhalt des EntityPicker-Widgets an die ThingName-Eigenschaft im RAClientLinker-Widget. Fügen Sie im EntityPicker-Widget eine ausgehende Datenbindung zum RAClientLinker-Widget hinzu. Stellen Sie sicher, dass die Dinge, die für die Benutzer sichtbar sind, die Dingform RemoteAccessible implementieren. Zur Laufzeit wird der Dingname, den der Benutzer im EntityPicker-Widget auswählt, an das RAClientLinker-Widget übergeben.
3. Suchen Sie als Nächstes die Eigenschaft RemoteEndpoint. Diese Eigenschaft ist erforderlich, um eine Sitzung zu starten, und bezieht sich im Allgemeinen auf die Anwendung auf dem Remotegerät, mit dem Sie versuchen, eine Sitzung zu starten. Binden Sie diese Eigenschaft an einen Wert, der von einem anderen Widget abgeleitet wurde. Dieser Wert muss mit dem Wert name eines Endpunkts vom Dienst GetRemoteAccessibleEndpoints auf dem Ding übereinstimmen.
4. Bei der Eigenschaft ProviderConfig des Widgets handelt es sich um zusätzliche anbieterspezifische Eigenschaften, die erforderlich sind oder vom RemoteAccessProvider (GAS oder ThingWorx Internal) verwendet werden, der die Sitzung ermöglicht. Ob diese Eigenschaft optional ist, hängt vom Anbieter ab. Diese Eigenschaft wird als JSON-Blob dargestellt und sollte als Ausgabe eines Ausdruck-Widget oder etwas Ähnlichem gebunden werden, das einen JSON-Block aus anderen Mashup-Eingaben einbauen kann.
5. Die Eigenschaft SessionId kann sowohl nach innen als auch nach außen gebunden werden. Dies erlaubt es Ihnen, eine Sitzungs-ID, die bereits vorhanden ist, nach innen zu binden oder nach außen, falls das Widget zuvor eine Sitzung gestartet hat. Wird die Sitzungs-ID von einem anderen Ort nach innen gebunden, so hat diese Sitzungs-ID Vorrang und das Widget versucht nicht, eine neue Sitzung zu starten. Sie können diese Sitzungs-ID verwenden, um den Client zu starten, wenn bereits eine Sitzung vorhanden ist oder um die Sitzungs-ID anderswo bereitzustellen. Beides ist hilfreich für das Implementieren von Logik für Wiederholungsversuche.
6. Sobald die Eigenschaften festgelegt wurden, können Sie die Sitzung starten, indem Sie den Dienst LaunchClient aufrufen:
Der Dienst LaunchClient führt die folgenden Aktionen aus:
a. Startet die Sitzung.
b. Versucht, den Remote Access Client (RAC) zu starten.
c. Erkennt, ob der RAC erfolgreich gestartet wurde.
Starten des Client
Das RAClientLinker-Widget löst mehrere Ereignisse als Teil des LaunchClient-Diensts aus:
SessionCreated – Wird ausgelöst, wenn die Sitzung begonnen hat und das Widget versucht, den Client mit der erstellten Sitzung zu starten.
AwaitingLaunch – Wird ausgelöst, nachdem der Client einen Startversuch unternommen hat.
ClientLaunched – Wird ausgelöst, wenn das Widget feststellt, dass der Client erfolgreich gestartet wurde. Verwenden Sie dieses Ereignis, um anzugeben, dass die Sitzung und der Client erfolgreich gestartet wurden.
ClientNotInstalled – Wird ausgelöst, wenn das Widget feststellt, dass der Client nicht erfolgreich gestartet wurde. Dieses Ereignis gibt nur an, dass der Client keine Rückverbindung zu ThingWorx Platform hergestellt hat. Die Sitzung wurde gestartet und wird möglicherweise aufgrund von Inaktivität mit einem Timeout beendet.
Erkennen, ob der Client installiert ist
Das RAClientLinker-Widget erkennt, ob der Client installiert ist, indem es nach dem Starten auf seinen "Rückruf" (Callback) an die Plattform wartet. Wird dieser Rückruf erkannt, so kann das Widget eindeutig identifizieren, dass der Client beim Benutzer installiert ist. Wenn der Client nicht innerhalb eines konfigurierten Timeout-Zeitraums zurückruft, kann das Widget relativ sicher davon ausgehen, dass der Benutzer den Client nicht installiert hat oder dass der Client Probleme beim Herstellen einer Verbindung zur Plattform hat.
Dieser Timeout-Zeitraum ist auf der RemoteAccessSubsystem-Konfigurationsseite konfigurierbar. Der Standardwert ist 10 Sekunden. Bevor Sie diesen Wert ändern, sollten Sie bedenken, dass das Ereignis ClientNotInstalled nicht ausgelöst wird, bis dieser Timeout-Zeitraum verstrichen ist. Eine zu hohe Einstellung kann zu langen Wartezeiten führen, bevor Feedback bereitgestellt wird. Hier ist der relevante Teil der Konfigurationsseite des Untersystems:
Benutzerseitiger (lokaler) Server
Beim Herstellen einer Verbindung zu einer Remote-Sitzung stellen alle verfügbaren Remote-Zugriffsimplementierungen einen Server bereit, der für den Rechner des Benutzers lokal ist. Der Remote Access Client benachrichtigt Benutzer über einen verfügbaren lokalen Port, mit dem sie den von ihnen für diese Sitzung verwendeten Anwendungs-Client verbinden können, z.B. SSH oder VNC (Desktop). Um zu verhindern, dass jemand von außerhalb des Rechners des Benutzers auf diesen Server zugreift (z.B. wenn Zugriff auf die IP-Adresse des Benutzerrechners des Benutzers bestand), überwacht der Client-seitige Server nur die Loopback-Schnittstelle des lokalen Rechners. Dies bedeutet, dass jeder Versuch, eine Verbindung zu diesem Server über die IP-Adresse des Rechners herzustellen, fehlschlägt. Alle Verbindungen müssen zu einer Loopback-Adresse (127.0.0.1) hergestellt werden.
* 
ThingWorx Edge Tunneln unterstützt keine Protokolle, die sich mehrmals mit dem Edge verbinden und davon trennen, wie beim Verwenden eines Browsers für den Zugriff auf einen HTTP-Server. Beispielsweise löst RDP Trennungen aus, wenn Sie die falschen Anmeldeinformationen verwenden und wenn Sie sich mit einem RDP-Server verbinden, dem Ihr Rechner nicht vertraut. Für möglichst effektives Arbeiten stellen Sie sicher, dass Sie das Verbindungs- und Trennverhalten des Protokolls verstehen, das Sie weiterleiten möchten.
* 
Verwenden Sie nicht localhost anstelle der IP-Adresse 127.0.0.1, da diese möglicherweise in eine IPv6-Adresse aufgelöst wird, die nicht ordnungsgemäß funktioniert.