高级自定义 > 使用 OData 连接器执行 Info*Engine 服务
  
使用 OData 连接器执行 Info*Engine 服务
ThingWorx Navigate 现在支持 OData 连接器以执行 Info*Engine 任务。如果您的自定义任务使用 Info*Engine 任务,则使用 OData 连接器调用这些 Info*Engine 任务。
有关 Windchill OData 连接器支持的最新信息,请查看 ThingWorx Navigate 平台支持一览表
* 
在即将发布的 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 任务。
* 
您必须配置 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 设置下,单击“添加”AuthorizationServerScopesSettings 窗口随即打开。
4. “范围”下,输入在 PingFederate 中注册的 Windchill 范围,例如 WINDCHILL_READ
5. 单击“添加”
6. “CSRF 设置”下,输入以下信息:
“CSRF Get 请求相对 URL”- servlet/odata
“CSRF 标记名称”- CSRF_NONCE
7. “OData 连接器连接设置”下,单击“添加”ODataConnectorConnectionSettings 窗口随即打开。
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 Get 请求相对 URL”- servlet/odata
“CSRF 标记名称”- CSRF_NONCE
3. “OData 连接器连接设置”下,单击“添加”ODataConnectorConnectionSettings 窗口随即打开。
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 Get 请求相对 URL”- servlet/odata
“CSRF 标记名称”- CSRF_NONCE
3. “OData 连接器连接设置”下,单击“添加”ODataConnectorConnectionSettings 窗口随即打开。
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. 单击“执行”。您应该会收到消息:“成功”。您的服务已成功执行。
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 - JSON 数组,包含带有 GroupnameElement 属性的 JSON 对象。
8. 要执行另一个 Info*Engine 任务,请重复步骤 1-7。
* 
OData 连接器端点在 ThingWorx Navigate 上可能不会如预期一样工作,因此,您可能需要进行更改。有关针对 Windchill 数据配置 OData 服务的详细信息和说明,请参阅 Windchill REST Services User’s Guide (《Windchill REST 服务的用户指南》)。