高度なカスタマイズ > Info*Engine ユーザーガイド > Info*Engine のタスク > Info*Engine タスクのオーサリング
  
Info*Engine タスクのオーサリング
* 
Info*Engine タスクのオーサリングでは、想定される呼び出し方をよく考慮する必要があります。Info*Engine タスクは、SAK を使用してほかの Java コードから実行 (たとえば Windchill のユーザーインタフェースまたはワークフローから実行)、SOAP クライアントから実行、あるいは IE サーブレットを介して生 HTTP クライアントから実行するなど、いくつかの方法があります。たとえば、Windchill ワークフローから呼び出されるべきタスクは、多くの場合、IE サーブレットを介して外部から実行されてはならないタスクです。タスクの実行方法を制御するには access 属性を使用します。詳細については、ディレクティブのセクション「ページディレクティブ」を参照してください。
情報の表示を直接行わないすべての Webject は、Info*Engine タスクに置くことができます。つまり、DSP タイプの Webject は JSP ページまたはカスタムアプリケーションにのみ存在します。以下の標準の Webject タイプは、Info*Engine タスクに含まれていることがあるので、Task Webject として知られています。
GRP タイプ (Group Webject)
OBJ タイプ (Query Webject)
ACT タイプ (Action Webject)
MGT タイプ (Management Webject)
MSG タイプ (Message Webject)
WES タイプ (Web Event Service Webject)
ADM タイプ (Administrative Webject)
さらに、JSP ページまたはスタンドアロンタスクのいずれかでカスタムソリューションを指定する External Custom Webject (EXT) を作成できます。詳細については、External Custom Webject の作成を参照してください。
タスクを、Info*Engine によって実行されるコマンドのスクリプトと考えます。タスクにある各コマンドは Webject です。Webject は、タスク内で定義されたシーケンスで実行されます。デフォルトでは、シーケンスは上から下の順になります。タスク内の Webject は、データベースの照会、さまざまな方法によるデータの結合および統合、スキーマトランザクションの実行、およびデータベース情報の作成および更新などの処理を実行します。タスクが正常に動作するためには、正しく構築された Webject が少なくとも 1 つ必要です。
以下の CreateGroup.xml タスクにより、個人の名前、住所、および電子メールアドレスから構成されるグループが作成されます。
<%@page language="java" session="false"%>
<%@taglib uri="http://www.ptc.com/infoengine/taglib/core" prefix="ie"%>
<!-- Create an internal Group -->
<ie:webject name="Create-Group" type="GRP">
  <ie:param name="ELEMENT"
data="NAME=Sam Johnson:ADDRESS=1234 Main St.:EMAIL=sjohnson@somewhere.com"/>
  <ie:param name="ELEMENT"
data="NAME=Harvy Anderson:ADDRESS=1234 Amber St.:EMAIL=handerson@somewhere.com"/>
  <ie:param name="ELEMENT"
data="NAME=James O'Connor:ADDRESS=775 Main St.:EMAIL="/>
  <ie:param name="ELEMENT"
data="NAME=Harvey Hampton:ADDRESS=775 Main St.:EMAIL=hhampton@somewhere.com"/>
  <ie:param name="CLASS" data="EmployeeData"/>
  <ie:param name="GROUP_OUT" data="createdgroup"/>
</ie:webject>
このタスクによって生成される createdgroup グループは、以下の表のようになります。
NAME
ADDRESS
EMAIL
Sam Johnson
1234 Main St.
sjohnson@somewhere.com
Harvy Anderson
1234 Amber St.
handerson@somewhere.com
James O’Connor
775 Main St.
Harvey Hampton
775 Main St.
hhampton@somewhere.com
James O'Connor の EMAIL 値は指定されなかったため、対応する表のセルが空になっています。
タスクの部品
Info*Engine の各スタンドアロンタスクには、以下の項目を含める必要があります。
標準の JSP page ディレクティブ。
Info*Engine タスクコンパイラは page ディレクティブの import 属性のみを使用しますが、その他のクラスが必要でない場合でも、タスクファイルの最初の行にこれを含めることは推奨される方法です。スクリプトレットで完全修飾クラス名を使用するか、スクリプトレットで使用されているクラスをインポートステートメントで指定する必要があります。
標準の JSP taglib ディレクティブ。Info*Engine スタンドアロンタスクが、タグライブラリに定義されているカスタムタグを使用することを宣言します。
このディレクティブは、ライブラリ内のカスタムタグを使用する任意の行の前に配置する必要があります。
Info*Engine カスタムタグ。反復使用する関数をカプセル化する一連のカスタム操作へのアクセスを提供します。
これらのカスタムタグにより、Webject を実行する構文と、タスクを構築するための構造が提供されます。
前の CreateGroup.xml のタスクの例には、以下の標準 JSP ディレクティブが含まれています。
<%@page language="java" session="false"%>
これが標準の page ディレクティブです。このタスクにはほかのクラスは必要ありません。
Info*Engine の core タグライブラリを識別するには、以下のものを含める必要があります。
<%@ taglib uri="http://www.ptc.com/infoengine/taglib/core"
           prefix="ie" %>
タスクで使用できる一般的なタグが提供され、タグが core タグライブラリに属することを示すために必要なプリフィックスとして ie が指定されます。
前述の CreateGroup.xml のタスクの例では、webject および param タグも使用されています。
webject タグは、Create-Group Webject であることを示します。
param タグは、Webject パラメータおよびパラメータ値を設定します。
Create-Group Webject の場合、パラメータは出力グループの名前とそのグループ内の要素の属性および値を定義します。
タスクで使用できるタグは、ほかにも多数あります。すべてのカスタムタグの説明および構文については、Info*Engine タグを参照してください。
ディレクティブおよびカスタムタグに加えて、Info*Engine タスクには、JSP スクリプトレット、定義式、および宣言を含めることができます。Info*Engine タスクコンパイラがどのようにしてスクリプトレット、定義式、および宣言を処理するかについては、スクリプトレット定義式、および宣言の説明を参照してください。
タスクの作成
標準の編集ツールを使用してタスクファイルを作成できます。カスタムタグおよび JSP 要素を挿入するためのグラフィカルユーザーインタフェース (GUI) を提供するツールを使用すると便利ですが、必須ではありません。
タスクの作成の詳細については、Info*Engine タスクエディタの使用を参照してください。
タスクファイルの拡張子
タスクファイルは、.xml 拡張子を使用して保存します。Info*Engine は、この拡張子が付いているファイルをタスクと認識します。
タスクファイルの場所
Info*Engine には、タスクファイルを保存するディレクトリ構造があります。このディレクトリ構造を使用すると、Web ブラウザ URL からタスクを実行し、別のタスクまたは JSP ページからタスクを実行するときにそのタスクへの相対パスを指定できます。
Windchill は、Info*Engine タスクを <Windchill>/tasks ディレクトリで探すように設定されています。タスクは tasks ディレクトリ内に保存する必要があります。タスクを整理するためにディレクトリ階層を作成することをお勧めします (<Windchill>/tasks/com/company/CreateGroup.xml など)。
タスクの実行
スタンドアロンタスクは、以下の方法で実行できます。
タスクを Info*Engine のカスタム task タグで指定します。
task タグは JSP ページおよびその他のタスクに含めることができます。
タスクの URL を Web ブラウザに入力します。
タスクを実行キューに入れるためタスクをサブミットします。
タスクの実行をもたらすイベントを発行します。
* 
このガイドの URL および URI では、パスのセパレータとしてスラッシュ (/) を使用しています。スラッシュを指定すると、Info*Engine は、すべてのシステム URL および URI を正しく識別します。NT の URL および URI にバックスラッシュを使用する場合は、エスケープ処理する必要があります。つまり、バックスラッシュ (\) ごとに 2 つのバックスラッシュ (\\) を入力します。
task タグでのタスクの指定
Info*Engine の task タグの uri 属性によって、実行するタスクを指定します。たとえば、前述の "CreateGroup.xml" というタスクを実行するには、以下の要素を JSP ページに含めます。
<%@ taglib uri="http://www.ptc.com/infoengine/taglib/core"
           prefix="ie" %>
<ie:task uri="/com/company/CreateGroup.xml"/>
この例では、taglib ディレクティブにより Info*Engine の core タグライブラリが識別され、タグが使用するプリフィックスとして ie が定義されます。task タグにより、CreateGroup.xml タスクへの相対パスが指定されます。
この例のタスクで作成されたグループは、JSP ページのほかの要素でも自動的に使用できます。これらの要素はさらに、グループ内のデータを操作したり、JSP ページの実行を開始したユーザーにグループを再表示したりできます。たとえば、ユーザーが以下の JSP ページを実行したと仮定します。
<%@page language="java" session="false"
        errorPage="IEError.jsp%>
<%@ taglib uri="http://www.ptc.com/infoengine/taglib/core"
           prefix="ie" %>
<ie:task uri="/com/company/CreateGroup.xml"/>
<ie:webject name="Display-Table" type="DSP">
  <ie:param name="GROUP_IN"  data="createdgroup"/>
</ie:webject>
task タグにより実行された CreateGroup.xml タスクは、前述のタスクと同じです。このタスクの出力は createdgroup グループで、これは Display-Table Webject への入力として使用されます。このページを実行すると、以下の結果が表示されます。
Web ブラウザ URL の入力
Web ブラウザにタスクの URL を入力すると、アプリケーションまたは JSP ページを使用してタスクを実行するために必要なコーディングを追加しなくても簡単にタスクを実行できます。
インストーラは Info*Engine タスクを要求するための URL プリフィックスとして使用されるアプリケーション URL も指定します。Info*Engine JSP ページを実行するリクエストを含む URL を生成するには、以下の作業を実行します。
Windchill をインストールしたときに指定したホスト名およびアプリケーション URL プリフィックスを含めます。デフォルトのアプリケーション URL は Windchill です。
サーブレットに対してタスクプロセッサを指し示す /servlet/IE/tasks プリフィックスを含めます。
tasks ディレクトリを基準としたタスクの相対パスを指定します。
タスクに渡すオプションの値があれば指定します。
* 
サイトでフォームベース認証が使用されている場合、IE サーブレットへのアクセスを試みるプログラム的クライアントは、/protocolAuth URL プリフィックスを使用する必要があります。以下に例を示します。
http://<ホスト>/Windchill/protocolAuth/servlet/IE
フォームベース認証の詳細については、認証を参照してください。
このため、myServer というホスト名と Windchill というアプリケーション URL を使用して com/company/CreateGroup.xml タスクを実行するには、以下の URL を指定します。
http://myServer/Windchill/servlet/IE/tasks/com/company/CreateGroup.xml
以下のような XML 出力がブラウザに表示されます。
<?xml version="1.0" encoding="UTF-8"?>
<wc:COLLECTION xmlns:wc="http://www.ptc.com/infoengine/1.0">
<EmployeeData NAME="createdgroup" TYPE="Object" STATUS="0">
  <wc:INSTANCE>
    <NAME>Sam Johnson</NAME>
    <ADDRESS>1234 Main St.</ADDRESS>
    <EMAIL>sjohnson@somewhere.com</EMAIL>
  </wc:INSTANCE>
  <wc:INSTANCE>
    <NAME>Harvy Anderson</NAME>
    <ADDRESS>1234 Amber St.</ADDRESS>
    <EMAIL>handerson@somewhere.com</EMAIL>
  </wc:INSTANCE>
  <wc:INSTANCE>
    <NAME>James O&apos;Connor</NAME>
    <ADDRESS>775 Main St.</ADDRESS>
    <EMAIL></EMAIL>
  </wc:INSTANCE>
  <wc:INSTANCE>
    <NAME>Harvey Hampton</NAME>
    <ADDRESS>775 Main St.</ADDRESS>
    <EMAIL>hhampton@somewhere.com</EMAIL>
  </wc:INSTANCE>
</EmployeeData>
</wc:COLLECTION>
タスクのサブミットとイベントの発行
Info*Engine 環境に、Info*Engine タスクキューの実装や、IBM MQSeries のような Message-Oriented Middleware (MOM) ソフトウェア製品を使用した Web Event Service が含まれている場合は、これらの環境に提供されている特別な Webject を使用して、タスクを実行できます。これらの Webject を使用する場合は、サードパーティ製品のインストールおよび設定と、Info*Engine の追加の設定も必要です。
これらのオプションの機能が現在の環境に含まれているかどうかについては、サイト管理者に問い合わせてください。実装の詳細についてはコンフィギュレーションプロセスについてを参照してください。Webject については、Message WebjectおよびWeb Event Service Webjectの「Subscribe-Event」を参照してください。