進階自訂 > 使用 ODataConnector 執行 Info*Engine 服務
  
使用 ODataConnector 執行 Info*Engine 服務
ThingWorx Navigate 現在支援 OData 連接器來執行 Info*Engine 任務。如果您的自訂任務使用 Info*Engine 任務,則使用 OData 連接器呼叫這些 Info*Engine 任務。
OData 連接器支援以下 Windchill 發行版本:
11.1 M010 或更新版本
11.1 F000 CPS03 或更新版本
11.0 M030 CPS09 或更新版本
* 
ThingWorx Navigate 的未來發行版本中,將取代對 Windchill 連接器、ptc-windchill-connectorptc-windchill-swagger-connector 的支援。針對平滑轉移至不支援舊 Windchill 連接器的發行版本,現在使用本主題中的步驟,透過 ptc-windchill-OData-connector 執行 Info*Engine 任務。
欲使用 OData 連接器執行 Info*Engine 任務,請首先將 ptc-windchill-OData-connector 配置為連線至 Info*Engine 網域 Windchill REST 服務。然後,您可以使用 Windchill REST 服務執行 Info*Engine 任務。
* 
確保使用 ThingWorx 中的新 Composer 使用者介面以配置 OData 連接器及執行 Info*Engine 任務。
您必須配置 Integration Runtime。如需詳細資訊,請參閱設定 Integration Runtime
1. ThingWorx Composer 中搜尋 ptc-windchill-OData-connector,然後將其開啟。「一般資訊」頁即會開啟。
2. 按一下「組態」「組態」頁即會開啟。
您的組態取決於您的驗證方法:單一登入、Windchill 驗證或固定驗證。
單一登入
如果您已配置單一登入,請遵循下列步驟:
1. 「泛用連線器連線設定」下的「驗證類型」中,選取 SSO
2. 「授權伺服器 ID」底下,輸入您在 sso-settings.json 中提供的 AuthorizationServerSettingsID 值,例如 PingFed1
3. Authorization Server Scope 下按一下「新增」「授權伺服器範圍設定」視窗隨即開啟。
4. 「範圍」底下,輸入您在 PingFederate 中註冊的 Windchill 範圍,例如 WINDCHILL_READ
5. 按一下「新增」
6. 「CSRF 設定」下輸入以下資訊:
「CSRF 取得請求的相對 URL」 - servlet/odata
「CSRF 權杖名稱」 - CSRF_NONCE
7. 「OData 連線器連線設定」下,按一下「新增」「OData 連接器連線設定」視窗隨即開啟。
8. 「服務根相對 URL」下輸入 IE,然後按一下「新增」。如果您已新增服務根相對 URL,請跳至步驟 9。
9. 「HTTP 連接器連線設定」底下,輸入以下資訊:
「基礎 URL」 - Windchill URL。URL 的結尾必須為 /oauth/。使用此格式:
[https]://[Windchill Host]:[port]/[Windchill-web-app]/oauth/
此格式用於指定連線使用 OAuth 標準,並允許請求資源提供者中的資料。
「相對 URL」 - servlet/odata
不需要輸入使用者名稱與密碼。
10. 按一下「儲存」。OData 連接器現已配置為在單一登入環境中工作。
現在,跳過「執行 Info * Engine 任務」部份。
Windchill 驗證
如果您已配置 Windchill 驗證,請遵循下列步驟:
1. 「泛用連線器連線設定」下的「驗證類型」中,選取 None
2. 「CSRF 設定」下輸入以下資訊:
「CSRF 取得請求的相對 URL」 - servlet/odata
「CSRF 權杖名稱」 - CSRF_NONCE
3. 「OData 連線器連線設定」下,按一下「新增」「OData 連接器連線設定」視窗隨即開啟。
4. 「服務根相對 URL」下,輸入此值:
tw.friendly-name.ServiceRootReletive
如果您已新增服務根相對 URL,請跳至步驟 6。
5. 按一下「新增」
6. 「HTTP 連接器連線設定」底下,輸入以下資訊:
「基礎 URL」 - 從 ODataConnector 接收 Info*Engine 請求的 Windchill 伺服器。使用此格式:
[https]://[Windchill Host]:[port]/[Windchill-web-app]/sslClientAuth
「相對 URL」 - servlet/odata
「連線 URL」 - /servlet/WindchillGW/wt.httpgw.HTTPServer/ping
不需要輸入使用者名稱與密碼。
7. 按一下「儲存」
8. 按一下「服務」
9. 按一下 GetCustomerHeaderParameters
10. 按一下「編輯」
11. 在輸入中複製及貼上此指令集:

var sessionQueryParam = "wt.effectiveUid";
var Language = Resources["CurrentSessionInfo"].GetCurrentUserLanguage();
var params = {
infoTableName : "InfoTable",
dataShapeName : "NavigateCustomHeadersDataShape"
};
var result = Resources["InfoTableFunctions"].CreateInfoTableFromDataShape(params);
var CurrentUser = Resources["CurrentSessionInfo"].GetCurrentUser();
params = {
tableName: "GenericConnectorConnectionSettings" /* STRING */
};
var configTable = me.GetConfigurationTable(params);
var row = configTable.getRow(0);
var authType = row.getStringValue("AuthenticationType");
if("None".equals(authType)) {
var camelHttpQuery = sessionQueryParam + "=" + CurrentUser;
row = {"Accept-Language" : Language, "CamelHttpQuery": camelHttpQuery };
} else {
row = {"Accept-Language" : Language };
}
result.AddRow(row);
12. 按一下「儲存並繼續」,然後按一下「完成」
13. 按一下「儲存」
現在,跳過「執行 Info * Engine 任務」部份。
固定驗證
如果您已配置固定驗證,請依照下列步驟配置 OData 連接器:
1. 「泛用連線器連線設定」下的「驗證類型」中,選取 Fixed
2. 「CSRF 設定」下輸入以下資訊:
「CSRF 取得請求的相對 URL」 - servlet/odata
「CSRF 權杖名稱」 - CSRF_NONCE
3. 「OData 連線器連線設定」下,按一下「新增」「OData 連接器連線設定」視窗隨即開啟。
4. 「服務根相對 URL」下輸入 IE,然後按一下「新增」。如果您已新增服務根相對 URL,請跳至步驟 5。
5. 「HTTP 連接器連線設定」底下,輸入以下資訊:
「使用者名稱」- 您的 Windchill 管理員使用者名稱
「密碼」 - 您的 Windchill 管理員密碼
「基礎 URL」 - 從 ODataConnector 接收 Info*Engine 請求的 Windchill 伺服器。使用此格式:
[https]://[Windchill Host]:[port]/[Windchill-web-app]
「相對 URL」 - servlet/odata
6. 按一下「儲存」。OData 連接器現已配置為在固定驗證環境中工作。
繼續進行「執行 Info * Engine 任務」部份。
執行 Info * Engine 任務
現在,使用下列服務執行 Info*Engine 任務:
1. 按一下「服務」「服務」頁即會開啟。
2. 針對 RefreshEndpointCache,按一下 「執行服務」視窗即會開啟。
3. 按一下「執行」。您將會收到訊息:Success。您的服務已成功執行。
4. 按一下「完成」
5. 針對 InvokeIETask,按一下
6. 「輸入」視窗中,新增下列 JSON 格式的資訊:
Task - Info*Engine 任務的 XML 檔案。此檔案位於此處:<Windchill 安裝>/<Windchill_Home>/tasks/
* 
請確定此任務已啟用以待執行。欲執行此操作,請確認下列標示顯示在 XML 檔案的開頭:
<%@page language="java" access="http"%>
Params - (選用) 包含可作為參數傳遞到 Info*Engine 任務之名稱值對的 JSON 陣列。
範例:
{
"Task": "wt/federation/delegates/windchill/QueryObjects.xml",
"Params": [
{ "Name": "type", "Value": "wt.part.WTPart" },
{ "Name": "where", "Value": "name=SOME_PART_NAME" }
]
}
7. 按一下「執行」以啟動 Info*Engine 任務。服務的輸出為 JSON 格式,包含下列內容:
@odata.context - 有效負載的前後關聯 URL。
Value - 包含具有 GroupnameElement 內容的 JSON 物件之 JSON 陣列。
8. 欲執行其他 Info * Engine 任務,請重複步驟 1-7。
* 
OData 連接器的端點可能無法如預期在 ThingWorx Navigate 上正常運作,因此,您可能需要進行變更。如需有關針對 Windchill 資料配置 OData 服務的詳細資訊與指示,請參閱 Windchill REST Services User’s Guide (Windchill REST 服務使用者指南)。