高度なカスタマイズ > ODataConnector を使用した Info*Engine サービスの実行
  
ODataConnector を使用した Info*Engine サービスの実行
ThingWorx Navigate では、Info*Engine タスクを実行するための OData コネクタがサポートされるようになりました。カスタムタスクで Info*Engine タスクを使用する場合には、OData コネクタを使用してこれらの Info*Engine タスクを呼び出しできます。
OData コネクタは Windchill の以下のリリースをサポートしています。
11.1 M010 以降
11.1 F000 CPS03 以降
11.0 M030 CPS09 以降
* 
ThingWorx Navigate の今後のリリースでは、Windchill コネクタの ptc-windchill-connector および ptc-windchill-swagger-connector のサポートは廃止予定です。古い Windchill コネクタをサポートしていないリリースにスムーズに遷移するには、このトピックの手順を使用して、ptc-windchill-OData-connector による Info*Engine タスクを今すぐ実行してください。
OData コネクタを使用して Info*Engine タスクを実行するには、まず、Info*Engine ドメインの Windchill REST サービスに接続するように ptc-windchill-OData-connector を設定します。これで Windchill REST サービスを使用して Info*Engine タスクを実行できます。
* 
OData コネクタを設定して Info*Engine タスクを実行する場合には、必ず ThingWorx「新規 Composer」ユーザーインタフェースを使用してください。
Integration Runtime を設定する必要があります。詳細については、Integration Runtime のセットアップを参照してください。
1. ThingWorx Composer で、ptc-windchill-OData-connector をサーチし、それを開きます。「一般情報」ページが開きます。
2. 「コンフィギュレーション」をクリックします。「コンフィギュレーション」ページが開きます。
コンフィギュレーションは、認証方法 (シングルサインオン、Windchill 認証、または固定認証) によって異なります。
シングルサインオン
シングルサインオンが設定されている場合は、次の手順を実行します。
1. 「ジェネリックコネクタ接続の設定」「認証タイプ」で、SSO を選択します。
2. 「認証サーバー ID」に、sso-settings.json で指定した AuthorizationServerSettingsID の値を入力します (「PingFed1」など)。
3. 「認証サーバーの範囲設定」で、「追加」をクリックします。「AuthorizationServerScopesSettings」ウィンドウが開きます。
4. 「範囲」に、PingFederate に登録した Windchill 範囲を入力します (「WINDCHILL_READ」など)。
5. 「追加」をクリックします。
6. 「CSRF 設定」で、次の情報を入力します。
「CSRF Get リクエストの相対 URL」 - servlet/odata
「CSRF トークン名」 - CSRF_NONCE
7. 「OData Connector 接続の設定」「追加」をクリックします。「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 Connector 接続の設定」「追加」をクリックします。「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 Connector 接続の設定」「追加」をクリックします。「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_ホーム>/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 を参照してください。