配置 OData 连接器
Windchill Navigate 支持将 OData 连接器与 Windchill REST Services 配合使用,以访问自定义任务的数据。
|
|
自 Windchill Navigate 9.2 开始,移除了 WindchillConnector (ptc-windchill-demo-thing)。如需使用 OData 连接器,可通过更新自定义任务来实现。
|
先决条件
您必须先配置 ThingWorx Integration Runtime,之后才能使用 OData 连接器。通常,ThingWorx Integration Runtime 由 Windchill Navigate 安装工具在安装过程中进行配置。
创建连接器
可通过以下两种选项设置 OData 连接器:一种是创建连接器的新实例,另一种是使用预设连接器 ptc-windchill-OData-connector。根据您的用例,选取最佳选项。
对于使用 Info*Engine 任务的自定义任务,建议您使用预设 ptc-windchill-OData-connector。这是因为预设连接器上已提供 Info*Engine 服务。
要创建 OData 连接器的新实例,请执行以下步骤:
1. 在 ThingWorx Composer 中,浏览“建模”>“集成连接器”,然后单击“新建”。
2. 在“选取模板”窗口中,选择 ODataConnector 事物模板,然后单击“确定”。
3. 为连接器输入名称和项目。
现在,就可以开始配置连接器了。
配置连接器
1. 在 Composer 中,打开已创建的连接器,或搜索 ptc-windchill-OData-connector 并将其打开。随即打开“常规信息”页面。
2. 单击“配置”选项卡。随即打开“配置”页面。
您的配置取决于身份验证方法:单一登录、Windchill 身份验证还是固定身份验证。
单一登录
如果配置了单一登录,请执行以下步骤:
1. 在“通用连接器连接设置”下,针对“身份验证类型”,选择 OAuth (“会话用户”)。
2. 在“授权服务器 ID”下,输入 sso-settings.json 中提供的 AuthorizationServerSettingsID 值,例如 PingFed1。
3. 在“授权服务器范围设置”下,单击“添加”。随即打开 AuthorizationServerScopesSettings 窗口。
4. 在“范围”下,输入 PingFederate 中注册的 Windchill 范围,例如 WINDCHILL。
5. 单击“添加”。
6. 在“CSRF 设置”下,输入以下信息:
◦ “CSRF Get 请求相对 URL”- /servlet/odata
◦ “CSRF 标记名称”- CSRF_NONCE
7. 在“HTTP 连接器连接设置”下,输入以下信息:
◦ “基本 URL”- Windchill URL。URL 必须以 /oauth 结尾。使用以下格式:
[https]://[Windchill Host]:[port]/[Windchill-web-app]/oauth
此格式指定连接使用 OAuth 标准,并且启用对资源提供者中数据的请求。
◦ “相对 URL”- /servlet/odata
不需要输入用户名和密码。
8. 单击“保存”。OData 连接器现已配置为在单一登录环境中工作。
Windchill 身份验证
如果配置了 Windchill 身份验证,请执行以下步骤:
1. 在“通用连接器连接设置”下,针对“身份验证类型”,选择 None。
2. 在“CSRF 设置”下,输入以下信息:
◦ “CSRF Get 请求相对 URL”- /servlet/odata
◦ “CSRF 标记名称”- CSRF_NONCE
3. 在“HTTP 连接器连接设置”下,输入以下信息:
◦ “基本 URL”- 从 ODataConnector 接收 Info*Engine 请求的 Windchill 服务器。使用以下格式:
[https]://[Windchill Host]:[port]/[Windchill-web-app]/sslClientAuth
◦ “相对 URL”- /servlet/odata
◦ “连接 URL”- /servlet/WindchillGW/wt.httpgw.HTTPServer/ping
不需要输入用户名和密码。
4. 单击“保存”。
如果您使用的是预设 ptc-windchill-OData-connector 连接器,那么该连接器现已配置为在 Windchill 身份验证环境中工作。
如果创建了 OData 连接器的新实例,请执行以下附加步骤:
1. 单击“服务”选项卡。随即打开“服务”页面。
2. 查找
GetCustomHeaderParameters 服务,然后单击

,改写该服务。
3. 将以下代码粘贴到该服务中:
/*Get Current User Language*/
var Language = Resources["CurrentSessionInfo"].GetCurrentUserLanguage();
/*If it is undefined or "Default" use "en-US"*/
if (Language === undefined || Language === null || Language.length <= 0) {
Language = "en-US";
} else if (Language.indexOf("Default") !== -1) {
Language = Language.replace("Default", "en-US");
}
var params = {
infoTableName: "InfoTable",
dataShapeName: "PTC.WCODataCustomHeaderDataShape"
};
var result = Resources["InfoTableFunctions"].CreateInfoTableFromDataShape(params);
params = {
tableName: "GenericConnectorConnectionSettings" /* STRING */
};
var configTable = me.GetConfigurationTable(params);
var row = configTable.getRow(0);
var authType = row.getStringValue("AuthenticationType");
if ("None".equals(authType)) {
/*This is a case for Windchill as IDP connectivity type*/
var CurrentUser = Resources["CurrentSessionInfo"].GetCurrentUser();
/*Add authorization header having Base64 Encoded value of "username:emptypassword" */
var baseEncodedStr = base64EncodeString (CurrentUser + ':');
var authHeaderValue = "Basic " + baseEncodedStr;
row = {
"Accept-Language": Language,
"Authorization": authHeaderValue,
"Content-Type": "application/json",
"Prefer": "odata.maxpagesize=2000"
};
} else {
row = {
"Accept-Language": Language,
"Content-Type": "application/json",
"Prefer": "odata.maxpagesize=2000"
};
}
result.AddRow(row);
4. 单击“保存并继续”,保存该服务。然后单击“完成”。
5. 单击“保存”,保存该配置。OData 连接器现已配置为在 Windchill 身份验证环境中工作。
固定身份验证
如果配置了固定身份验证,请执行以下步骤:
1. 在“通用连接器连接设置”下,针对“身份验证类型”,选择 Fixed。
2. 在“CSRF 设置”下,输入以下信息:
◦ “CSRF Get 请求相对 URL”- /servlet/odata
◦ “CSRF 标记名称”- CSRF_NONCE
3. 在“HTTP 连接器连接设置”下,输入以下信息:
◦ “用户名”- Windchill 管理员的用户名
◦ “密码”- Windchill 管理员密码
◦ “基本 URL”- 从 ODataConnector 接收 Info*Engine 请求的 Windchill 服务器。使用以下格式:
[https]://[Windchill Host]:[port]/[Windchill-web-app]
◦ “相对 URL”- /servlet/odata
4. 单击“保存”。OData 连接器现已配置为在固定身份验证环境中工作。
公开连接器上的服务
配置完连接器后,接下来的步骤具体取决于您的自定义任务: