Info*Engine Task

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

发布了16 篇原创文章 · 获赞 1 · 访问量 290

猜你喜欢

转载自blog.csdn.net/xiguasweet/article/details/104683543