SAK アプリケーションの例
以下のアプリケーションの例は、Server Access Kit (SAK) の使用方法を示すことを目的とした単純な例です。この例には "ExecuteTask.java" という名前が付けられており、これは Info*Engine がインストールされている prog_examples/SAK_apps ディレクトリにあります。
このアプリケーションの例は、アプリケーションの起動時に指定されるタスクを実行します。
アプリケーションをコンパイルします。
アプリケーションをコンパイルするには、以下の手順に従います。
1. CLASSPATH 環境変数を設定します。
CLASSPATH 環境変数には、以下のファイルやフォルダを含める必要があります。
%JAVA_HOME%/lib/tools.jar
%<Windchill>%/lib/servlet.jar
%<Windchill>%/codebase
%<Windchill>%/codebase/WEB-INF/classes
%<Windchill>%/codebase/WEB-INF/lib/ieWeb.jar
例 :
set
CLASSPATH=C:/jdk1.3.1/lib/tools.jar;C:/ptc/Windchill/lib/servlet
.jar;C:/ptc/Windchill/codebase;C:/ptc/Windchill/codebase/WEB-INF/
classes;C:/ptc/Windchill/codebase/WEB-INF/lib/ieWeb.jar
2. 次のディレクトリを作成します。
%<Windchill>%/codebase/WEB-INF/classes
3. 以下のディレクトリに変更します。
%<Windchill>>%/prog_examples/SAK_apps
以下のスクリプトを実行します。
javac -d %<Windchill>%/codebase/WEB-INF/classes ExecuteTask.java
アプリケーションを実行します。
アプリケーションを実行するには、以下の構文を使用します。
java com.infoengine.examples.applications.ExecuteTask
-t <タスク URI>
-u <ユーザー名>
-props <プロパティリソース>
-n <ネーミングサービス名>
ここで、
• <タスク URI> は実行するタスクの URI です。
• <ユーザー名> はタスクで指定されているユーザー名です。
• <プロパティリソース> は "ie.properties" というプロパティリソースファイルのディレクトリパスです。
• <ネーミングサービス名> は使用するネーミングサービスです。
以下に例を示します。
java com.infoengine.examples.applications.ExecuteTask -t
C:/ptc/Windchill/tasks/infoengine/examples/CreateGroup.xml -u
wcadimn -props C:/ptc/Windchill/codebase/WEB-INF/ie.properties
-n com.ptc.host.namingService
アプリケーションソース
以下のコードは、この例を実装します。
package com.infoengine.examples.applications;
import com.infoengine.au.NamingService;
import com.infoengine.object.factory.Group;
import com.infoengine.SAK.Task;
import com.infoengine.util.IEException;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.Enumeration;
import java.util.Vector;
public class ExecuteTask {
/**
* Demonstrate the com.infoengine.SAK interface of Infoengine.
*
* command line: java com.infoengine.examples.applications.ExecuteTask
* -t <task uri>
* -p <processor>
* -u <username>
* -n <naming service name>
* -props <property resource>
*
* @param args
*/
public static void main ( String [] args ) {
String taskUri = null;
String processor = null;
String username = null;
String namingService = null;
String props = null;
for ( int i = 0; i < args.length; i++ ) {
if ( args[i].equals ( "-t" ) ) {
if ( i < args.length-1 )
taskUri = args[++i];
}
else if ( args[i].equals ( "-p" ) ) {
if ( i < args.length-1 )
processor = args[++i];
}
else if ( args[i].equals ( "-u" ) ) {
if ( i < args.length-1 )
username = args[++i];
}
else if ( args[i].equals ( "-n" ) ) {
if ( i < args.length-1 )
namingService = args[++i];
}
else if ( args[i].equals ( "-props" ) ) {
if ( i < args.length-1 )
props = args[++i];
}
else {
System.err.println
("unrecognized parameter \"" + args[i] + "\"");
usage ();
}
}
if ( taskUri == null ) {
System.err.println ( "missing required parameter -t <task uri>" );
usage ();
}
if ( namingService == null )
namingService = "namingService";
if ( props == null )
System.err.println
("missing required parameter -props <property resource>");
usage ();
// Initialize the naming service and read the infoengine properties
try {
NamingService ns =
NamingService.newInstance (namingService, props);
}
catch ( FileNotFoundException f ) {
System.err.println (props + ": property file not found");
System.exit (1);
}
catch ( Exception e ) {
System.err.println (props + ": unable to read properties");
e.printStackTrace (System.err);
System.exit (1);
}
// Create a Task object to execute
Task task = null;
if ( processor == null ) {
task = new Task (taskUri);
}
else {
Vector procVector = new Vector ();
procVector.addElement (processor);
task = new Task (taskUri, procVector);
}
// execute the task
try {
task.invoke ();
}
catch ( Exception e ) {
e.printStackTrace (System.err);
System.exit (1);
}
// retrieve and print the results
Enumeration groups = task.getGroupNames ();
System.out.println ("groups produced by " + taskUri + ": " + groups);
PrintWriter pw = new PrintWriter (System.out);
while ( groups.hasMoreElements () ) {
Group group = task.getGroup ((String)groups.nextElement ());
group.toXML (pw, true, true);
}
System.exit ( 0 );
}
/**
* Print the command line parameters
*/
public static void usage () {
System.err.println
("java com.infoengine.examples.applications.ExecuteTask");
System.err.println ("\t-t <task uri>");
System.err.println ("\t-p <processor>");
System.err.println ("\t-u <username>");
System.err.println ("\t-n <naming service name>");
System.err.println ("\t-props <property resource>");
System.exit (1);
}
}