基于SharePoint的Windchill系统的开发
- 格式:doc
- 大小:25.00 KB
- 文档页数:5
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的技术状态管理1 引言技术状态管理是一门管理科学,是系统工程管理的一个重要方面,它应用于产品的整个寿命周期中,准确地描述了产品的功能特性(如:速度、可靠性、维修性、安全性等)和物理特性(如:形状、尺寸、重量等)并提供了明确的技术和行政的控制方法。
在我所科研设计中技术状态项目实施技术状态管理,即对舰船总体、系统在性能技术指标论证阶段所确定的功能基线、设计阶段所确定的分配基线、定型阶段所确定的产品基线实施管理。
以下针对我所技术状态管理的基本要求,介绍基于Windchill系统建立技术状态管理的几个关键点。
2 技术状态管理的基本概念2.1 技术状态技术状态是指技术文件中规定的并且能在产品上实现的硬件、软件或其组合体的功能特性、物理特性和接口特性。
2.2 技术状态项目技术状态项目是满足最终使用功能要求并被指定为独立进行技术状态管理的硬件、软件或集合体。
2.3 技术状态基线在技术状态项目研制过程中的某一特定时刻,被正式确认并被作为今后研制、生产活动基准的技术状态文件。
一般有三种技术状态基线:功能基线、分配基线和产品基线。
功能基线是经正式确认的,用以描述装备系统或独立研制的重大技术状态项目中功能特性、接口特性和验证上述特性是否达到规定要求所需检查的文件。
分配基线是经正式确认的用以描述技术状态项目下列内容的文件:从装备系统或高一层技术状态项目分配给该技术状态项目的功能特性和接口特性;技术状态项目的接口要求;附加的设计约束条件;验证上述特性是否达到规定要求所需的检查。
各技术状态项目分配基线的综合,形成满足装备系统功能基线目标的技术途径。
产品基线是经正式确认的用以描述技术状态项目下列内容的文件:技术状态项目所有必需的功能特性和物理特性;被指定进行生产验收试验的功能特性和物理特性,为保障技术状态项目合格所需的试验。
2.4 技术状态管理构架技术状态管理主要由四大要素构成:技术状态标识、技术状态控制、技术状态审核和技术状态记实。
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 参数会话的通讯。
附录A: Windchill快速启动解决方案功能介绍Windchill®快速启动解决方案Windchill快速启动解决方案是“交钥匙工程”,它使用预先包装好的软件和服务来完成特定的业务过程,以快速获取投资回报。
该套解决方案提供了一个建立在公共Windchill体系架构和平台上的创建-协作-控制组合功能。
综合了为数百家客户部署Windchill积累的经验,Windchill快速启动解决方案具有最佳的用户界面、预装的标准工作流和可配置的过程,所以易于使用。
这些解决方案提供了许多实用功能,其中包括CAD集成、丰富的可视化、以及分布式信息共享功能。
每个解决方案都提供了支持特殊业务过程所必需的功能,这些解决方案可以被完美组合,以满足多个产品生命周期阶段的需求。
为了进一步加快投资回报,Windchill快速启动解决方案的价格固定,并包括资深顾问提供的确定范围内的技术服务和培训。
这些实施工作可以在很短的几周内完成,而不象其它企业系统要用几个月或者几年。
Windchill快速启动解决方案包括:Windchill PDMLinkWindchill PDMLink汇集、控制和利用整个产品生命周期中的数字化产品信息,通过一个基于Web的信息源使参与产品开发过程的每个人都能够轻而易举地访问到各种形式的最新准确信息。
随处可用的基于浏览器的强大可视化功能,确保工程师和非工程师无论身在何处,无需启动原始的应用程序都可以在自己的桌面上浏览和圈阅复杂的2D和3D产品信息。
主要功能:●一个主产品知识库把数字化产品表示(其中包括物料清单、文档、组件属性、二维工作图和模型、原理图、软件模块、技术规格、数据资料和修订记录)编制在一个基于Web的虚拟库中;它支持强大的搜索功能和相关信息的超链接导航。
●强大的产品结构管理功能,可以在建立和处理产品时支持产品配置管理-其中包括自动从CAD模型获得的配置。
●过程和信息的阶段-关口管理有助于管理产品开发过程。
主要内容: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 二次开发中常用的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系统操作指导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模块组成及介绍: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说课讲解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开发之创建对象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);// 保存部件,切忌不要保存两次。
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 有一些不同,比如缺少了“以其他用户身份登录”,这给我的测试带来很大不便。
基于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。