使用 RAClientLinker 小器具
ThingWorx Remote Access Extension (RAE) 包括的 RAClientLinker 小器具可用於使用 ThingWorx Mashup Builder 建構您自己的使用者介面。此小器具可協助啟動遠端工作階段、啟動用戶端及偵測用戶端是否安裝在使用者的系統中。本主題假設您熟悉 Mashup Builder、擁有此應用程式的相應授權,以及您已瞭解其使用方法。此處的關注點在於小器具。
本主題包含下列各節:
RAClientLinker Widget。
小器具可讓您建立具有預先封裝功能的混搭。RAClientLinker 小器具也不例外。它具有與所有小器具通用的內容,以及專用於目前處於 isReporting 狀態的 Edge 裝置建立遠端工作階段的內容。請注意,代表 Edge 裝置的物件必須實行 RemoteAccessible 物形式。
RAClientLinker 小器具適用於所有類型的遠端存取工作階段。您可以自行決定將此小器具的 RemoteEndpoint 內容連結至有效值。通常,您可以將內容繫結至 GetRemoteAccessibleEndpoints 服務傳回的列,此服務位於 RemoteAccessProvider 物形式上。
開發混搭時,不需要在使用 RAClientLinker 小器具時呼叫 StartSession 服務。只需設定此小器具的 ThingName、RemoteEndpoint 與 ProviderConfig 内容,即可將它們傳遞至 StartSession 服務。ProviderConfig 內容是 JSON,專門格式化為要使用的 RemoteAccessProvider 類型,無論是 ThingWorx AlwaysOn 代理程式 (例如 WS EMS) 的 ThingWorxInternalRemoteAccessProvider 物件,還是 Axeda eMessage 代理程式的 GASRemoteAccessProvider 物件
新增小器具至混搭
透過將 ThingWorx Remote Access Extension (RAE) 匯入 ThingWorx Platform,即可在 Mashup Builder 的 IDE 檢視中找到作為 RemoteAccessClientLinker 的小器具,如下所示:
可以從此處將此小器具的實例拖曳到混搭中。請注意,雖然它顯示在 IDE UI 中,但在執行時間並未在實際混搭中呈現此小器具。與運算式小器具類似,您會在混搭中看到下列內容:
將其拖曳至混搭之後,您可以選取它、將其四處移動,並將可繫結元素拖曳至小器具,以連接其內容與服務。小器具在混搭中的位置與其功能無關。
選取物件並啟動會話
欲讓使用者可在執行時間選取物件,然後透過小器具啟動工作階段,請遵循下列步驟:
1. 將 EntityPicker 小器具新增至混搭以允許使用者在執行時間選取物件。
2. 將 EntityPicker 小器具的內容繫結至 RAClientLinker 小器具上的 ThingName 內容。在 EntityPicker 小器具上選取以將輸出資料繫結新增至 RAClientLinker 小器具。請確保使用者可見的物件都實行 RemoteAccessible 物形式。在執行時間,使用者在 EntityPicker 小器具中選取的物件名稱會傳遞至 RAClientLinker 小器具。
3. 下一步是找出 RemoteEndpoint 內容。此內容是啟動會話所必需的,且通常是指您嘗試啟動會話之遠端裝置上的應用程式。將此内容繫結至從其他小器具衍生的值。此值必須與物件上 name 服務之端點的 GetRemoteAccessibleEndpoints 值相符。
4. 此小器具的 ProviderConfig 內容表示用於加速工作階段之 RemoteAccessProvider (GAS 或 ThingWorx Internal) 所需或所使用之任何附加的提供者特定內容。此內容是否為選用取決於提供者。此內容表示為 JSON blob,且應繫結為運算式小器具的輸出,或可從其他混搭輸入中組裝 JSON 區塊的類似內容。
5. 在 SessionId 內容可繫結的情況下,可讓您在小器具先前啟動工作階段時,繫結於已存在的工作階段 ID 中,或從中進行繫結。如果工作階段 ID 從別處繫結,則此工作階段 ID 優先,並且此小器具不會嘗試啟動新工作階段。如果工作階段已存在,則可以使用此工作階段 ID 來啟動用戶端,或提供工作階段 ID 至別處。這兩種情況在實行重試邏輯時很有用。
6. 設定內容之後,可以透過呼叫 LaunchClient 服務來啟動工作階段:
LaunchClient 服務會執行下列動作:
a. 啟動會話。
b. 嘗試啟動 Remote Access Client (RAC)。
c. 偵測 RAC 是否成功啟動。
處理用戶端啟動
RAClientLinker 小器具會觸發數個事件作為 LaunchClient 服務的一部份:
• SessionCreated - 當工作階段已啟動且此小器具即將嘗試使用建立的工作階段啟動用戶端時,即會觸發。
• AwaitingLaunch - 用戶端嘗試啟動之後即會觸發。
• ClientLaunched - 如果此小器具偵測到用戶端已成功啟動,則會觸發。使用此事件來指示工作階段已成功啟動,且用戶端已成功啟動。
• ClientNotInstalled - 如果此小器具偵測到用戶端未啟動,則會觸發。此事件僅指示用戶端未連接回 ThingWorx Platform。工作階段已啟動,可能因不活動而逾時。
檢測用戶端是否已安裝
RAClientLinker 小器具會偵測用戶端是否已透過在啟動平台之後「回叫」此平台來完成安裝。透過偵測此回叫,此小器具可以確定使用者是否已安裝用戶端。如果用戶端未在配置的逾時期間之內回叫,小器具可以合理確認使用者未安裝用戶端,或用戶端在連接至平台時發生問題。
此逾時期限可在 RemoteAccessSubsystem 組態頁上進行配置。預設值為 10 秒。在變更此值之前,請記住,ClientNotInstalled 事件不會觸發,直到此整個逾時期限到期為止。將值設定得太高可能會導致在提供回饋前等候較長時間。以下是子系統組態頁的相關部份:
使用者端 (本機) 伺服器
作為連接遠端工作階段的一部份,所有可用的遠端存取實行都會提供使用者電腦本機的伺服器。遠端存取用戶端會通知使用者有可用的本機埠,他們可將其正使用的任何應用程式用戶端 (例如 SSH 或 VNC (桌面)) 連接至此埠。欲防止任何人從使用者電腦外部存取此伺服器 (例如,如果他們有權存取使用者電腦的 IP 位址),用戶端伺服器只會接聽本機電腦的迴路介面。這表示使用電腦 IP 連接至該伺服器的任何嘗試都不會起作用。所有連線都必須連至迴路位址 (127.0.0.1)。
| ThingWorx Edge 通道不支援與 Edge 建立多個連線及與其中斷連線的通訊協定,例如使用瀏覽器來存取 HTTP 伺服器。例如,當您使用錯誤的認證,並連線至不受電腦信任的 RDP 伺服器時,RDP 觸發器會中斷連線。為了達到最好的效果,請務必瞭解您正嘗試轉發之通訊協定的連線與中斷連線行為。 |
| 請勿使用 localhost IP 位址而非 IP 位址,127.0.0.1因為它可能會解析為無法正確運作的 IPv6 位址。 |