高度なカスタマイズ > Info*Engine ユーザーガイド > Server Access Kit > サーバーアクセスキットについて > タスクの実行
  
タスクの実行
タスクオブジェクトのインスタンスを作成するには、パラメータとして URL をとるコンストラクタを使用します。以下に例を示します。
import com.infoengine.SAK.Task;
  :
  :
Task task = new Task ("/com/acme/infoapp/QueryBOM.xml");
この Task コンストラクタのパラメータは、Info*Engine タスクの URL です。さまざまな URL フォーマットを指定できます。URL の例については、Info*Engine JSP ページを参照してください。
タスクインスタンスを構築すると、アプリケーションは addParam メソッドを呼び出すことによってパラメータをタスクに追加できます。このメソッドは、追加するパラメータの名前とその値を受け入れます。以下に例を示します。
import com.infoengine.SAK.Task;
  :
  :
Task task = new Task ("/com/acme/infoapp/QueryBOM.xml");
task.addParam ("class", "wt.part.WTPart");
task.addParam ("where", "name='Engine'");
task.addParam ("group_out", groupOutName);
同じパラメータ名を addParam への複数の呼び出しに指定すると、複数の値をとるパラメータを追加できます。パラメータの値には、どのオブジェクトタイプでも使用できます。パラメータは、@FORM コンテキストグループに対する通常の Info*Engine の置換を使用して、タスク内で参照されます。したがって、addParam メソッドを呼び出すたびに、指定された名前と値を持つ属性が、実行されるタスクの @FORM コンテキストグループに追加されます。
アプリケーションは、パラメータをタスクに追加するだけでなく、タスクを起動する前に、そのタスクに対する実行オプションを作成することもできます。たとえば、タスクを実行するユーザー名を設定できます。さらにこのユーザー名は、タスクが通信する各アダプタに提供される認証 (ユーザー名やパスワードなど) を選択するための認証マッピングキーとして、Info*Engine によって使用されます。タスクのユーザー名は、以下のように設定できます。
task.setUsername ("guest");
これにより、タスクの @SERVER コンテキストグループに auth-user 属性が設定されます。@SERVER コンテキストグループには、ほかの属性も追加できます。このコンテキストグループには通常、タスクが実行される実行時環境についての情報が含まれます。たとえば、Info*Engine サーブレットを使用してタスクを実行する場合、@SERVER コンテキストグループには、すべての HTTP プロトコルヘッダーを含む Web サーバーによって提供される情報から派生する属性を追加できます。タスクインスタンスを作成して実行するアプリケーションは、setServerAttribute メソッドを使用して、@SERVER グループに実行時環境情報を追加できます。以下に例を示します。
task.setServerAttribute ("accept-language", "en-US");
デフォルトでは、Info*Engine は呼び出しアプリケーションの Java 仮想マシン (JVM) 内のタスクを実行します。Info*Engine タスクプロセッサをホストしている非ローカル JVM にあるタスクを実行する方が適切な場合もあります。特に、タスクのソースコードがその非ローカルタスクプロセッサによってのみアクセスできる場合は、この方法が適切です。たとえば、タスクのソースに権限パスワードなどの機密情報が含まれている場合は、そのソースへのアクセスを制限します。非ローカルタスクプロセッサによってタスクを実行しなければならない場合は、アプリケーションから addProcessor メソッドを呼び出して、タスクを実行できる Info*Engine タスクプロセッサの名前を指定できます。以下に例を示します。
task.addProcessor ("com.mycompany.engineering.windchill");
必要なパラメータとサービスオプションをすべて追加したら、invoke メソッドを以下のように呼び出すことによって、タスクを実行します。
task.invoke ();