基本的なカスタマイズ > ユーザーインタフェースのカスタマイズ > ウィザードの作成 > MVC コントローラを使用した外部リクエスト処理 > ソリューション
  
ソリューション
外部システムから、Windchill システムへの POST リクエストを行い、作成したオブジェクト ID を戻す新しい HTML ウィンドウを開きます。
前提となる知識
このプロセスを適用するには、次のことを理解している必要があります。
HTML フォームを使用した基本的な Web 開発
シーケンス図
ユーザーが外部システムから新しいウィンドウを使用して登録された Windchill システムを使用して、外部システム内の作成操作をクリックします。
登録された MVC コントローラへの呼び出しが URL によってリダイレクトされ、登録された JSP が呼び出されて、リクエストした操作とオブジェクトタイプの create JSP がリダイレクトされます。
Windchill オブジェクトが作成されると、キーが "UFID" とした JSON オブジェクトが呼び出し元に返されます。フォームメソッドは "GET" です。外部 URL は URL の照会パラメータを読み取る必要があります。
詳細については、後述のシナリオ例を参照してください。
制限事項
操作を呼び出した後、Windchill トランザクションブロック内で操作が実行されます。
コールバック値は "GET" フォームメソッドをサポートするブラウザによって異なります。
外部システムからの Windchill サーバーの呼び出し
前提条件
1. 外部システムには選択したオブジェクトとコンテキストオブジェクトの情報が使用できます。
2. URL を起動したユーザーは操作へのアクセス権を持ちます。
3. コンテキストオブジェクトの入力フィールドはエンコードされており、コンテナのサンプルコンテキストオブジェクトは "OR%3Awt.pdmlink.PDMLinkProduct%3A38380" のようになっています。
複数選択オブジェクトの処理
ウィザードテーブルの作成でシードデータに入力する複数選択オブジェクトを処理するには、各オブジェクトが区切り記号 "___" で区切られた "soidarray" という名前の非表示フィールドを使用します。上述の例では、「新規変更リクエスト」ウィザードにより変更適用オブジェクトのテーブルに 2 つの部品が入力されています。フォームデータを投稿する際には、オブジェクト ID をエンコードしてはなりません。
考慮事項
フレームウィンドウへのアクセス権を得るには、完全ドメイン名が必要です。Windchill システム URL を完全ドメイン URL に置き換えます。たとえば、サーバーがドメイン ptcnet.ptc.com にある場合、URL には
http://windchillServer.ptcnet.ptc.com/<web-app>/ptc1/externalRequest?
oid="+contextOid+"&action=create&type=changeRequest;"
(
http://myserver/Windchill...
ではない) を含まなければなりません。
承認されない操作の処理
無効な操作またはタイプが指定された場合、またはユーザーが Windchill サーバーで操作を実行するアクセス権を持たない場合は、外部システムユーザーにエラーが表示されます。
外部システムへのコールバック
Windchill にリクエストが送信された場合、externalURL という名前のフォームフィールドに外部 URL 情報が入ったものが表示されます。次の例を参照してください。情報が何もない場合、リクエストの送信時に Windchill オブジェクトが作成されますが新しく作成されたオブジェクトのフィードバックはありません。データは "GET" フォームメソッドを使用して戻ります。
作成された Windchill オブジェクトへのアクセス
外部 URL は、呼び出し元のサーバーで "UFID" として新しいパラメータに付与されます。"UFID" パラメータを読み取って値を取得することができます。値は JSON フォーマットであり、値はキー "UFID" を使用してアクセスできます。
前提条件
1. ユーザーは外部 URL に用意された必要な資格情報で承認されています。
2. 外部 URL の入力フィールドには、name=externalURL が入力されています。外部 URL の例は、次のとおりです。http://<externalURL>/<host-name>/ptc1/externalTest
OID の複数作成の処理
外部コールバック機能はリクエスト操作に対して複数の OID の返却をサポートしています。JSONObject キー、"UFID" には UFID の値が含まれています。
外部システムからのサンプルコード
HTML の例では、Windchill システムへの外部からのリクエストが許可されます。
<html>
<script>
launchJCAAction = function() {
var winName = "create";
var theForm = document.getElementById('JCAActionForm');
theForm.target = winName;
var contextOid = document.getElementById('contextOid').value;
theForm.action = "http://windchillHostname:port/<web-app>
/ptc1/externalRequest?oid=OR%3Awt.pdmlink.PDMLinkProduct
%3A36226&action=create&type=changeRequest";
var props = '';
var actionwin = window.open("", winName, props);
theForm.submit();
}
</script>
<body>
<form method="post" id="JCAActionForm"
onSubmit="return false;" target="_self">
Container Oid: <input type="text" id="contextOid"/>
External URL: <input type="text" name="externalURL"
value="http://externalHostname:port/<web-app>"/>
<input type="hidden" name="soidarray" value="OR:wt.part.WTPart:90740___
OR:wt.part.WTPart:547106"/>
<button onclick='launchJCAAction();'>Launch Action</button>
</form>
</body>
</html>
作成した Windchill オブジェクトの UFID の例は次のとおりです。VR:wt.change2.WTChangeRequest2:188695:651462062-1309389210495-20458805-192-14-253-132@<windchillServer>