1、CoreUtil1、如何根据零部件的编号查找零部件的主数据(master)?-WTPartMaster 实现步骤:a、首先需要用定义查询条件类QueryResultqs QueryResultqs = new QuerySpec(WTPartMaster.class); b、定义搜索条件,以零部件编号方式在master中搜索 SearchCondition sc = new SearchCondition(WTPartMaster.class, WTPartMaster.NUMBER, SearchCondition.EQUAL, 零部件的编号); qs.appendSearchConditi
2、on(sc); c、得到零部件的主数据 qr = PersistenceHelper.manager.find(qs); WTPartMaster master = (WTPartMaster) qr.nextElement();2、如何根据零部件主数据(master)和视图名称获取对应最新版本零部件?-WTPart 实现步骤:a、根据视图名称获取视图对象 View viewObj = ViewHelper.service.getView(view); b、根据视图构造产品结构配置规范 WTPartStandardConfigSpec standardConfig = WTPartStanda
3、rdConfigSpec.newWTPartStandardConfigSpec(viewObj, null); standardConfig.setView(viewObj); c、根据master和视图获取对应最新的视图版本零部件 QueryResult qr1 = ConfigHelper.service.filteredIterationsOf(master, standardConfig); WTPart part = (WTPart) qr1.nextElement();3、如何根据oid获取windchill对象? 实现步骤:a、实例化一个ReferenceFactory Ref
4、erenceFactory rf=new ReferenceFactory(); b、根据ReferenceFactory的getReference(String oid)获取windchill对象 WTObject obj= (WTObject) rf.getReference(oid).getObject(); c、把obj转换为想要的windchill对象4、如何根据给定的父件part来查询子件及BOM信息(WTPartUsageLink)?-QueryResult 实现步骤:a、根据父件获取视图 View viewObj=(View) part.getView().getObject(
5、); /* 如果视图已经给定用下面的代码 View viewObj = ViewHelper.service.getView(view); */ b、得到视图配置规范 WTPartConfigSpec config = WTPartHelper.service.findWTPartConfigSpec();WTPartStandardConfigSpec standardConfig = config.getStandard(); standardConfig.setView(viewObj);这行代码一般都会加上try-catch c、开始查询用WTPartHelper帮助类 QueryRe
6、sult qr = WTPartHelper.service.getUsesWTParts(part, standardConfig);d、循环qr得到子件和BOM,主要qr.nextElement返回的是一个Persistable数组 需要判断得到的子件类型 while(qr.hasMoreElements() Persistable objects = (Persistable) qr.nextElement(); WTPartUsageLink link = (WTPartUsageLink) objects0;/BOM WTObject subPart = (WTObject) obj
7、ects1;/子件 if (subPart instanceof WTPart) WTPart sub = (WTPart) subPart; else WTPartMaster sub = (WTPartMaster) subPart;5、如何根据给定的父件得到其BOM(WTPartUsageLink)?-Vector 实现步骤:这里用部件part为例 a、得到part第一层子件 QueryResult links = WTPartHelper.service.getUsesWTPartMasters(part); b、得到BOM WTPartUsageLink usageLink = (W
8、TPartUsageLink) links.nextElement(); c、可以把b屏蔽,直接返回Vector集合 links.getObjectVectorIfc().getVector(); 6、如何根据文档doc获取关联的零部件? 实现步骤:a、用PartDocServiceCommand类的getAssociatedParts(WTDocument doc)方法即可 QueryResult qr = PartDocServiceCommand.getAssociatedParts(doc);7、如何获取含有主文件内容的对象的主内容(如文档,CAD图档。注意:变更请求,变更通告等变更对
9、象只有附件,没有主文件,因此不能作为输入!)? 实现步骤:a、初始化,首先根据对象将文件内容列表加载到内存中 ContentHolder holder = ContentHelper.service.getContents(对象); b、然后获取主文件 QueryResult qr = ContentHelper.service.getContentsByRole(holder, ContentRoleType.PRIMARY); ContentItem primaryContent =(ContentItem) qr.nextElement(); c、输出信息,需要判断primaryCont
10、ent的类型 if (primaryContent instanceof ApplicationData) 第一种:ApplicationData,即主文件或附件都是提交的应用软件产生的文件; ApplicationData data = (ApplicationData) primaryContent; else if (primaryContent instanceof URLData) 第二种:URLData,即主文件或附件都是添加的URL地址; URLData data = (URLData) primaryContent;8、如何根据对象获取其附件? 实现步骤:只需要把上面的7中的b
11、步骤QueryResult qr = ContentHelper.service.getContentsByRole(holder, ContentRoleType.PRIMARY);当中的 ContentRoleType.PRIMARY 改为ContentRoleType.SECONDARY即可 9、如何根据带有带有文件内容的对象(如文档,CAD图档)和主文件或附件得到文件内容的下载地址? 实现步骤:结合上面的7的实现加上RedirectDownload.getPreferredURL(ApplicationData , 对象).toExternalForm()即可获得下载地址10、如何根据
12、对象Oid获取对象的所有文件内容(包括主文件和附件)?-Vector 实现步骤:a、首先根据Oid获取相应的对象 b、根据对象将其文件内容加载到内存中去 ContentHolder holder=ContentHelper.service.getContents(对象); c、根据ContentHelper帮助类的getContentListAll(ContentHolder holder)获取文件内容列表 Vector contentList = ContentHelper.getContentListAll(holder); d、得到ContentItem类型(含有文件内容的类型) Con
13、tentItem contentItem = (ContentItem) contentList.elementAt(i); e、在输出信息时结合上面的7需要适当的判断一下WorkflowUtil1、如何根据根据部件、文档等windchill对象的编号和视图名获取相关流程? 实现步骤: a、首先根据编号用定义查询条件类QuerySpec查询windchill对象的主数据master 如:SearchCondition sc = new SearchCondition(WTPartMaster.class, WTPartMaster.NUMBER, SearchCondition.EQUAL,
14、partNumber); b、在根据主数据master查到到相应的windchill对象 根据核心代码包中CoreUtil的总结2可知master怎样得到windchill对象 c、首先把windchill对象类型转换为Persistable持久化类型 Persistable p = (Persistable) windchill对象; d、构造一个NmOid对象 ObjectIdentifier oi = PersistenceHelper.getObjectIdentifier(p); NmOid nmoid = NmOid.newNmOid(oi) e、根据NmWorkflowHelpe
15、r类getRoutingHistoryData(nmoid)对象就可得到流程对象WfProcess类 QueryResult qr = NmWorkflowHelper.service.getRoutingHistoryData(nmoid); WfProcess process = (WfProcess) qr.nextElement();2、如何根据部件、文档等windchill对象获取其相关流程对象? 实现步骤:a、首先把windchill对象类型转换为Persistable持久化类型 Persistable p = (Persistable) windchill对象; b、构造一个Nm
16、Oid对象 ObjectIdentifier oi = PersistenceHelper.getObjectIdentifier(p); NmOid nmoid = NmOid.newNmOid(oi) c、根据NmWorkflowHelper类getRoutingHistoryData(nmoid)对象就可得到流程对象WfProcess类 QueryResult qr = NmWorkflowHelper.service.getRoutingHistoryData(nmoid); WfProcess process = (WfProcess) qr.nextElement();3、如何根据
17、流程实例获取流程团队?-Team 实现步骤: 直接用团队帮助类TeamHelper.service的getTeam(TeamManaged process)方法 Team team=TeamHelper.service.getTeam(process);4、如何获得指定团队中指定角色的参与者?-Enumeration 实现步骤:直接用团队对象的getPrincipalTarget(Role role)方法 Enumeration enu=team.getPrincipalTarget(Role role)5、如何根据工作流本身和特定角色得到流程团队中特定角色的所有参与者信息?-Vector 实
18、现步骤:a、根据进程对象获取相关进程 WfProcess process =WorkflowUtil.getProcess(工作流本身); b、根据进程process获取其所拥有的团队 Team team=TeamHelper.service.getTeam(process); c、根据团队team获取其指定角色的所有参与者信息 Enumeration enu=team.getPrincipalTarget(Role role) d、循环enu得到WTPrincipalReference类 WTPrincipalReference principalRef = (WTPrincipalRefe
19、rence) enu.nextElement() e、根据WTPrincipalReference类的getPrincipal()方法就可以得到参与者信息了 WTPrincipal participant = principalRef.getPrincipal(); f、获取参与者的名字 participant.getName();6、如何添加一个参与者到流程某一指定角色?-boolean 实现步骤:a、首先根据进程对象得到相关进程 WfProcess process =WorkflowUtil.getProcess(processObj); b、根据进程process获取所属团队team w
20、t.team.Team team = getTeam(process); c、根据团队team已经指定角色role获取指定角色所有参与者 Enumeration enu=team.getPrincipalTarget(Role role) WTPrincipal participant = (WTPrincipalReference) enu.nextElement().getPrincipal(); d、要添加的参与者和角色已存在的参与者比较,如果以存在则返回false f、把角色名rolename转换为Role类,并把参与者添加到角色中,调用团队team.addPrincipal()方法
21、wt.project.Role role = (wt.project.Role) (wt.project.Role.toRole(rolename);team.addPrincipal(role, 添加的参与者);7、如何添加多个参与者到流程某一指定角色? 实现步骤:a、首先把多个参与者添加到集合中 b、然后在上面f步使用循环添加参与者即可8、如何获得流程的创建者? 实现步骤:a、首先确定要查询的流程实例 WfProcess currentProcess = getProcess(流程实例); b、根据流程实例获取其创建者,根据流程的getCreator()方法 WTPrincipal cur
22、Creator = (WTPrincipal) (WTPrincipalReference) currentProcess.getCreator().getObject();OrgUtil2、如何获取当前登录的用户和组织? 实现步骤:a、获取当前用户 WTUser user=SessionHelper.manager.getPrincipal(); b、根据user获取其所属组织WTOrganization org=OrganizationServicesHelper.manager.getOrganization(user)3、如何根据给定的用户id获得用户? 实现步骤: a、用查询类Que
23、rySpec qs = new QuerySpec(WTUser.class); b、用查询条件id限定用户,如果用户id无效,则返回空 SearchCondition sc = new SearchCondition(WTUser.class, name, SearchCondition.LIKE, userid, false); c、把查询条件和查询类绑定qs.appendSearchCondition(sc); d、得到返回结果QueryResult qr=PersistenceHelper.manager.find(qs); e、用qr.nextElement()得到用户WTUser
24、4、如何判断指定用户是否属于指定用户组的成员? 实现步骤:a、根据用户user获取其组织 WTOrganization org=OrganizationServicesHelper.manager.getOrganization(user) b、根据组织和组名查询到组 WTGroup group=OrgUtil.getGroupByName(WTOranization org, String groupName) c、根据WTGroup类的方法boolean flag= group.isMember(user)判断 如果flag为true则指定用户是指定用户组的成员,反之则不是5、如何根据组名
25、称获取组? 实现步骤:a、用定义查询条件类QuerySpec类和SearchCondition类来查询组 QuerySpec qs = new QuerySpec(WTGroup.class); b、根据组名groupName查询 SearchCondition sc = new SearchCondition(WTGroup.class, name, SearchCondition.EQUAL, groupName);qs.appendSearchCondition(sc); c、根据组的类型过滤SearchCondition sc2 = new SearchCondition(WTGrou
26、p.class, internal, SearchCondition.IS_FALSE);qs.appendAnd();qs.appendSearchCondition(sc2); d、得到结果QueryResult QueryResult qr =PersistenceHelper.manager.find(qs); e、得到组WTGroup WTGroup group=(WTGroup)qr.nextElement();6、如何根据组织来获得其下面的组? 实现步骤:a、用定义查询条件类QuerySpec类和SearchCondition类来查询组 QuerySpec qsx = new Q
27、uerySpec(OrgContainer.class); b、根据组名groupName查询 SearchCondition scx = new SearchCondition(OrgContainer.class,OrgContainer.NAME,SearchCondition.EQUAL,org.getName());qs.appendSearchCondition(scx)c、得到结果orgContainer QueryResult qrx = PersistenceHelper.manager.find(qsx); WTContainer orgContainer = (WTCon
28、tainer) qrx.nextElement(); d、根据ReferenceFactory类和orgContainer得到对象标识符类 ReferenceFactory rf = new ReferenceFactory();ObjectIdentifier objId = ObjectIdentifier.newObjectIdentifier(rf.getReferenceString(orgContainer); e、根据objId就可以通过查询条件得到组了 SearchCondition sc3 = new SearchCondition(WTGroup.class, contai
29、nerReference.key, SearchCondition.EQUAL, objId); qsx.appendSearchCondition(sc3); f、通过得到结果QueryResult qs.appendAnd(); QueryResult qr = PersistenceHelper.manager.find(qsx); g、得到组WTGroup WTGroup group=(WTGroup)qr.nextElement();7、如何得到Ladp目录服务? 方法:OrgUtil._getAllServices()若要对IBA进行一些操作,首先我们必须了解几个定义:软属性:.软
30、属性又称IBA属性,我们可以自己添加的属性。只是对象的的全局属性。软类型:软类型是一个对象的子类型。软类型是我们创建的子类型的对象。 例如:文档下面再创建一个描述文 档类型其中还有大类和小类的称呼,大类也就是软类型,小类就是软属性。1、如何根据对象的Oid获取IBA属性值、IBA名称和IBA显示名称? 实现步骤:a、首先根据Oid获取相关windchill对象 b、根据IBAValueHelper帮助类的刷新没有约束的属性容器方法refreshAttributeContainerWithoutConstraints(对象)得到IBAHolder储存器类型 IBAHolder ibaHolder
31、 = IBAValueHelper.service.refreshAttributeContainerWithoutConstraints(对象); c、根据IBAHolder储存器类型的getAttributeContainer()方法得到IBA的属性容器DefaultAttributeContainer DefaultAttributeContainer dac = (DefaultAttributeContainer) ibaHolder.getAttributeContainer(); d、根据dac的getAttributeValues()方法得到AbstractValueView类
32、型的数组 AbstractValueView valueViews = dac.getAttributeValues(); e、循环数组valueViews把里面的对象全用AbstractValueView 接受 for (int j = 0; j return Hashtable 实现步骤:可以参与上面的1和2,只需要把1中获取IBA属性值的方法改成 String value = IBAValueUtility.getLocalizedIBAValueDisplayString(avv, locale);即可4、如何根据IBA的逻辑标识符获取其属性定义? 实现步骤:a、首先搜索逻辑标识符对象
33、 QuerySpec qs = new QuerySpec(LogicalIdentifierMapEntry.class);SearchCondition sc = new SearchCondition (LogicalIdentifierMapEntry.class,LogicalIdentifierMapEntry.LOGICAL_IDENTIFIER, SearchCondition.EQUAL, logicalId);qs.appendSearchCondition(sc);QueryResult qr = PersistenceHelper.manager.find(qs); b
34、、从qr中取出逻辑标识符对象LogicalIdentifierMapEntry,然后根据逻辑标识符对象得到元数据类型SoftMetaData LogicalIdentifierMapEntry logicalIdentifier = (LogicalIdentifierMapEntry) qr.nextElement(); SoftMetaData softMetaData = logicalIdentifier.getIdentifiedObject(); c、把softMetaData转成IBA属性定义类型AbstractAttributeDefinition AbstractAttrib
35、uteDefinition attributeDef = (AbstractAttributeDefinition) softMetaData; d、根据attributeDef获取IBA属性定义视图AttributeDefDefaultView IBADefViewManager.getAttDefView(attributeDef);5、如何根据IBA对象和IBA属性表更新软属性?-return IBA对象 实现步骤:a、首先根据IBA对象得到IBA属性容器 IBAHolder ibaHolder = (Typed) IBAValueHelper.service.refreshAttrib
36、uteContainerWithoutConstraints(ibaHolder);DefaultAttributeContainer dac = (DefaultAttributeContainer) ibaHolder.getAttributeContainer(); b、根据dac和属性表更新软属性 dac =IBAUtil.setSoftTypeIBAValues(dac, attributes); ibaHolder.setAttributeContainer(dac); ibaHolder = (Typed) wt.iba.value.service.LoadValue.apply
37、SoftAttributes(ibaHolder);6、如何把一个对象(可称为资源对象source)的IBA属性拷贝到另一个对象(可称为目标对象dest)? 实现步骤:a、首先可根据3得到资源对象source的IBA属性值表 b、然后根据5把资源对象source的IBA属性值表更新到目标对象dest7、如何根据逻辑标识符得到IBA类型标识TypeIdentifier? 实现步骤:a、根据ClientTypedUtility类的getTypeIdentifier(Stirng logicalId) TypeIdentifier typeidentifier = ClientTypedUtilit
38、y.getTypeIdentifier(logicalId);8、如何根据IBA对象得到IBA类型标识TypeIdentifier? 实现步骤:a、根据TypedUtility类的getTypeIdentifier(IBA对象) TypeIdentifier typeidentifier = TypedUtility.getTypeIdentifier(IBA对象);9、如何根据软类型标识查找软类型? 实现步骤:a、找到windchill系统里的TypeDefinitionCacheFactory类的路径,用软类型标识缓存类TypeDefinitionCache接受 TypeDefinitio
39、nCache typedefinitioncache = (TypeDefinitionCacheFactoryInterface) Class.forName(com.ptc.core.meta.type.mgmt.server.impl.TypeDefinitionCacheFactory).newInstance().getTypeDefinitionCache(); b、得到软类型标识类TypeIdentifier的类型名称 String typeName = typeidentifier.getTypename(); c、根据TypeDefinitionCache的getTypeDefinition( String typeName,boolean flag)得到软类型定义视图TypeDefinitionDefaultView TypeDefinitionDefaultView typeDefView = typedefinitioncache.getTypeDefinition(typeName, true);
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。