JSP页面
<%@page language="java"%>
<%@page contentType="text/html; charset=UTF-8"%>
<%@taglib uri="http://www.ptc.com/infoengine/taglib/core" prefix="ie"%>
<ie:webject name="Query-Objects" type="OBJ">
<ie:param name="INSTANCE" data="com.xxx.xxx.Windchill"/>
<ie:param name="TYPE" data="wt.part.WTPart"/>
<ie:param name="ATTRIBUTE" data="name"/>
<ie:param name="ATTRIBUTE" data="number"/>
<ie:param name="WHERE" data="()"/>
<ie:param name="GROUP_OUT" data="parts"/>
</ie:webject>
<ie:webject name="Display-Table" type="DSP">
<ie:param name="GROUP_IN" data="parts"/>
<ie:param name="BORDER" data="1"/>
<ie:param name="ATTRIBUTE" data="name,number" delim=","/>
<ie:param name="HEADER" data="名称,编号" delim=","/>
</ie:webject>
JSP与Info*Engine任务执行对比
页面的执行方式类似。二者均包含加载类的缓存,并且都能够检查该缓存是否存在更新,但是,他们之间存在一些显著差异:
1 JSP页面始终在servlet引擎中执行。
2 Info*Engine任务也可以在servlet引擎中执行,但通常都在Windchill方法服务器中执行
Info*Engine的好处
1 业务逻辑与显示分开。通过Info*Engine查询处理业务数据,而不是将逻辑处理代码写在JSP代码中
2 使用更加灵活,JSP唯一的处理方式,通过发送HTTP请求,将请求发送Web服务器,再转至servlet引擎。而Info*Engine调用任务的方式是多种多样的,包括JSP,JAVA,SOAP,Windchill工作流和JMS
参数详解
名称属性指定要执行的Info*Engine Webject
<ie:webject name="Query-Objects" type="OBJ">
<ie:param name="INSTANCE" data="com.glaway.pdm.Windchill"/>
<ie:param name="TYPE" data="wt.part.WTPart"/>
<ie:param name="ATTRIBUTE" data="name"/>
<ie:param name="ATTRIBUTE" data="number"/>
<ie:param name="WHERE" data="partType=component"/>
<ie:param name="GROUP_OUT" data="parts"/>
</ie:webject>
Webject名称-详细描述参见《Windchill Adapter Gide》和《Info*Engine User’s Guide》
Query-Objects
Display-Table
Return-Groups
Webject类型
类型指出当前使用的webject的类型,通常action、query和group webject称为任务Webject,因为这些webject用于收集和操控数据。Display和image webject用于显示数据,因此只能在jsp页面中使用,而无法在业务任务中使用
……
Webject参数-详细描述参见《Windchill Adapter Gide》和《Info*Engine User’s Guide》
必须参数,如实例INSTANCE
可选参数,如where,group_out
INSTANCE参数
引用正在访问的适配器的服务名称。
此名称可在Info*Engine管理器中找到
TYPE参数- TYPE参数引用Windchill中当前查询的对象类型
可以是Windchill中模型化类型,如wt.part.WTPart。
也可以是可变类型。可变类型由"类型管理器"中的逻辑标识符引用。
注:TYPE是Windchill适配器特有参数。在JDBC适配器中,用CLASS参数指定查询的表格,JNDI适配器中,使用BASE参数指定查询的对象。
ATTRIBUTE参数
指定返回那些属性,此示例中,仅返回部件名称和编号。
Delmi属性
Delmi属性还可以用于其他多值参数。如webject具有两个where参数,则可以使用delmi属性分隔这两个参数。
WHERE参数
仅返回符合条件的对象,与SQL中使用条件相似。
注:在Windchill适配器中,如果当前搜索的值包含空格,则必须将该值引在单引号中。如<ie:param name="WHERE" data="containerName=‘Icon Library’"/>
GROUP_OUT参数
Webject会以Info*Engine XML的格式精确创建一个组。GROUP_OUT参数指定组的名称,这样便于在任务内的后续webject中引用它。
如未指定,将按默认名称。
//Webject示例
//次任务检索用户所有有权限访问的WTPart
<ie:webject name="Query-Objects" type="OBJ">
<ie:param name="INSTANCE" data="com.glaway.pdm.Windchill"/>
<ie:param name="TYPE" data="wt.part.WTPart"/>
<ie:param name="WHERE" data="()"/>
<ie:param name="GROUP_OUT" data="parts"/>
</ie:webject>
Info*Engine Task任务发布
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib uri="http://www.ptc.com/infoengine/taglib/core" prefix="ie"%>
<ie:webject name="Query-Objects" type="OBJ">
<ie:param name="INSTANCE" data="com.xxx.pdm.WindChill"/>
<ie:param name="TYPE" data="wt.part.WTPart"/>
<ie:param name="ATTRIBUTE" data="name"/>
<ie:param name="ATTRIBUTE" data="number"/>
<ie:param name="ATTRIBUTE" data="state.state"/>
<ie:param name="WHERE" data="()"/>
<ie:param name="GROUP_OUT" data="parts"/>
</ie:webject>
<ie:webject name="Display-Table" type="DSP">
<ie:param name="GROUP_IN" data="parts"/>
<ie:param name="BORDER" data="1"/>
<ie:param name="ATTRIBUTE" data="name,number,state.state" delim=","/>
<ie:param name="HEADER" data="名称,编号" delim=","/>
</ie:webject>
public static void webSeriviceTask() throws Exception {
String address = "http://pdm.xxx.com/Windchill/servlet/TestService?wsdl";
String namespaceURI = "http://ws.glaway.com/";
String methodName = "hello"; // WebService方法名称
Object[] parameters = new Object[] {"ZhangSan" };// 参数值
Class[] returnTypes = new Class[] { String.class };// 返回值数据类型
RPCServiceClient client = new RPCServiceClient();
Options options = client.getOptions();
if (options == null) { options = new Options(); }
EndpointReference targetEPR = new EndpointReference(address);
options.setTo(targetEPR);
HttpTransportProperties.Authenticator basicAuth = new HttpTransportProperties.Authenticator(); basicAuth.setPreemptiveAuthentication(true);
basicAuth.setUsername("wcadmin");//设置用户名
basicAuth.setPassword("wcadmin");//设置密码
options.setProperty(HTTPConstants.AUTHENTICATE, basicAuth);
options.setProperty(HTTPConstants.CHUNKED, "false");
client.setOptions(options);
QName opName = new QName(namespaceURI, methodName);
Object[] result = client.invokeBlocking(opName, parameters, returnTypes);
if (result != null && result.length > 0) {
System.out.println(result[0]); // 输出返回结果
}
}
}
调用验证-访问如下地址,将出现名称为自己定义名称的opration。
http://pdm.xxx.com/Windchill/servlet/RPC?CLASS=com.infoengine.soap