物件服務
物件服務是「物件」可以執行的功能。每個「物件」可以有一個或多個服務。您可以在「物形式」、「物範本」或「物件」層級定義服務。針對資料庫「物件」的查詢寫入就是簡單的服務範例。
有多個適用於服務的實行方法或處理常式,視您使用的範本而定。指令集、SQL 查詢與 SQL 指令都是處理常式的範例。可能有其他的處理常式可以使用,視「物件」(例如,邊「物件」) 的特定功能而定。
特定的使用者定義服務實行作業將透過伺服器端指令集 (目前透過 SQL 或 JavaScript) 完成;而後可透過 URL、具備 REST 用戶端支援的應用程式或 ThingWorx 中的另一個服務呼叫該服務。
建立新服務時,您可以定義輸入內容及輸出。輸入與輸出可以是任何標準的 ThingWorx 資料類型。還可以在服務定義中定義每個服務的個別執行時間權限。服務並非必須有輸入或輸出,但通常有其中一種,或兩種兼具。例如,如果您要傳送遞送排程至卡車,卡車「物件」的服務可能具有名為 DeliverySchedule 和 XML 類型的輸入。服務可接受內傳資料,而且會將卡車的物件內容傳送到「資料表」。
如果您想直接將輸出傳送至混搭小器具,您應該選擇 INFOTABLE 基礎類型的輸出。如果您選擇輸出資料負載,則需要選取「資料形式」。「資料形式」會告知應用程式將傳回哪些欄和資料類型,以便彩現資料。您可以依需求選擇任何數目的輸入。例如,您的輸出可以是針對將資料傳回混搭的資料庫所執行的 SQL 查詢。服務會自動成為 ThingWorx 應用程式伺服器的 REST API 的一部份 (與模型中的所有定義相同)。您可以從另一個應用程式或混搭透過 REST 呼叫來使用服務。
呼叫服務時,如果您將輸出定義為資料負載,則可以使用 URL 呼叫及 Accept URL 參數,要求提供 HTML、JSON 或 XML 的結果集 (如需詳細資訊,請參閱 REST API)。由於具備這樣的彈性和可供混搭環境輕鬆使用資料負載的能力,建議您以此格式作為預設設計圖樣。可視需要解決特定需求 (如 XML 結構描述輸出)。
定義好指令集功能介面之後,按一下服務的「處理常式」欄即可實行服務。這會開啟至服務實行編輯器。在實行編輯器中選擇處理常式 (SQL 查詢或指令集)。SQL 查詢僅適用於資料庫實體。「指令集」實行是伺服器端 Java 指令集引擎。
使用 SQL 查詢,在用於來源資料庫的語法中寫入查詢。如同對現有陳述式的處理方式一樣,您也可以將服務輸入作為查詢中的參數。如果輸出內容是資料負載,您就不需要操作結果。查詢結果會顯示在資料負載中,並可作為輸出使用。
* 
在「資料庫物件」的 SQL 查詢中使用 '--[[]]' and '[[]]' 格式的字串並不是一個好的作法。而是如果您要在 SQL 查詢服務中使用字串,應將該字串插入到「輸入」變數中,然後再將該值傳入 SQL。
指令集處理常式是一種功能強大的方法,可供您使用伺服器上的所有資料、物件和服務,以滿足應用程式的需求。您可以從模型中的其他物件執行計算和查閱、呼叫服務或存取內容。選取指令集作為處理常式後,系統即會顯示幾個指令集協助程式。您可以看到目前編輯中物件的指令集、內容、服務和事件的輸入。您可連按兩下,將這些輸入內容貼到指令集視窗中。您也可以瀏覽系統中任何其他實體的內容、服務和事件。您可以組合服務內的所有模型功能。
* 
如果從網頁或 URL 呼叫指令集,系統會在已登入使用者的前後關聯中執行指令集。如果使用者對指令集中任何實體的執行時間服務、內容或事件沒有存取權限,指令集可能會失敗。
指令集實行編輯器也有語法協助程式和程式碼片段,可簡化指令碼的建立流程。
* 
依預設,ThingWorx 平台上的指令集逾時設定為 30 秒。如果指令集的執行時間較長,則平台會終止執行。ThingWorx 管理員可以在 platform-settings.json 檔案的基本設定部份中配置指令集逾時。
非同步服務
非同步服務會在自身的執行緒中建立並執行。非同步服務不能具有傳回值,因為當您執行非同步服務時,不需使用平台即可建立並執行執行緒。如果從另一個服務內呼叫非同步服務,則呼叫服務不會等待非同步服務執行完成。這對於執行時間冗長的服務來說非常有用,尤其是負責更新背景資料結構或執行系統維護工作的計時器上的服務。
如果您在「新服務」編輯器中選擇非同步,「佇列呼叫」選項會顯示出來。此選項適用於遠端繫結服務,此服務會在遠端物件未連線時,將服務執行作業排入佇列。ThingWorx 會在服務執行時,將每次嘗試排入佇列,然後在「遠端物件」再次連線時依序執行。
服務的統計資訊
「使用率子系統」會收集因逾時而終止之 JavaScript 服務的指標。如需詳細資訊,請參閱因逾時而終止之指令集執行的相關統計資訊
從物範本與物形式執行服務
在 ThingWorx 9.3 及更新版本中,您可以從物範本與物形式執行服務。在這些情況下,您可能需要指定要從中執行服務的實行物件。在「執行」標籤的「實行物件」欄位中,選取物件。
這是否有幫助?