基于SharePoint的Windchill系统的开发

合集下载

windchill系统学习之--开发流程

windchill系统学习之--开发流程

windchill系统学习之--开发流程An Overview of the Windchill Development ProcessVerify The Development Environment:Verify the following environment variables: path ,sqlpathVerify the contents of the following property files: wt.properties ,db.propertiesStart the Windchill servers. Open a new console window.Establish your Rose model directory.Model the Object in Rose:Start Rational Rose and check the virtual path map.WT_WORK = ..\windchill\srcWT_EXTENSIONS = ..\windchill\RoseAddInWT_STD_PACKAGES = $WT_EXTENSIONS\Standard PackagesEstablish the initial Rose model by performing the following steps:a. From the File menu, select Open, browse to ..\windchill\src\wt, andload the model WTDesigner.mdl.b. When asked whether to load subunits, press the Yes button.c. Save the model as ..\windchill\src\helloWorld\HelloWorld.mdl.d. When asked whether to save subunits, press the No button.Model the person class by performing the following steps:a. In the Logical View/Main class diagram, drop in a Package icon and labelit helloWorld.b. Use the dependency tool to draw dependencies from helloWorld to the wtand java packages.c. Go to the Main diagram of the helloWorld package.d. Drop on a class icon and give the class the name Item (the parent forPerson). Attributes and operations for Item automatically appear. Changethe diagram to suppress attributes and operations of Item. Ensure that theShow Visibility option is on for Item (so you can see in the diagram that itcomes from the fc package).e. Drop on another class icon and give it the name Person.f. Make Person a subclass of Item. (Use the generalization icon/tool to drawa line from Person to Item.)g. Insert the attributes name, age, title, and id. Name, title, and id should bestrings (String) and age should be an integer (int). Use lowercase or a mixof upper- and lowercase letters for these attributes; do not use alluppercase letters.2 Right click to start the specification dialog. Make allthe attributes public and change the Windchill property of each toconstrain=false. Click the Apply button for each change and, when youare done, click the OK button.h. Select the menu option Browse > Units. Select the HelloWorld packageand press the Control button. Save the unit to c:\ptc\windchill\src\helloWorld\helloWorld.cat. With the helloWorld package selected, pressthe Save button.i. Save the Rose model file. When asked whether to save subunits, click theNo button.Generate Java Classes From Rose:Go to the parent package of the Person class (by selecting the LogicalView/Main diagram from the class browser, then selecting the helloWorld package).From the Tools menu, select Windchill > System Generation.From the popup window, select Java Source Code, WT Introspector Support, and Database Support, then click the OK button.Create Database Tables:Initialize the Object:Design the GUI Layout:Code the GUI:Run the Applet in Mozilla or Internet Explorer:。

windchill技术状态管理

windchill技术状态管理

基于Windchill的技术状态管理1 引言技术状态管理是一门管理科学,是系统工程管理的一个重要方面,它应用于产品的整个寿命周期中,准确地描述了产品的功能特性(如:速度、可靠性、维修性、安全性等)和物理特性(如:形状、尺寸、重量等)并提供了明确的技术和行政的控制方法。

在我所科研设计中技术状态项目实施技术状态管理,即对舰船总体、系统在性能技术指标论证阶段所确定的功能基线、设计阶段所确定的分配基线、定型阶段所确定的产品基线实施管理。

以下针对我所技术状态管理的基本要求,介绍基于Windchill系统建立技术状态管理的几个关键点。

2 技术状态管理的基本概念2.1 技术状态技术状态是指技术文件中规定的并且能在产品上实现的硬件、软件或其组合体的功能特性、物理特性和接口特性。

2.2 技术状态项目技术状态项目是满足最终使用功能要求并被指定为独立进行技术状态管理的硬件、软件或集合体。

2.3 技术状态基线在技术状态项目研制过程中的某一特定时刻,被正式确认并被作为今后研制、生产活动基准的技术状态文件。

一般有三种技术状态基线:功能基线、分配基线和产品基线。

功能基线是经正式确认的,用以描述装备系统或独立研制的重大技术状态项目中功能特性、接口特性和验证上述特性是否达到规定要求所需检查的文件。

分配基线是经正式确认的用以描述技术状态项目下列内容的文件:从装备系统或高一层技术状态项目分配给该技术状态项目的功能特性和接口特性;技术状态项目的接口要求;附加的设计约束条件;验证上述特性是否达到规定要求所需的检查。

各技术状态项目分配基线的综合,形成满足装备系统功能基线目标的技术途径。

产品基线是经正式确认的用以描述技术状态项目下列内容的文件:技术状态项目所有必需的功能特性和物理特性;被指定进行生产验收试验的功能特性和物理特性,为保障技术状态项目合格所需的试验。

2.4 技术状态管理构架技术状态管理主要由四大要素构成:技术状态标识、技术状态控制、技术状态审核和技术状态记实。

Windchill集成平台管理中的技术分析

Windchill集成平台管理中的技术分析

Value Engineering0引言国内某工程机械企业的产品技术得到了国际上的广泛认可。

随着国内外订单的快速增长和全球市场需求的不断增加,企业仅靠本地技术研发、产品测试和应用已无法满足市场的要求。

从战略角度来看,公司将在国内外不同地区进行设计,并有望有效整合各地区的人力资源,降低设计成本,缩短设计周期,同时还需迅速、完整地与顾客进行交流,协助开发符合顾客需要的产品。

因此,在Creo 开发工具和Windchill 平台的基础上,提出一种TopDown 的协作设计方案。

1Creo、Windchill 及两者的集成1.1CreoCreo 是美国参数化技术公司(PTC )于2010年发布的新产品,涵盖了概念设计、二维、三维、直接建模等方面。

Creo 是一款集成Pro/Engineer 、CoCreate 和ProductView 的软件,并在此基础上重新发布。

本次设计方案采用的是Creo2.0。

1.2WindchillWindchill 系统是基于三层结构的J2EE 标准(见图1)。

客户端是用户应用程序的一部分,是一个基于HTTP 的web 浏览器,用于访问和操作系统。

有些是通过使用javaRMI 技术的java 小程序或java 应用软件完成的。

服务器层包括环形服务器、服务引擎、窗口服务和Java SDK 。

在此基础上,利用Java 技术完成了业务逻辑、安全管理、工作流引擎、图形文档可视化服务等关键模块的功能。

数据库层包括三个块,第一块是Oracle 数据库,用于存储和维护系统元数据;第二是建立一个电子仓库,以文件服务器的形式存储系统外的产品数据;第三个是LDAP 服务器,用于管理用户和角色信息。

1.3Creo 与Windchill 的集成Creo 可以将CAD 资料与Windchill PDM 进行无缝的整合与管理,主要依赖于集成系统所提供的工作区。

工作区是PDM 与Creo 集成界面,该系统能够实现PDM 和Creo 参数会话的通讯。

Windchill常用开发大全

Windchill常用开发大全
选择菜单Units.Control docs,保存为docs.cat
模型扩展(续)
生成系统文件,选中docs包
模型扩展(续)
生成系统文件.mData和EleadDocs.java文件
在src目录下自动生成包路径和文件 docs.mData和 EleadDocs.java
模型扩展(续)
系统会自动生成SQL【WT_HOME】 \db\sql3\ext\elead\docs
– 不预留属性
对象建模,不预留属性。对于已有对象的预留属性,因属性名称业务 含义,也不允许使用。历史模型已预留的属性不做要求。 例如:不再使用以前建模留下的reserv1、reserv2等预留属性
设计规范
– 关联关系
两个对象关联时,需要使用模型的关联关系。尽量不要采用建模为两 个独立对象,在一个对象的属性中记录另一个对象的某个标志属性的 方式。 例如: 错误的建模方法:CBBCounter类有一个属性cbbNumber,记录CBB 的编码。 正确的建模方法:引入一个Link对象,记录CBBCounter类和 WTPartMaster类的关系。
模型扩展(续)
测试代码
public void test(){ try{ Person p = Person.newPerson(); p.setName("111"); p.setTitle("222"); p.setAge(1111); p = (Person) PersistenceHelper.manager.save(p); WTPart part = getPartByNumber("D3_0000000064"); if(part==null){ Debug.P("part is null"); return; } PersonLink link = PersonLink.newPersonLink(part, p); link = (PersonLink) PersistenceHelper.manager.save(link); if(link==null){ Debug.P("link is null"); return; } WTPart part1 = link.getUse(); Person p1 = link.getUsed(); if(part1==null){ Debug.P("part1 is null"); }else{ Debug.P("part1 is "+part1.getNumber()); } if(p1==null){ Debug.P("p1 is null"); }else{ Debug.P("p1 is "+p1.getName()); } }catch(Exception e){ e.printStackTrace(); } }

Windchill常用开发大全(整理).pptx

Windchill常用开发大全(整理).pptx
生成.ser文件【WT_HOME】\codebase\ext\elead\docs 执行SQL语句
– 进入到 Oracle SQL*Plus路径,执行命令:
– 操作完成之后,即可使用EleadDocs对象了!
模型扩展(续)
模型扩展(续)
完整的例子说明
– 在windchill/src/目录下建立一个helloWorld目录,在 windchill/codebase/目录下也建立一个helloWorld目录
(除非使用了系统原有的Protected Method,这种用法要尽量避免).
设计规范
设计规范之建模
– 仅对持久化对象建模
只有数据需要保存到数据库中的持久化业务对象才允许进行建模。其 余的操作类(例如:Processor、Delegate、Helper类等) 不被允许进行建模。
– 模型命名规则
对象的名称、属性名称、方法名称应该满足命名规则,同Java编码规 范的类命名、变量命名和方法命名。 例如: 类名 TRApplyDoc 属性名trPhase 方法名getFormData 说明:历史的模型如果要更改将要做数据迁移。因此只要求对新建立 的模型,历史模型不做要求。
– 工作流中的表达式,具体实现,都写在WfUtil中,只在工作流中调用WfUtil中的方法。 WfUtil中的方法注释中,需要说明该段代码,将在那些workflow中被调用。
– 系统OOTB配置部分通过XML配置文件交付。方便新系统可以直接通过LoadFileSet导入配 置。
– 系统内部值,例如IBA,全部由英文字母和数字组成,不能包含特殊字符。 – 禁止反编译系统OOTB的Class文件,然后在此基础上修改做客制,导致系统无法升级。 – 需要对出厂文件(HTML template等)修改时,需要保存原出厂文件的备份在

开发人员手册-Windchill开发环境

开发人员手册-Windchill开发环境
AEROSPACE & DEFENSE
</target>
使用Eclipse进行开发(续四)
示例程序
> 编写HelloWindchill应用程序。
import ng.reflect.InvocationTargetException; import java.rmi.RemoteException; import wt.method.RemoteAccess; import wt.method.RemoteMethodServer; import .WTPrincipal; import wt.session.SessionHelper; import wt.util.WTException; public class HelloWindchill implements RemoteAccess {
AEROSPACE & DEFENSE
目录结构(续)
codebase目录
com\ptc和wt - Windchill运行时所调用的类文件 config - Windchill运行时使用的配置文件 netmarkets和wtcore - Windchill运行时使用的页面文件(JSP、 Javascript、CSS以及图像等) templates - Windchill template技术使用的HTML文件 >codebase目录下主要包含下述类型的文件
<project name=“makeCCjars” default=“makeCCJars” basedir=“X:/ptc/Windchill_10.1/Windchill/codeb ase”> <target name=“makeCCjars”> <jar destfile=“X:/ptc/Windchill_10.1/Windchill/x22co debase.jar” basedir=“X:/ptc/Windchill_10.1/Windchill/codeb ase” excludes=“**/ext/*” includes=“**/*.class” />

windchill解决方案功能介绍--l快速启动解决方案[管理资料]

windchill解决方案功能介绍--l快速启动解决方案[管理资料]

附录A: Windchill快速启动解决方案功能介绍Windchill®快速启动解决方案Windchill快速启动解决方案是“交钥匙工程”,它使用预先包装好的软件和服务来完成特定的业务过程,以快速获取投资回报。

该套解决方案提供了一个建立在公共Windchill体系架构和平台上的创建-协作-控制组合功能。

综合了为数百家客户部署Windchill积累的经验,Windchill快速启动解决方案具有最佳的用户界面、预装的标准工作流和可配置的过程,所以易于使用。

这些解决方案提供了许多实用功能,其中包括CAD集成、丰富的可视化、以及分布式信息共享功能。

每个解决方案都提供了支持特殊业务过程所必需的功能,这些解决方案可以被完美组合,以满足多个产品生命周期阶段的需求。

为了进一步加快投资回报,Windchill快速启动解决方案的价格固定,并包括资深顾问提供的确定范围内的技术服务和培训。

这些实施工作可以在很短的几周内完成,而不象其它企业系统要用几个月或者几年。

Windchill快速启动解决方案包括:Windchill PDMLinkWindchill PDMLink汇集、控制和利用整个产品生命周期中的数字化产品信息,通过一个基于Web的信息源使参与产品开发过程的每个人都能够轻而易举地访问到各种形式的最新准确信息。

随处可用的基于浏览器的强大可视化功能,确保工程师和非工程师无论身在何处,无需启动原始的应用程序都可以在自己的桌面上浏览和圈阅复杂的2D和3D产品信息。

主要功能:●一个主产品知识库把数字化产品表示(其中包括物料清单、文档、组件属性、二维工作图和模型、原理图、软件模块、技术规格、数据资料和修订记录)编制在一个基于Web的虚拟库中;它支持强大的搜索功能和相关信息的超链接导航。

●强大的产品结构管理功能,可以在建立和处理产品时支持产品配置管理-其中包括自动从CAD模型获得的配置。

●过程和信息的阶段-关口管理有助于管理产品开发过程。

Windchill常用开发大全.ppt

Windchill常用开发大全.ppt

Rose模型介绍
打开Rose模型,点击FileOpen
选择src\wt\WTdesigner.mdl
Rose模型使用
点击【是】,系统会加载
其中Logical View是系统核心 逻辑显示,其中3rd是Windchilll 中使用了哪些Java技术模块、ext 是系统客制化扩展模型目录、wnc是Windchill核心业务逻辑组成
– 不预留属性
对象建模,不预留属性。对于已有对象的预留属性,因属性名称业务 含义,也不允许使用。历史模型已预留的属性不做要求。 例如:不再使用以前建模留下的reserv1、reserv2等预留属性
设计规范
– 关联关系
两个对象关联时,需要使用模型的关联关系。尽量不要采用建模为两 个独立对象,在一个对象的属性中记录另一个对象的某个标志属性的 方式。 例如: 错误的建模方法:CBBCounter类有一个属性cbbNumber,记录CBB 的编码。 正确的建模方法:引入一个Link对象,记录CBBCounter类和 WTPartMaster类的关系。
设计规范
– 字段扩展
对于对象的属性,一般情况下采用默认长度。建模时要求考虑属性长 度是否符合要求,如果需要加大长度,在模型中设置相应的值即可。
– 选择父类
对于建模,尽量继承底层的Windchill类,例如:Managed\Item等,继 承上层的具有实际业务含义的Windchill类(例如:WTPart、 WTDocument)时,在业务上符合“是一个(As -is)”的含义,例如: EleadPart是一个WTPart
安装完成之后,load注册文件 rational_perm.dat.txt
进入到{WT_HOME}\roseAddIn,将 VirtualPathMap.AddIn.reg和Windchill.AddIn.reg文件中 的路径修订为个人本机环境的路径并注册

Windchill 开发培训资料

Windchill 开发培训资料

主要内容:jca标签\Validator\dataUtilities一、Windchill自带的客制化:站点->实用程序->首选项管理器->展开"用户自定义"->将"用户自定义"选项卡的"否"改为"是"->重新打开浏览器->会出现"自定义"图标二、增加主菜单和一级子菜单1 、复制navigation-actionModels.xml中的main navigation段代码到custom-actionModels.xml文件中<model name="main navigation" id="browseActions" resourceBundle="com.ptc.core.ui.navigationRB"> <description>Main navigation (tabs)</description><action name="recentContexts" type="navigation"/><action name="program" type="navigation"/><action name="test" type="navigation"/>//这里是添加的<action name="product" type="navigation"/><action name="project" type="navigation"/><action name="change" type="navigation"/><action name="library" type="navigation"/><action name="org" type="navigation"/><action name="site" type="navigation"/><action name="supplier" type="navigation"/><action name="search" type="navigation"/><!-- entry for customization tab --><action name="customization" type="navigation"/></model><model name="test navigation" defaultActionName="subtest1" defaultActionType="test"><description>Sub tabs under the product main tab</description><action name="subtest1" type="test"/><action name="subtest2" type="test"/></model>2、修改properties文件action.properties和action_zh_CN.properties在action.properties文件里增加如下代码:navigation.test.description=testtest.subtest1.description=subtest1test.subtest2.description=subtest2在action_zh_CN.properties里增加如下代码:navigation.test.description=\u6d4b\u8bd5 (\u6d4b\u8bd5----测试)test.subtest1.description=\u5b50\u6d4b\u8bd51 (\u5b50\u6d4b\u8bd51----子测试1)test.subtest2.description=\u5b50\u6d4b\u8bd52 (\u5b50\u6d4b\u8bd52----子测试2)3、在custom-actions.xml文件中增加如下代码:<objecttype name="navigation" class=""><action name="test" renderType="GENERAL"><command class="netmarkets" method="servlet/Navigation?tab=test" windowType="page"/></action></objecttype><objecttype name="test" class="wt.inf.container.ExchangeContainer"resourceBundle="com.ptc.core.ui.navigationRB"><action name="subtest1" enabledwhensuspended="true"><command windowType="page"/><includeFilter name="hideNonSiteAdmin"/></action><action name="subtest2" enabledwhensuspended="true"><command windowType="page"/><includeFilter name="hideNonSiteAdmin"/></action></objecttype>4、在netmarkets下的jsp文件夹下新建文件夹test并在test下新建jsp文件subtest1.jsp和subtest2.jsp注意:这里的文件名和文件夹名都不能错5、重启服务器四、显示所有产品列表1、修改subtest1.jsp<%@ taglib uri="/windchill/taglib/components" prefix="jca"%><%@ taglib uri="/windchill/taglib/fmt" prefix="fmt" %><%@ page import="ext.corilead.testdemo.GetProductList"%><%@ include file="/netmarkets/jsp/util/begin.jspf"%><fmt:setLocale value="${localeBean.locale}"/><fmt:message var="name" key="name"/><fmt:message var="creator" key="creator"/><fmt:message var="container" key="container"/><jca:describeTable var="tableDescriptor" id="allproduct" label="All Product"><jca:describeColumn id="name" label = "Name" sortable="true"/><jca:describeColumn id="creator" label="Creator" sortable="true"/><jca:describeColumn id="container" label="Container" sortable="true" /></jca:describeTable><jca:getModel var="tableModel" descriptor="${tableDescriptor}"serviceName="ext.corilead.testdemo.GetProductList" methodName="getAllProduct"></jca:getModel><jca:renderTable showCustomViewLink="false" model="${tableModel}" showCount="true" showPagingLinks="false"/><%@ include file="/netmarkets/jsp/util/end.jspf"%>2、java文件package ext.corilead.testdemo;import java.util.HashMap;import java.util.Vector;import wt.fc.QueryResult;import wt.method.RemoteAccess;import wt.pdmlink.PDMLinkProduct;import wt.pds.StatementSpec;import wt.query.QuerySpec;import wt.query.SearchCondition;public class GetProductList implements RemoteAccess {private GetProductList(){}public static GetProductList newGetProductList(){return new GetProductList();}public static Vector getAllProduct(){Vector v=new Vector();QuerySpec qs=null;QueryResult qr=null;try{qs=new QuerySpec(PDMLinkProduct.class);if(qs instanceof StatementSpec){qr = wt.fc.PersistenceHelper.manager.find((StatementSpec)qs);//查询所有产品列表while(qr.hasMoreElements()){Object object = qr.nextElement();if(object instanceof PDMLinkProduct){HashMap map=new HashMap();PDMLinkProduct pro=(PDMLinkProduct)object;String name=pro.getName();String creator=pro.getCreator().getName();String container=pro.getContainerName();map.put("name", name);map.put("creator", creator);map.put("container", container);map.put("pro", pro);v.add(map);}}}}catch(Exception e){e.printStackTrace();}HashMap map=new HashMap();return v;}}3、将生成的class文件拷贝到codebase对应的目录下,重启服务器五、添加超链接1、修改jsp文件<jca:describeColumn id="container" label="Container" sortable="true" />为<jca:describeColumn id="container" label="Container" sortable="true" dataUtilityId="containerDdetail"/>2、java文件package ext.corilead.dataUtilities;import java.io.IOException;import java.io.Serializable;import java.util.HashMap;import wt.fc.ReferenceFactory;import wt.inf.container.WTContainer;import wt.method.RemoteAccess;import wt.pdmlink.PDMLinkProduct;import wt.pom.PersistenceException;import wt.util.WTException;import wt.util.WTProperties;import ponents.descriptor.ModelContext;import ponents.factory.AbstractDataUtility;import ponents.rendering.guicomponents.UrlDisplayComponent;public class SearchDetail extends AbstractDataUtility implements RemoteAccess,Serializable { public Object getDataValue(String col_id, Object obj, ModelContext modelcontext) throws WTException { UrlDisplayComponent goPartNumberButton = new UrlDisplayComponent();if(obj instanceof HashMap){HashMap map=(HashMap)obj;String container=(String)map.get("container");WTContainer org=((PDMLinkProduct)map.get("pro")).getContainer();if (org != null) {String url2 = getURLByWTContainer(org);goPartNumberButton.setLink(url2);goPartNumberButton.setLabelForTheLink(container);goPartNumberButton.setTarget("_blank");}}return goPartNumberButton;}//构造url地址public static String getURLByWTContainer(WTContainer org) throws PersistenceException, WTException { String url = "";ReferenceFactory referenceFactory = new ReferenceFactory();if (org != null) {String ufid = referenceFactory.getReferenceString(org);try {WTProperties properties = WTProperties.getLocalProperties();String urlbase = properties.getProperty("java.rmi.server.hostname");String webport = properties.getProperty("wt.webserver.port");url = "http://" + urlbase + ":" + webport +"/Windchill/app/#ptc1/comp/Page?oid=" + ufid + "&u8=1";System.out.println("url==========="+url);} catch (IOException e) {e.printStackTrace();}}return url;}}3、在site.conf文件里注册<Propertyname="wt.services/svc/default/ponents.descriptor.DataUtility/containerDdetail/ng.O bject/0"overridable="true"targetFile="codebase/com/ptc/core/components/components.dataUtilities.properties"value="ext.corilead.dataUtilities.SearchDetail/singleton" />4、在windchill shell下执行命令xconfmanager –p5、重启服务器六、控制主菜单的可见性1、java文件package ext.corilead.validator;import java.util.Locale;import .WTPrincipal;import wt.session.SessionHelper;import wt.util.WTException;import com.ptc.core.ui.validation.DefaultUIComponentValidator;import com.ptc.core.ui.validation.UIValidationCriteria;import com.ptc.core.ui.validation.UIValidationKey;import com.ptc.core.ui.validation.UIValidationResult;import com.ptc.core.ui.validation.UIValidationResultSet;import com.ptc.core.ui.validation.UIValidationStatus;public class NavigationValidator extends DefaultUIComponentValidator {public UIValidationResultSet performFullPreValidation(UIValidationKey paramUIValidationKey,UIValidationCriteria paramUIValidationCriteria, Locale paramLocale)throws WTException {// TODO Auto-generated method stubUIValidationResultSet resultSet =new UIValidationResultSet();try{WTPrincipal wtp= SessionHelper.manager.getPrincipal();//u-3 ?//if(wtp.getName().equals("Administrator")){System.out.println("用户名= "+wtp.getName());if(wtp.getName().trim().equals("Administrator")){System.out.println("======this is wcadmin========");resultSet.addResult(newUIValidationResult(paramUIValidationKey,UIValidationStatus.ENABLED));}else{System.out.println("=======this is not wcadmin=========");resultSet.addResult(newUIValidationResult(paramUIValidationKey,UIValidationStatus.HIDDEN));}}catch(WTException e){}return resultSet;}}2、在site.xconf文件里增加如下代码:<Property name="wt.services/rsc/default/com.ptc.core.ui.validation.UIComponentValidator/test/null/0"overridable="true"targetFile="codebase/service.properties"value="ext.corilead.validator.NavigationValidator"/>3、在windchill下执行命令xconfmanager –p4、重启服务器七、客制化部件操作下拉菜单1、简单菜单(1)在PartClient-actionmodels.xml文件中做如下修改<model name="more parts actions" menufor="wt.part.WTPart"><action name="searchBom" type="part"/></model>(2)在PartClient-actions.xml中添加如下配置<action name="searchBom" ajax="page"><command url="netmarkets/jsp/par/searchBom.jsp" windowType="popup"/></action>注:action name要和在PartClient-actionmodels.xml里的action name保持一致(3)在partResource.java中添加下列内容:@RBEntry("search BOM")@RBComment("show BOM")public static final String PRIVATE_CONSTANT_357 = "part.searchBom.description";(4)在partResource_zh_CN.java中添加下列内容@RBEntry("查找BOM")@RBComment("show BOM")public static final String PRIVATE_CONSTANT_357 = "part.searchBom.description";(5)编译partResource.java在shell中执行如下命令javac +空格+partResource.java全路径(6)编译文件partResource_zh_CN.java在shell下执行命令native2ascii -encoding utf-8 +空格+partResource_zh_CN.java+空格+转码后的文件存放路径回车,javac +空格+转码后的partResource_zh_CN.java文件的全路径(7)将生成的class文件拷贝到codebase对应的相同目录下,重启服务器2、三级子菜单(1)在PartClient-actionmodels.xml文件中做如下修改<model name="more parts actions" menufor="wt.part.WTPart"><submodel name="second level menu"/></model><model name="second level menu"><action name="thirdlevel" type="part"/></model>(2)PartClient-actions.xml文件<objecttype name="part" class="wt.part.WTPart"resourceBundle="com.ptc.windchill.enterprise.part.partResource"><action name="thirdlevel"><command windowType="popup" url="/netmarkets/jsp/part/thirdlevel.jsp"/> </action></objecttype>(3)partResource.java文件public final class partResource extends WTListResourceBundle {......@RBEntry("third Level")@RBComment("show third Level")public static final String PRIVATE_CONSTANT_358 = "part.thirdlevel.description";@RBEntry("Second Level")public static final String PRIVATE_CONSTANT_359 = "object.second level menu.description"; }(4)partResource_zh_CN.java文件public final class partResource_zh_CN extends WTListResourceBundle {......@RBEntry("三级菜单")@RBComment("show third Level")public static final String PRIVATE_CONSTANT_358 = "part.thirdlevel.description";@RBEntry("二级菜单")public static final String PRIVATE_CONSTANT_359 = "object.second level menu.description"; }(5)编译方法同上重启服务器。

Windchill二次开发

Windchill二次开发

Windchill 二次开发中常用的API方法# 1.根据零件名称/编码得到该零件# wt.clients.prodmgmt.WTPartHelper.findPartByName(name) ;# wt.clients.prodmgmt.WTPartHelper.findPartByNumber(number);# 2.根据WTpart得到WTparMaster# WtPart wtpart;# WTPartMaster wtmaster=(WTPartMster)part.getMaster();# 3.获取codebase下配置文件wt.properties属性信息# WTProperties wtproperties = WTProperties.getLocalProperties();# String wthome = wtproperties.getProperty("wt.home", ""); //codebase的文件夹路径# 4.获取part被借用的所有父部件# QueryResult qr= wt.part.WTPartHelper.service.getUsedByWTParts(WTPartMster wtMaster);# 注:此方法得到的结果为该part被使用情况的全部父部件,包括了Design视图及Manufacturing视图更包括# 了父部件使用part的所有修订版本,打印出来可以看到会有相同的部件编号,不同的修订版本.# 5. 根据OID 获取Wtpart# wt.fc.WTReference partRef = new wt.fc.ReferenceFactory().getReference( oid );# WTPart wtpart=(WTPart)partRef;# 6.得到零件最新版本# WTPart wtpart= (WTPart) VersionControlHelper.getLatestIteration(part);# 7.通过过滤得到零件最新版本# QuerySpec querysearch = new QuerySpec(WTPartMaster.class);# //查询所有的WTPartMaster# QueryResult queryresult = PersistenceHelper.manager.find(querysearch);# LatestConfigSpec latestconfigspec = new LatestConfigSpec();# //根据WTPartMaster查询所有最新版本的零部件# QueryResult allWTPart = ConfigHelper.service.filteredIterationsOf(queryresult,latestconfigspec)# 8.查询某用户某段时间范围内创建的零件# QuerySpec qs = new QuerySpec(WTPart.class);# qs.appendSearchCondition(new SearchCondition(WTPart.class,WTPart.CREATE_TIMESTAMP, true,# new AttributeRange(begintime, endtime)));//删选条件时间范围内# qs.appendAnd();//一定要加上不然下一个条件不能删选# qs.appendSearchCondition(new SearchCondition(WTPart.class,# "iterationInfo.creator.key", SearchCondition.EQUAL,PersistenceHelper.getObjectIdentifier# (name)));//删选条件用户# QueryResult qr = PersistenceHelper.manager.find(qs);# //今后持续更新public static WTUser getUserFromName(String name) throws WTException {Enumeration enumUser = OrganizationServicesHelper.manager.findUser(, name);WTUser user = null;if (enumUser.hasMoreElements())user = (WTUser) enumUser.nextElement();if (user == null) {enumUser = OrganizationServicesHelper.manager.findUser(WTUser.FULL_NAME, name);if (enumUser.hasMoreElements())user = (WTUser) enumUser.nextElement();}if (user == null) {throw new WTException("系统中不存在用户名为'" + name + "'的用户!");}return user;}}10.windchill 中查询,高级查询,基本查询QuerySpec qs = new QuerySpec();//构造Int index = qs.appendClassList(WTPart.class,true);//添加查询类型,获取类型索引,第2个参数表示“要查询的类型、表”WhereExpression where = new SearchCondition(WTPart.class, WTPart.xx, “=”, xx);//泛型在WC API中的使用//获取查询条件数目If(qs.getConditionCount()>0 && qs.getW here().endsWith(“")){qs.appendAnd();}//添加查询条件qs.appendWhere(where, new int[]{index});//** 以下是联合查询的API范例。

Windchill系统操作指导

Windchill系统操作指导

Windchill系统操作指导Wind chill系统操作⼿册历史纪录版本⽇期修改⼈修改内容审核⼈备注V1.0 2013-9-18 赵益佩建⽴⽂件V1.1 2013-9-24 赵益佩补充NPI流程、技术⽂档命名规则V1.2 2013-11-29 赵益佩补充NPI流程图、变更管理流程图V1.3 2014-3-19 赵益佩补充Windchill系统各团队⾓⾊职责⽬录WINDCHILL系统操作⼿册 (1)W INDCHILL系统简介 (3)注意事项与操作技巧 (4)W INDCHILL系统各团队⾓⾊职责 (5)第⼀章总体设计 (7)第⼆章环境配置 (8)2.1修改HOSTS⽂件 (8)2.2修改IE设置 (8)2.3安装JRE6 (10)2.4修改⽤户名与密码 (10)2.5安装常⽤插件 (12)第三章基本操作 (15)3.1通⽤操作界⾯ (15)3.2导航栏 (17)第四章产品模块 (18)4.1产品创建 (18)4.2添加团队成员 (19)第五章项⽬模块 (22)5.1项⽬创建 (22)5.2维护项⽬团队 (24)5.3维护项⽬计划 (27)第六章通⽤业务操作 (33)6.1⽂件夹管理 (33)6.2⽂档管理 (35)6.3图纸管理 (40)6.4部件管理 (43)6.5NPI流程 (48)i.Sap-零件NPI流程图 (49)ii.Sap-电⼦物料NPI流程图 (53)iii.Sap-组件NPI流程图 (54)iv.Sap-产品NPI流程 (54)v.Sbom-虚拟件 (54)6.6变更管理 (55)i.电⼦物料变更流程 (61)ii.机械物料变更流程图 (63)iii.组件变更流程流程图 (63)第七章⽔印 (64)第⼋章任务委派 (65)第九章技术⽂件命名规则 (67)7.1概述 (67)7.2开发⽂档命名规则 (67)Wind chill系统简介PLM简介PLM,全称ProductLifecycleManagement,是⼀种企业信息化的商业战略。

Windchill模块组成和介绍

Windchill模块组成和介绍

一、Windchill模块组成及介绍:1.Windchill PDMLink® — 产品和过程控制难以查找的或不可靠的数据可能会阻碍任何一支制造团队的创新能力和生产效率。

但是,当所有与产品相关的各方访问的都是一个值得信赖的中央数据信息库时,制造商就能很专业地管理所有形式的数字化产品开发数据(包括机械、电气和软件数据)。

Windchill PDMLink 是理想的解决方案。

这个经过业界验证的产品数据管理 (PDM) 系统基于 Web(可轻松在企业范围内访问),它支持分散在各地的团队,同时对关键的过程(如变更/配置管理和详细设计)进行管理。

Windchill PDMLink 还充当着许多可选模块的基础,这些模块包括 Pro/INTRALINK、Windchill MPMLink、Windchill RequirementsLink、Windchill MPMLink、Windchill PartsLink 和 Windchill Supplier Management 等。

现在,企业或扩展的供应链中任何地方的任何人都能通过使用 Windchill PDMLink 中的工具就产品开发进行沟通和协作。

功能和优势:基于 Web 的主产品数据管理信息库,允许在世界各地访问来自各种来源的最新准确信息与多个机械/电气 CAD 应用程序、嵌入式软件工具、桌面应用程序和企业资源计划系统无缝衔接通过控制和自动执行通常一片混乱的产品开发过程(例如变更管理过程)预防代价高昂的设计错误利用功能强大的配置工具帮助快速开发新产品在数据采集和产品信息的分布及跨企业协作方面能与 Creo Elements/Pro 和 Windchill ProjectLink 无缝操作2.Windchill ProjectLink™ — 在产品开发过程中进行基于Web的项目协作当今充满挑战的全球环境要求有效的协作。

利用 Windchill ProjectLink,您能够在防火墙内外安全地驾驭整个团队的才智和活力。

Windchill二次开发常用API说课讲解

Windchill二次开发常用API说课讲解

Windchill二次开发常用API说课讲解W i n d c h i l l二次开发常用A P I1.1.根据零件名称/编码得到该零件2.wt.clients.prodmgmt.WTPartHelper.findPartByName(name ) ;3.wt.clients.prodmgmt.WTPartHelper.findPartByNumber(nu mber);4.2.根据WTpart得到WTparMaster5.WtPart wtpart;6.WTPartMaster wtmaster=(WTPartMster)part.getMaster();7.3.获取codebase下配置文件wt.properties属性信息8.WTProperties wtproperties = WTProperties.getLocalProperties();9.String wthome = wtproperties.getProperty("wt.home", "");//codebase的文件夹路径10.4.获取part被借用的所有父部件11.QueryResult qr=wt.part.WTPartHelper.service.getUsedByWTParts(WTPartMs terwtMaster);12.注:此方法得到的结果为该part被使用情况的全部父部件,包括了Design视图及Manufacturing视图更包括了父部件使用part的所有修订版本,打印出来可以看到会有相同的部件编号,不同的修订版本.13.5.根据OID 获取Wtpart14.wt.fc.WTReference partRef = newwt.fc.ReferenceFactory().getReference( oid );15.WTPart wtpart=(WTPart)partRef;16.6.得到零件最新版本17.WTPart wtpart= (WTPart)VersionControlHelper.getLatestIteration(part);18.7.通过过滤得到零件最新版本19.QuerySpec querysearch = new QuerySpec(WTPartMaster.class);20.//查询所有的WTPartMaster21.QueryResult queryresult =PersistenceHelper.manager.find(querysearch);testConfigSpec latestconfigspec = newLatestConfigSpec();23.//根据WTPartMaster查询所有最新版本的零部件24.QueryResult allWTPart =ConfigHelper.service.filteredIterationsOf(queryresult,latestc onfigspec)25.8.查询某用户某段时间范围内创建的零件26.QuerySpec qs = new QuerySpec(WTPart.class);27.qs.appendSearchCondition(newSearchCondition(WTPart.class,WTPart.CREATE_TIMESTAMP, true,new AttributeRange(begintime, endtime)));//删选条件时间范围内28.qs.appendAnd();//一定要加上不然下一个条件不能删选29.qs.appendSearchCondition(newSearchCondition(WTPart.class,30."iterationInfo.creator.key",SearchCondition.EQUAL,PersistenceHelper.getObjectIdentifi er(n ame)));//删选条件用户31.QueryResult qr = PersistenceHelper.manager.find(qs);32.//今后持续更新if (enumUser.hasMoreElements())user = (WTUser) enumUser.nextElement();}if (user == null) {throw new WTException("系统中不存在用户名为'" + name +"'的用户!");}return user;}}10.windchill 中查询,高级查询,基本查询QuerySpec qs = new QuerySpec();//构造Int index = qs.appendClassList(WTPart.class,true);//添加查询类型,获取类型索引,第2个参数表示“要查询的类型、表”WhereExpression where = new SearchCondition(WTPart.class, WTPart.xx, “=”, xx);//泛型在WC API中的使用//获取查询条件数目If(qs.getConditionCount()>0 && qs.getWhere().endsWith(“")){qs.appendAnd();}//添加查询条件qs.appendWhere(where, new int[]{index});//** 以下是联合查询的API范例。

Windchill ProductPoint 介绍

Windchill  ProductPoint 介绍
轻松创作和处理文档
• 自动锁定和取消锁定 • 查看和恢复过去的修订版本 • 设置特定于文档的安全性
Windchill 互操作性
• 跨 Windchill ProductPoint 和其他 Windchill 系统共享 CAD 数据的 功能(可选)2
• 支持在熟悉的 SharePoint 环境中呈现诸如任务列表等 Windchill 信息(可选)
些团队依赖各种各样的创作工具来创建复杂的信息资产,例如 Pro/ENGINEER® 和 AutoCAD® 文件、技术文档和工程计算。Windchill ProductPoint 支持这些丰富的创作工具、包含可靠的可视化功能, 并且为产品开发团队提供特制的解决方案。
主要优点
• 快速搜索和查找正确文件的最新版本,从而帮助提高团队的工 作效率
Windchill ProductPoint 中的标准零件设计目录
平台和语言支持
• 客户端支持 : - 仅限 Windows 客户端 - Pro/ENGINEER 客户端必须为 Pro/ENGINEER Wildfire 野火版 4.0 M060 或更高版本
• 服务器支持 : - Windows Server 2003 - Windows SharePoint Services 3.0(必需,并且随 Windows Server 附带)
CAD 文件、工程计算和技术文档)。
在各行各业中,Microsoft SharePoint 正迅速成为进行基于文件的 简单协作的常用解决方案。SharePoint 不仅与 Microsoft Office® 和 Windows® 环境紧密集成,而且还与 Windows Server 捆绑在一起。作 为 Microsoft 的协作基础结构,SharePoint 还提供了一系列很有价 值的社交网络功能,能更好地促进信息的共享。但是,SharePoint 对 于 产 品 开 发 团 队 并 不 是 足 够 有 效 的 技 术 解 决 方 案, 因 为 这

WindChill二次开发的说明文档

WindChill二次开发的说明文档
Benefits
Less network bandwidth Desktop-like application behavior More responsive system Less server load Faster client rendering Better usability
16
PTC CONFIDENTIAL
Benefits Smaller pages downloaded to the client Faster rendering time Less server-load More responsive system User can continue to interact with page while part of it is updating
5
PTC CONFIDENTIAL
JCA Update – AJAX
Infrastructure use of AJAX to date
Add row to table – no page refresh Partial page refreshes on single row update/delete e.g. checkin Partial page refresh on table view change Wizard speed & usability – background download of pages Part look up – auto complete Dynamic menus
Suggest Like Google Suggest User Picker Part Number (Tabular Input)
Full Name:
Kni

Windchill开发之创建对象

Windchill开发之创建对象

第一章Windchill开发之创建对象2010-12-09 21:41:18| 分类:Windchill 应用空| 标签:无|字号大中小订阅在windchill开发的过程中,整个操作围绕的都是增删改查,今天我们将介绍的是增加,此次以part的创建为例,对于删除,修改都一几乎一样的代码。

以下是源代码:import ng.reflect.InvocationTargetException;import java.rmi.RemoteException;import wt.fc.PersistenceHelper;import wt.fc.QueryResult;import wt.folder.Folder;import wt.folder.FolderEntry;import wt.folder.FolderHelper;import wt.inf.container.WTContainer;import wt.inf.container.WTContainerRef;import wt.inf.library.WTLibrary;import wt.method.RemoteMethodServer;import wt.part.WTPart;import wt.query.QueryException;import wt.query.QuerySpec;import wt.query.SearchCondition;import wt.type.TypeDefinitionReference;import wt.type.TypedUtility;import wt.util.WTException;import wt.util.WTPropertyVetoException;import wt.vc.views.ViewHelper;import wt.vc.views.ViewReference;public class Demo4 implements wt.method.RemoteAccess{// 在类型管理器中自定义的part类型private static String lenovoPart_type = "wt.part.WTPart|cn.jwis.kenny.LenovoPart";// 产品中文件夹的路径,注意默认在文件夹前夹上Defaultprivate static String PartPath = "Default/NewPart";/*** 创建一个新的部件** @param args* @throws WTException* @throws WTPropertyVetoException* @throws InvocationTargetException* @throws RemoteException*/public static void main(String[] args) throws WTPropertyVetoException, WTException, RemoteException, InvocationTargetException{// TODO Auto-generated method stubWTPart part =RemoteMethod("001", lenovoPart_type);if(part!=null){System.out.println("part 的名称是:"+ part.getName());}}//创建部件要用rmipublic static WTPart RemoteMethod(String partNumber,String partType) throws RemoteException, InvocationTargetException{String CLASSNAME = (Demo4.class).getName();Class argTypes[];Object svrArgs[];argTypes = (new Class[]{ String.class,String.class });svrArgs = (new Object[]{ partNumber,partType});return (WTPart) RemoteMethodServer.getDefault().invoke("newPart", CLASSNAME, null, argTypes, svrArgs); }/*** 创建一个新的部件,类似的代码可以实现修改part的基本属性** @param number* 部件的编码* @param PartType* 部件的类型,部件在windchill中可以自定义很多中类型* @return* @throws WTException* @throws WTPropertyVetoException*/public static WTPart newPart(String number, String PartType) throws WTException, WTPropertyVetoException {WTPart newPart = null;// 获取容器WTContainer container = getContainer("Moto");System.out.println(1);// 获取容器的引用WTContainerRef ref = ref = WTContainerRef.newWTContainerRef(container);// 获取文件夹Folder folder = wt.folder.FolderHelper.service.getFolder(PartPath, ref);System.out.println(2);String strPartNumber = number;String strPartName = number;wt.vc.views.View view = ViewHelper.service.getView("Design");ViewReference viewRef = ViewReference.newViewReference(view);System.out.println(3);TypeDefinitionReference typeDefinitionRef = TypedUtility.getTypeDefinitionReference(PartType); System.out.println(4);// 创建一个部件,编码与名称newPart = WTPart.newWTPart(strPartNumber, "");// 为部件设置容器newPart.setContainer(container);// 为部件设置类型newPart.setTypeDefinitionReference(typeDefinitionRef);// 为部件设置viewnewPart.setView(viewRef);// 为此部件设置存贮位置FolderHelper.assignLocation((FolderEntry) newPart, folder);// 保存部件,切忌不要保存两次。

sharepointXX本地开发解决方案以及远程调试

sharepointXX本地开发解决方案以及远程调试

sharepoint,XX本地开发解决方案以及远程调试篇一:SharepointXX使用技巧及解决方法目录1234 在SharePoint XX中显示“以其他用户身份登录” .............................................. ............ 2 SharePoint XX用户配置文件服务 ................................................ ....................................... 4 SharePoint XX配置启用搜索服务 ................................................ ....................................... 8 Office web app serverXX详细的安装和部署 ................................................ .. (19)前提条件 ................................................................................................... ................................................... .. (19)Office Web App Server XX安装 ................................................ ................................................... (20)Office Web App Server XX配置 ................................................ ................................................... (22)Sharepoint XX与Office Web App Server XX集成 ................................................ (29)Office Web App Server XX效果测试 ................................................ ................................................... . (31)纠正在将 Office Web Apps 与 SharePoint XX 结合使用时出现的错误 (32)567 Office Web AppXX 在线查看PDF文件 ................................................ ............................ 32 什么是SkyDrive Pro? ............................................. ................................................... .......... 39 关于(转载于: 小龙文档网:sharepoint,XX本地开发解决方案以及远程调试)SharePoint 附带的工作流 ................................................ . (44)什么是SharePoint 工作流?............................................... ................................................... . (44)我可以使用SharePoint 工作流自动执行哪些流程? .............................................. (46)哪些人可以添加和启动SharePoint 工作...................................................48如何添加和运行SharePoint 工作流? .............................................. ................................................... (49)我是否可以创建自己的自定义SharePoint 工作流? .............................................. (51)8 未解决问题 ................................................ ................................................... . (52)9启动User Profile Synchronization service失败 ................................................ . (52)搜索服务无法使用 ................................................ (52)1 在SharePoint XX中显示“以其他用户身份登录”在我新建了SharePoint XX的网站后,发现界面与XX 有一些不同,比如缺少了“以其他用户身份登录”,这给我的测试带来很大不便。

Windchill9[1].0开发技术介绍

Windchill9[1].0开发技术介绍
问题: 问题
Workflow instances cannot be terminated Tasks cannot be performed or completed – fail with errors
原因: 原因
Workflow customizations were not originally designed to be eventually upgraded Source system workflow instances are not “evolvable” – cannot change to work with the new Windchill codebase
© 2006 PTC
使用Ajax的好处 的好处 使用 的好
使用AJAX,可以为ISP、开发人员、终端用户带来可见的便捷: ฀ 减轻服务器的负担。AJAX 的原则是“按需取数据”,可以最大程度的减少冗余请 求,和响应对服务器造成的负担。 ฀ 无刷新更新页面,减少用户心理和实际的等待时间。特别的,当要读取大量的数据 的时候,不用像Reload 那样出现白屏的情况,AJAX 使用XMLHTTP 对象发送请求并得 到服务器响应,在不重新载入整个页面的情况下用Javascript 操作DOM 最终更新页面。 所以在读取数据的过程中,用户所面对的不是白屏,是原来的页面内容(也可以加一个 Loading 的提示框让用户知道处于读取数据过程),只有当数据接收完毕之后才更新相应 部分的内容。这种更新是瞬间的,用户几乎感觉不到。 ฀ 带来更好的用户体验。
฀ 可以把以前一些服务器负担的工作转嫁到客户端,利用客户端闲置的能力来处理, 减轻服务器和带宽的负担,节约空间和宽带租用成本。 ฀ ฀ ฀ 可以调用外部数据。 基于标准化的并被广泛支持的技术,不需要下载插件或者小程序。 进一步促进页面呈现和数据的分离
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于SharePoint的Windchill系统的开发
摘要:windchill作为plm行业代表性软件之一,拥有强大的功能和对多种企业级平台良好的兼容性。

但也正因为其强大而丰富的自定义功能使得很多用户在使用时不知所措。

本文旨在介绍基于微软sharepoint平台对windchill进行二次开发,方便用户对windchill数据进行访问和操作。

关键词:windchill;sharepoint;产品生命周期管理
中图分类号:tp311.52
windchill作为plm行业代表性软件之一,拥有强大的功能和对多种企业级平台良好的兼容性。

但也正因为其强大而丰富的自定义功能使得很多用户在使用时不知所措。

要熟练使用windchill需要经过较长时间的培训和相关领域的经验,对中小企业来说,在专业技术人员配备上可能更捉襟见肘。

sharepoint作为微软推出一个文档和信息共享的服务器平台有着友好的界面、强大的搜索功能和微软产品一贯的易用性,如果能将windchill的数据在sharepoint平台上加以呈现无疑可以降低使用的技术门槛,而对那些只想简单浏览数据的用户来说,sharepoint更能免去他们登录windchill查找的时间,将想要的信息更直观地显示出来。

本文通过对windchill进行二次开发,提出了基于sharepoint 的windchill web part系统。

1 windchill web part系统的模型
在整个系统中,windchill扮演着后台数据库系统的角色,其自带的info engine提供了数据访问与操作的各类接口和调用的方法。

本系统通过对info engine的二次开发,将基于数据类型的一系列crud(增删改查)操作封装成操作windchill数据的任务。

利用jaxb技术,再将任务转化成web服务方法,供sharepoint系统调用。

sharepoint提供了基于web方法的开发技术,可以将 web方法文件中的数据实体和操作转化为应用定义文件(adf),并导入到bcs (business connectivity service application)中。

本系统使用sharepoint作为开发平台,利用bcs技术在sharepoint的站点中就可以创建外部列表或者其他业务数据相关的web部件,通过它们将windchill的数据最终呈现在用户面前。

windchill的客户端可以通过jsp文件,使用wsdl作为接口定义语言,应用soap访问协议和tcp/ip网络传输协议实现对windchill 数据的访问。

windchill的web服务器(apache/tomcat)能够接受所有的访问请求,并将它们传给info engine服务器,然后通过info engine完成不同的访问任务,并将最终结果返回给客户端。

sharepoint能够通过adf文件的生成,将windchill中不同类型的数据以实体的形式部署到业务数据连接应用程序。

该应用可以在web部件,外部列表,和企业搜索引擎等功能模块中体现出来。

任何windchill数据的更新都能够同步到sharepoint的系统中。

2 windchill web part系统的关键技术
2.1 sharepoint bcs技术
bcs全名business connectivity services,是微软提出的一套数据集成解决方案,提供了一整套将sharepoint 2010与外部数据相连的功能。

使用bcs可以极大的扩展sharepoint的协作能力,将组织内其它系统中的数据也囊括到我们的协作体系中来。

用户可以在sharepoint里访问业务数据并将这些数据通过webpart的形式加以呈现,使用搜索引擎和索引功能用户还可以对这些数据进行检索。

bcs架构包含以下主要元素:
bdc metadata store-bdc元数据存储提供了外部内容类型的存储集合,每种内容类型描述了如何连接到对应的外部存储。

bdc server runtime-在bdc服务器端的runtime能够连接到后端系统并根据外部内容类型存储中定义的外部内容类型访问各种
数据。

内建的用户界面-bcs可以通过web部件自带的用户界面展示外部数据源的数据,并通过添加外部列表提供更深层次的集成。

bdc client runtime-使用户可通过客户端的缓冲机制进行脱机操作,还可以对数据进行改动并写回到服务器端。

2.2 windchill info engine技术
info engine是windchill系统中一个可以独立部署的集成引擎。

它提供了标准的适配器,能够直接将windchill应用程序第三方信息系统连接。

并将info engine服务器的请求转换为信息系统请求,因此适配器是实现信息系统集成的关键组件。

info engine作为
windchill的系统集成的一个重要模块,其主要特点有:
(1)基于行业标准的开放式体系架构。

(2)可靠的事务管理。

(3)综合的应用框架。

在windchill系统中,info engine模块实际是一个提供了数据访问的整合层。

它还是一个用来访问windchill数据和windchill 服务的抽象层。

在该层中,info engine将所有的核心业务逻辑实现成一个个的task并提供了用于访问的类和数据类型。

总而言之,info engine提供了访问和整合商务数据的高级语言。

3 结语
本文中通过sharepoint平台上对windchill进行二次开发,充分利用了sharepoint与windows、office及浏览器的紧密集成,使用户能更便捷地访问产品数据,在更大范围内将产品信息分享给临时用户和产品开发团队。

对中小企业来说,使用windchill web part还可以与那些正在使用windchill的客户进行数据的共享与协作,从而获得更多的合作机会。

而对于已经部署了windchill的大型企业,windchill web part则可以作为windchill的有效补充,使得公司研发团队和供应商在基于sharepoint平台上可以进行可控的信息共享。

参考文献:
[1]seth bates,anthonysmith,sharepoint 2010 user’s guide.apress,2010.
[2]cim data.cim data 2012 china plm market analysis report,2012.
[3]ptc corp.pds 2.0 business catalog services overview,2011.
[4]microsoft msdn杂志.使用sharepoint 2010中的业务连接服务,2009,12.
[5]刘亚锋.浅谈基于info*engine的windchill系统集成应用,2009.
[6]ptc corp.linkus architecture concept,2010.
作者简介:庄严,男,工程师。

作者单位:参数技术(上海)软件有限公司,上海 200120。

相关文档
最新文档