四理性的玫瑰会给予类的默认名称(“NewClass”)。开始键入WTDocument;
当WTDocument在下拉列表中出现,选择它。
例如:
选择在这里作为参考现有的类
当引用一个现有的类,在现有的类已选定,理性玫瑰会打开一个对话框:
删除默认NewClass
这表明,这是与默认名称(NewClass)创建的类将不再被引用,并且可以从模型中删除。这是确定; WTDocument被引用,而不是NewClass。
选择是。
第7步。之间建立一个扩展类和扩展推广。
答:选择工具“>创建”>的推广。使用鼠标来选择扩展 - 不要放开鼠标按钮 - 并拖动鼠标到父类。
还有一个图标来创建的概括。
湾保存更改。
第8步。系统生成。
答:选择一个模型类,而不是一OOTB类。
湾选择工具“>的Windchill>”系统生成。
角除模块描述符选择所有的复选框。模块描述符是一个保留研发功能
例如:
四选择确定。
大肠杆菌该系统将打开一个生成脚本。阅读中的错误输出,然后关闭此脚本中:
例如:
第9步。编译所有的Java源创建由系统生成。
如果这一步没有完成,方法Server将无法启动一
java.lang.ClassNotFoundException异常:
(wt.introspection.introspectionResource / 6)wt.introspection.WTIntrospectionException:
反省错误。系统信息如下:
嵌套异常是:
java.lang.ClassNotFoundException:com.customer.doc.CustomerOrder
...
具体来说,将丢失的类文件,以便与注册表
物业
第10步。执行生成的SQL。
如果这一步没有完成,方法Server将无法启动,将抛出一个非常漫长的wt.pom.DatastoreException异常:
wt.services.ManagerException:wt.util.WTException:(wt.pom.pomResource / 0)wt.pom.A持久性错误。系统信息如下:
嵌套异常是:wt.pom.DatastoreException:一个SQL错误发生的“(选择'com.ptc.windchill.enterprise.report.ThirdPartyReportModelData从
...
这表明没有任何的扩展,需要进行表
坚持。
答:导航到WT_HOME /数据库/ SQL中/的COM /客户目录。访问SQL * Plus中的Windchill的数据库用户。
湾总是会建立索引的表之前。执行以下命令:
例如:
@ Make_pkg_customer_Table.sql
@ Make_pkg_customer_Index.sql
角退出SQL * Plus中。
第11步。重新启动Tomcat和方法的服务器。
如果这一步没有完成,方法Server不会重新载入
注册表中的属性文件,并随后不知道新
定制。
第12步。测试。
答:测试中的UI。该函数创建文档应该有一个附加的类型 - com.customer.doc.CustomerOrder:
例如:
-----------------
练习6-1:扩展WTDocument
目标
●创建一个新的包结构。
●扩展Windchill的类。
●型号新的属性。
●实施定制。
方案
客户已确定了一个新的业务信息类型相似,一些额外的属性WTDocument要求。在这个练习中,您将模型所要求的属性的自定义WTDocument。
第1步。打开Windchill的模型。
答: Rational Rose中开始。
湾打开WT_HOME /型钢/重/ WTDesigner.mdl。
角?当记者问到WTdesigner.mdl负荷亚基,选择是:
例如:
第2步。在Rational Rose中创建包结构。
答:使用浏览器,浏览到逻辑视图“> <<assembly>>全国妇女委员会,并打开图SystemGeneration图。
结果:
SystemGeneration图
湾选择工具>“创建>”包。
还有一个图标来创建一个包。
角使用跨毛发位置包。
四一个软件包的默认名称将NewPackage。
大肠杆菌从NewPackage包重命名为COM。要重命名的包,选择包装上的,然后键入新名称com域名。
第3步。打开COM组件并创建一个名为客户另一个包。
第4步。打开客户包并创建一个名为doc的另一个包。
答:这项一揽子计划将与由同一名称的现有包冲突,所以不同的包创建过程将被使用。
湾要创建一个与现有的套件相同名称的套件,首先创建包。
角而不是图中的重命名窗口中包,使用Rational Rose中左侧的浏览器窗口重新命名包文档。
四要打开浏览器窗口中的新的包,右键单击并选择新的程序包在浏览器选择。
您还可以扩大“逻辑视图”在Rational Rose结构
浏览器并导航到COM>客户。
大肠杆菌当出现警告消息包“医生”现在在多个名称空间存在,选择确定。
例如:
第5步。控件的自定义单位。
答:指出,有OOTB封装在COM目录,如com.ptc。因此,不应该COM的控制; com.customer应控制。根据com.customer嵌套包可以控制,以及。
湾在Rational Rose中,右键在浏览器窗口,并选择单位>“控制...>客户包点击。
角选择文件名控制单元。
四现在,在任何地方控制包中的所有更改都将保存在*.猫刚才指定的文件。
1。存储与相同的名称作为包控制单元,并找到在同一个相对到src目录。例如,为customer.doc包分股文件将存储在WT_HOME /型钢/的COM /客户/文档/ doc.cat。
2。这取决于开发团队,以确定适当的数字和名称的包需求,而且将被控制软件包。
第6步。添加现有将扩展类。
答:导航到相应的包。
湾选择工具“>创建”>类。还有一个图标来创建类。
角交叉头发会出现定位类。
四理性的玫瑰会给予类的默认名称(“NewClass”)。开始键入WTDocument;
当WTDocument在下拉列表中出现,选择它。
例如:
选择在这里作为参考现有的类
当引用一个现有的类,在现有的类已
选定的,理性玫瑰会打开一个对话框:
删除默认NewClass
这表明,这是与创建的类的默认名称
(NewClass)将不再被引用,并且可以从模型中删除。这是确定; WTDocument被引用,而不是NewClass。
选择是。
第7步。之间建立一个扩展类和扩展推广。
答:选择工具“>创建”>的推广。使用鼠标来选择扩展 - 不要放开鼠标按钮 - 并拖动鼠标到父类。
还有一个图标来创建的概括。
湾保存更改。
第8步。系统生成。
答:选择一个模型类,而不是一OOTB类。
湾选择工具“>的Windchill>”系统生成。
角除模块描述符选择所有的复选框。模块描述符是一个保留研发功能
例如:
系统生成
四选择确定。
大肠杆菌该系统将打开一个生成脚本。阅读中的错误输出,然后关闭此脚本中:
例如:
第9步。编译所有的Java源创建由系统生成。
如果这一步没有完成,方法Server将无法启动一
java.lang.ClassNotFoundException异常:
(wt.introspection.introspectionResource / 6)wt.introspection.WTIntrospectionException:
反省错误。系统信息如下:
嵌套异常是:
java.lang.ClassNotFoundException:com.customer.doc.CustomerOrder
具体来说,将丢失的类文件,以配合注册表属性。
------------------------
第10步。执行生成的SQL。
如果这一步没有完成,方法Server将无法启动,将抛出一个非常漫长的wt.pom.DatastoreException异常:
wt.services.ManagerException:wt.util.WTException:(wt.pom.pomResource / 0)wt.pom.PersistenceException:
一个持久性错误。系统信息如下:
嵌套异常是:wt.pom.DatastoreException:一个SQL错误发生的发言
“(选择'com.ptc.windchill.enterprise.report.ThirdPartyReportModelData从
这表明没有任何的扩展,需要被持久化表。
答:导航到WT_HOME /数据库/ SQL中/的COM /客户目录。访问SQL * Plus中的Windchill的数据库用户。
湾总是会建立索引的表之前。执行以下命令:
例如:
@ Make_pkg_customer_Table.sql
@ Make_pkg_customer_Index.sql
角退出SQL * Plus中。
第11步。重新启动Tomcat和方法的服务器。
如果这一步没有完成,方法Server不会重新加载注册表属性文件,并随后不知道新的定制。
第12步。测试。
答:测试中的UI。该函数创建文档应该有一个附加的类型com.customer.doc.CustomerOrder:
例如:
在Rational Rose行动等同于Java中的方法。
•首先,类应具有相同的父类的构造方法。
•一旦类具有相同的构造方法,开发人员可以添加任何其他的需求驱动的其他方法。
•在Rational Rose中,操作是在类规范窗口操作标签概括:
图6-4:操作选项卡窗口的类规范
•业务也有一个单独的操作规范窗口设置运作的详细内容:
图6-5:操作规范窗口
•添加操作不改变数据库结构;为蓝本自定义类的任何现有的表不应该需要改变。
- 当然,生成的Java需要重新编译。
-------------------------
练习6-2:模型构造操作
目标
●添加构造操作现有的类模型在Rational Rose。
方案
在这个练习中,将添加所需的行动,以构造一个现有的类在Rational Rose模型。
第1步。打开Rational Rose和WTdesigner.mdl。
第2步。打开该窗口的CustomerOrder属性规范。
答:导航到com.customer.doc。
湾双击的CustomerOrder,或右键点击并选择打开的CustomerOrder规范...
结果:
类规范的窗口
角选择操作选项卡。
四清除显示继承复选框。应当有这个类,即除了遗传操作没有操作没有属性。
大肠杆菌选择显示继承复选框。
第3步。创建构造函数。
答:排序方式选择父列头由父属性。
湾向下滚动到要操作的列表从父类,WTDocument直接。应该有3个构造操作。选择这3个典型的操作使用CTRL键或SHIFT键选择多对象选择选择技术。
角复制和粘贴操作,无论是与右击菜单或用CTRL C和CTRL诉
四清除显示继承复选框。现在应该有3个行动的CustomerOrder,虽然现在他们被错误地命名为WTDocument(而不是的CustomerOrder())。
例如:
大肠杆菌第一重命名操作的CustomerOrder双()单击该操作。
操作规范窗口将打开。重命名的操作的名称的CustomerOrder:
例如:
楼选择确定。
克重命名通过使用鼠标操作的名称慢慢选择2次,下一个操作和打字的CustomerOrder:
例如:
小时最后重命名操作。
第4步。保存更改。
第5步。系统生成。
答:记住要选择一个模型类,而不是一OOTB类。
第6步。重新编译。
答:由于该模型的定义发生了变化,文物已经改变。
湾重新编译Java类。
第7步。重新启动Tomcat和方法的服务器。
第8步。测试。
答:什么都没有很大的变化模式或因此没有显着差异将在测试期间出现的工件。
湾这一步将确认一切仍是正确的,然后再继续。
--------------------------------
练习6-3:清理前定制
目标
●清理以前的定制。
方案
先前创建的类的模型需要进行更新。在此之前决策模型的变化,以前的定制需要考虑和清理。在本练习中,您将执行所需的清理与前一个定制功能,这样,更新后的定制就可以进行操作。
第1步。确定表名与一个类。
答:打开WTdesigner.mdl。
湾打开com.customer.CustomerOrder的属性。
角选择Windchill的标签。
例如:
四是一个持续的CustomerOrder类,因为WTDocument是一个持续的类。因此,的CustomerOrder信息必须存储在数据库中。有一个模型中的财产 - 的TableName - 用于指定一个表名持久类。该物业的TableName属性,它被设置为<使用类名>,这意味着数据库表的名称将作为类名相同的 - 的CustomerOrder。
大肠杆菌为什么WTDocument一个持久类?
第2步。询问有关的数据库自定义类的CustomerOrder。
答:你如何识别Windchill的数据库的用户名和密码?
湾登录到SQL * Plus中的Windchill的数据库用户。
角执行描述的CustomerOrder。
四什么是此表中的列?
第3步。询问有关的数据库自定义类WTDocument。
答:从WTDocument的CustomerOrder延长。什么是在WTDocument表中的列?
湾该列应该是相同的,因为从WTDocument的CustomerOrder延长没有其他变化。
第4步。清理以前的定制。
答:当改变模型,开发人员应该考虑如何变化影响
以前生成的构件。
湾在添加一个属性到一个自定义的扩展,是坚持的情况下,属性存储在一个表行。
系统生成
mData文件是在生成过程的系统中心,而不是实际模型
•除了这更容易为其他建模工具Rational Rose的允许将定制的Windchill mData文件主要有:
•不是理性玫瑰文件
•生成的模型数据文件封装从UML模型信息
•过程中创建的第一个系统的生成和在随后的系统生成的迭代更新
•系统的其他产出(例如Java和SQL代码)世代的
系统生成后产生mData文件,脚本WT_HOME /宾/ JavaGen被执行。如果mData文件已经存在,JavaGen可以运行在命令行生成工件。
注:模块描述符是一个保留研发功能忽略它,不要选择它。
Java源代码
Java源文件时生成Java源代码被选中。
Java源代码生成到WT_HOME / src目录,分目录匹配的Rational Rose中的定制包的结构嵌套。
Java的源位置是由一个物业wt.generation.source.dir,与目标属性文件的CODEBASE / user.properties。
Java源代码,可以不用担心将来的系统覆盖的代码编辑代担心,只要在里面编辑“维护=真正的”块组成。下面的例子显示了默认保存进口语句块,属性定义,初始化,静态初始化和操作:
初始化方法
默认的初始化在Java代码不完全初始化的对象创建的方法;
开发人员需要编写初始化逻辑。
通常情况下,父类的初始化方法可以被调用来执行初始化。例子:
讨论的问题:自定义的初始化方法不正确执行,Windchill的是如何创建自定义对象的实例吗?
注意:没有要求联合国实施的初始化方法或者没有来电通*引擎。
---------------------
为仿照属性的默认方法
仿照属性将自动获得3业务系统生成。一个名为“成本”的属性的例子:
1。私人无效costValidate(弦乐a_Cost)抛出WTPropertyVetoException
2。公共无效setCost(弦乐a_Cost)抛出WTPropertyVetoException
•前验证调用属性设置方法
3。公共字符串getCost()
一个枚举类型的例子属性名为“材料”与名为“matl”的总协会:
1。私人无效matlValidate(材料a_Matl)抛出WTPropertyVetoException
2。公共无效setMatl(材料a_Matl)抛出WTPropertyVetoException
•前验证调用属性设置方法
3。公共材料getMatl()
数据库支持
SQL脚本生成的数据库支持时被选中。
生成的SQL脚本到WT_HOME /数据库/ sql目录,分目录匹配的Rational Rose中的定制包的结构嵌套。
该WT_HOME /分贝位置/ SQL是实际控制通过属性wt.generation.sql.dir,与目标属性文件的CODEBASE / user.properties。
表相关的SQL文物
为每个自定义模型类的下列SQL脚本生成:
•create_ <CLASS_NAME> _Table.sql
- 第一滴表“class_name的”
注:此数据自动删除而不提示。
这是确保执行前create_ <CLASS_NAME> _Table.sql脚本正确的。
- 在数据库中创建所需的表。
- 必须运行数据库索引,以便随后可以被创建。
•create_ <CLASS_NAME> _Index.sql
- 创建性能指标或以保持数据完整性约束。
- 必须运行在创建表,因为索引需要参考表列,这些列必须已经存在。
- 多指标可能会创建一个表。
- 对指标的确定是由系统生成的逻辑。
•如果需要额外的索引,它们可以手动创建或设置在Rational Rose中的Windchill特定的属性。
•对于一个自定义属性,这将是通过设置索引为True:
•drop_ <CLASS_NAME> _Index.sql
- 之前,必须运行删除表。有时,一个表不能被删除,如果有一个对表的索引。
•drop_ <CLASS_NAME> _Table.sql
- 必须运行后删除索引。
包特定的SQL文物
对于每个包:
•Drop_pkg_ <软件包名称_Table.sql / Drop_pkg_ <软件包名称_Index.sql
- 调用所有类特定drop_ <CLASS_NAME> _Table.sql /
drop_ <CLASS_NAME> _Index.sql在当前目录中的脚本。
- 递归调用子目录Drop_pkg_ * _Table.sql / Drop_pkg_ * _Index.sql脚本。
•Make_pkg_ <软件包名称_Table.sql / Make_pkg_ <软件包名称_Index.sql
- 调用所有类特定create_ <CLASS_NAME> _Table.sql /
create_ <CLASS_NAME> _Index.sql在当前目录中的脚本。
- 递归调用子目录Make_pkg_ * _Table.sql / Make_pkg_ * _Index.sql脚本。
-
野生Introspector支持
•更新注册表属性
•创建。ClassInfo.ser文件
本地化显示
•生成一个本地化的资源如类名和属性名基本建模元素的包文件。
•建模元素有Windchill的属性,它指定是否本地化资源包应该在系统生成创建。
例如产品的包装规格,等级规范和属性说明Windchill的属性:
-=-=
可本地化资源束位于包,名为
<PACKAGE> ModelRB.rbInfo。它将包含建模元素,也指定“本地化=真”。
下面是一个WT_HOME /型钢/ COM的例子/客户/零件/ partModelRB.rbInfo其中只有类CustomerPart和材料指定“本地化=真”;类的属性中,没有:
CustomerPart.value =客户部
Material.value =材料
下面是一个WT_HOME /型钢/ COM的例子/客户/文档/ docModelRB.rbInfo其中
类的CustomerOrder,产品型号和成本属性指定“本地化=真”:
CustomerOrder.value =客户订单
CustomerOrder.cost.value =成本
ProductModel.value =产品型号
-----------------------------
系统生成性质
基本性质
wt.generation.bin.dir,指定地点。ClassInfo.ser文件(序列化信息对象),将会产生以下的包结构
wt.generation.source.dir,其中mData文件预计将在那里发现和Java源文件,将会产生以下指定的包结构
wt.generation.sql.dir,指定其中SQL脚本将生成
wt.classRegistry.search.path,指定要搜索的文件的路径为代表的类进行注册
wt.classRegistry.search.pattern,指定文件模式考虑为代表类被注册
高级属性:
练习6-4:添加初始化方法
目标
●添加初始化方法生成的Java源..
方案
在这个练习中,您将编辑Java源代码为蓝本类实施相应的初始化。
第1步。添加初始化方法来模拟类。
答:打开CustomerOrder.java。
湾查找所有的初始化方法。下面是一个例子:
角对于每一个初始化的方法,添加一个调用父类的初始化方法。使用相同的参数传入下面是一个例子:
四保存该文件。
大肠杆菌编译。
第2步。检查其他的初始化方法生成的代码。
第3步。重新启动Tomcat和方法的服务器。
----
属性建模
对于持久化的类,例如扩展一个持久化类的自定义扩展,仿照属性在一个数据库表的列。列类型取决于属性类型。
•因此,如添加或修改属性将影响到数据库中的表的更改。
如果以前定制•参与创建数据库表,这些表需要被丢弃。
一般来说,这些表不应该包含关键数据 - 下降的表应该是在开发环境中进行。在生产中,该模型之前,应设置在生产中实施。
如果有表中的重要数据,这些数据不能删除 - 这将需要迁移到新的表结构。
Windchill的有许多表,并且有一个表中的行之间的关系。如果一个表包含数据,也不会放弃它在其他表中删除相关的数据。
它通常在开发环境中有可能只是一个自定义表下降,留在其他表中的额外的行,不容易看到,在开发系统的副作用。最好的做法是删除自订的数据,使用的用户界面,使所有相关的数据是正确删除之前,执行任何其他建模的变化。
---
访问器方法
当一个属性是在Rational Rose建模,“访问”的方法将被自动默认添加到结果包含的Java类的代码。一个名为“成本”的属性的例子:
1。私人无效costValidate(弦乐a_Cost)抛出WTPropertyVetoException
2。公共无效setCost(弦乐a_Cost)抛出WTPropertyVetoException
•前验证调用属性设置方法
3。公共字符串getCost()
该setCost()和getCost()方法也被称为setter和getter方法。
在Rational Rose中,属性是类的属性选项卡规范窗口总结:
必需属性
一个属性,可在窗口的属性说明Windchill的标签必须属性:
-
LowerLimit,UpperLimit
图6-13:Windchill的属性规范物业LowerLimit
属性规格
属性也有一个规范窗口设置属性的详细属性
属性需要:
•姓名
•类型
- 类型,可能是Windchill的类或一个Java类,它依赖于属性的目的。
- 对于成本属性,java.lang.Float是一个合乎逻辑的选择。
注:了解出口管制将是这次演习的元素。
-----------------------------------------
练习6-5:添加属性建模
目标
●型号的属性。
方案
以前创建类,的CustomerOrder,需要一个属性来表示的客户,下订单的名称。在本练习中,您将添加一个属性,一个模拟模型定制,根据客户的要求。
详细说明
属性需要增加成本。
第1步。考虑是否上定制表应该被丢弃。
答:仿照属性为数据库中的列,所以保存现有的CustomerOrder表需要被丢弃,然后用新的SQL编辑后生成的模型是完整的文物重建。
第2步。打开该com.customer.doc.CustomerOrder类规范窗口。
第3步。新增成本属性。
答:打开窗口的属性的类规范标签。
结果:
湾清除显示继承复选框。不应该有属性的CustomerOrder。
角右键单击并选择插入。将创建一个属性的名称与一个默认名称。
四双击属性和属性规范窗口将打开。
例如:
大肠杆菌在名称:字段中,输入成本。
楼在类型:字段中,输入java.lang.Float。
克在出口管制,选择公共。
小时什么是“公共”是什么意思?尝试使用Rational Rose的帮助找出答案。
一选择Windchill的标签。什么是的ColumnName价值?什么是这个数据库中的列名?
j的保存单位。
第4步。使用当前的SQL,删除的CustomerOrder表。
答:打开一个Windchill的外壳。
湾导航到WT_HOME /数据库/ SQL中/的COM /客户/ doc的。
角执行DROP脚本。表前降索引。
例如:
第5步。系统生成。
第6步。重新编译。
第7步。执行新的SQL。
第8步。重新启动Tomcat和方法的服务器。
第9步。测试。
第10步。挑战:添加一个属性来表示公司下订单。
答:什么属性被命名为?
湾什么是属性的类型?
角以前的定制需求是否被丢弃?
---
枚举类型
枚举类型是特殊的Windchill的属性有一个有效的值的离散集合。
•从理论上讲,这可能是属性仿照类直接输入,然后开发人员可以编写逻辑控制的可能值。
•不要使用这种方法,使用枚举类型的模式。
•约枚举类型属性的框架包含了有效的值的离散集和文本文件中的值定位控制。这些被称为资源包。
•属性本身是通过创建一个自定义类,扩展了标准的Windchill类wt.fc.EnumeratedType。
•自定义属性被称为“枚举类型”,并有UML的关系,它们都包含英寸级
•从用户界面,这些属性是可见的,并且可以像其他属性编辑蓝本直接在类。
•就像对一个类的属性,直接为蓝本,系统生成会产生访问方法。
枚举类型设计模式的例子,可以发现在整个Windchill的模型。
•开放WTdesigner.mdl和搜索EnumeratedType。
与其他设计模式,用一个可以复制和应用所需的定制模式的现有模型。
EnumeratedType范例
•零件
- 源(制造,购买)
- QuantityUnit(每个,根据需要,公升,公斤,米)
- PartType(组件,形影不离大会,可分大会)
•文件
- DocumentType(文档,需求文档,测试计划等)
- DepartmentList(会计,设计,制造等)
•更改对象
- 类别(安全问题,降低成本,其他等)
- IssuePriority(高,中,低,紧急)
- 复杂性(简单,复杂)
•CAD文件
- EPMAuthoringAppType(Pro / ENGINEER的,则AutoCAD,CATIA的时,SolidWorks,Unigraphics系统等)
- EPMDocSubType(数控模型,工艺规划,骨架,金属板等)
图6-17:2 EnumeratedTypes的例子在wt.doc包
编辑枚举类型值
建模的枚举类型后,系统将创建一个代资源包包含可能的值。
•这些资源包可以本地化,以及。
使用WT_HOME /宾/ enumCustomize编辑的值
----------------------------
练习6-6:型号枚举类型
目标
●型号枚举类型属性。
●使用enumCustomize编辑的可能值。
方案
为客户定制需要一个模拟属性(产品型号),有限制的产品型号正在出售的数量可能值。在本练习中,您将使用这个属性建模“枚举类型”的设计模式。
第1步。对于这项工作的所有步骤,是指作为参考现有的格局。
答:其中一个例子是wt.epm.EPMDocSubType。
第2步。添加wt.fc.EnumeratedType类到com.customer.doc图。
有两个名为EnumeratedType两个类 - 确定使用从wt.fc包之一。
答:在加入上EnumeratedType wt.fc.EnumeratedType,右键单击。清除两个选项>“显示选区中的所有属性和选项>”显示所有操作。这将清理图;了该模型的重点是自定义模式,而不是OOTB类。同样的动作可以执行对WTDocument在这个图。
第3步。创建一个新类名为产品型号。虽然它是一个类,它代表了一种对的CustomerOrder属性。
第4步。之间建立ProductModel和EnumeratedType推广。
第5步。创建一个从属性类(产品型号)单向聚集它所描述的类(的CustomerOrder)。
第6步。设置的单向关联的属性。
答:引用现有的格局。
湾通过双击打开,点击该链接现有格局的单向聚集的属性。
角通过双击打开,点击该链接的自定义现有的格局单向聚合的属性。
四浏览每个OOTB例子聚集和自定义标签的聚集,使性能相似。请注意,有一些文字是针对具体情况
(代表类别名称或属性名称)这些值应为自定义类和自定义属性合适。
1。 ProductModel和之间的CustomerOrder聚合可以为每个月底的聚合作用的名字。角色名是大写的属性名称相似 - “likeThis”。这就解释了为什么类产品型号有一个角色名“产品型号” - 它不是一个错字。
2。角色名称实际上可以是任何逻辑上解释了一ProductModel和一的CustomerOrder关系。
第7步。实施变革。
答:保存小队。
湾掉落使用现有的SQL数据库中现有的自定义表。
角系统生成。
四重新编译。
大肠杆菌执行新生成的SQL。
第8步。添加额外值产品型号。
答:由于没有默认值在模型中指定,并没有默认rbInfo文件created.enumCustomize不能使用,直到有一个现有的编译资源包文件。
湾创建WT_HOME /型钢/的COM /客户对下列文字/ ProductModelRB.rbInfo:
例如:
MODEL100A.value = 110型甲
角从Windchill的外壳,执行ResourceBuild com.customer.doc.ProductModelRB。
四现在,一值存在,useenumCustomize。
大肠杆菌将有3个值在所有:型号100甲,200型和300型一答
楼哪里的变化造成的enumCustomize储存在哪里?
第9步。重新启动Tomcat和方法的服务器。
第10步。测试。
花几分钟时间回答以下问题,然后审查你的老师他们。
1。问:如果Java源代码发生后没有一个系统生成编译?
2。问:哪些方法需要完全由系统生成后,开发商实施?
3。问:什么是最简单的方法为蓝本,要求用户输入的属性?
4。问:真或假:当一个方法被添加到一个持久化类,数据库表应该重修吗?
5。问:什么是“保= yes”在Java源代码块目的是什么?
综述
在完成这个模块,你应该能够:
•执行任务工程师组件的应用解决方案开发的系统的RVP工作流模块元素。
•创建一个新的Rational Rose中的包结构。
•扩展的Windchill类。
•在Rational Rose模型的新的属性。
•型号枚举类型。
•实现一个定制的Windchill为蓝本。
-----------------------------------
7777777777
部署
目标
当这个模块成功完成,您将能够:
•执行任务相关的部署过程中的集成单元测试和集成系统Compoentns的应用解决方案开发的系统工作流模块的RVP元素定义。
•部署定制从开发计算机到另一台计算机。
部署
通常的解决方案将参照开发计算机,需要感动,到测试或生产系统合并。
系统用于汇集多个用于测试目的的自定义代码被称为“一体化”或“集成测试”服务器。
建立实施框架(仁爱基金会)
仁爱基金会是一个PTC服务工程拥有的工具帮助部署定制,是PTC的SVN源代码管理服务器中。
仁爱基金会时,应使用自定义已经超出了Windchill的负载点储存。
Windchill的外存储定制负载点
1。该系统生成工具生成的构件的控制下存储的属性。
2。另外,可移动的文物外开发计算机的Windchill一代目录。
生成的工件
1。在WT_HOME建模文件/型钢。
2。生成的Java文件,已被编辑,WT_HOME /型钢。
3。编译Java文件。
•这些是没有必要的。
•他们应该是建立在生产服务器,以确保没有遗漏或不正确的类的类路径,以及没有Java版本问题。
4。在WT_HOME生成的SQL / DB文件/ SQL的..
5。注册表属性。
•这些是不需要的,从多个开发商多个属性文件将被覆盖对方。
•他们应该在生产服务器上生成。
6。在WT_HOME定制资源包/型钢。
7。编辑OOTB在WT_HOME / wtCustom资源包。
该构件应放置在一个单独的目录,其中的编辑而作出调整。
部署这些代码
完成后的发展:
1。移动工件到生产服务器。
2。运行WT_HOME /宾/ modelInstall。
•不生成的SQL;已生成的SQL是从发展环境。
•此修改注册表属性。
3。编译源。
4。构建资源包。
5。重新启动Tomcat和方法的服务器。
当mData文件已经存在,理性玫瑰并不需要启动生成工件或部署定制:
•WT_HOME /宾/ modelInstall可以运行在命令行中插入定制的注册表设置。
- 相反,WT_HOME /宾/ modelUninstall清理注册表设置。
•WT_HOME /宾/ JavaGen可以运行在命令行生成工件。
练习7-1:小组讨论
目标
●部署定制从开发计算机到另一台计算机。
方案
在讨论期间,部署的细节进行审查。请询问任何问题,你可能有。
第1步。是Java的开发服务器上编译的程序进行部署?
第2步。是在哪个目录编辑OOTB资源包?
第3步。是否WT_HOME /宾/ modelInstall更新注册表属性?
完成标准
R的生产服务器上号,以确保适当的编译运行时类路径。
ř WT_HOME / wtCustom
r是,WT_HOME /宾/ modelInstall更新注册表属性。
回顾
花几分钟时间回答以下问题,然后检查它们与您的
导师。
1。问:什么是modelInstall目的是什么?
2。问:什么文件可用于再生的东西?
答: WTdesigner.mdl
湾猫
角mData
四所有的文件* registry.properties
大肠杆菌以上皆非
3。问:应在Windchill的目录中的文件永远不会直接编辑?
综述
在完成这个模块,你应该能够:
•执行任务相关的部署过程中的集成单元测试和集成系统Compoentns的应用解决方案开发的系统工作流模块的RVP元素定义。
•部署定制从开发计算机到另一台计算机。
-------------------------
888888888888
个案研究
在这种情况下研究,参加者获得的经验和做法,以实施方案为蓝本的基础上由解决方案架构师提供的客户要求。
目标
当这个模块成功完成,您将能够:
•执行任务工程师组件的应用解决方案开发的系统的RVP工作流模块元素。
•执行任务相关的部署过程中的集成单元测试和集成系统Compoentns的应用解决方案开发的系统工作流模块的RVP元素定义。
•设计定制之前实施。
•扩大WTPart每个客户的要求。
•型号属性,操作为自定义WTPart。
•使用的开发环境,方便部署在另一台计算机(例如,生产服务器或测试环境)定制。
练习8-1:个案研究
目标
●实施前的定制设计。
●延长WTPart。
●型号属性,操作为自定义WTPart。
●使用一个开发环境,有利于部署在另一台计算机(例如,生产服务器或测试环境)定制。
方案
在这种情况下研究,解决方案架构师要求你实现一个扩展WTPart为客户。您将需要建立一个方便的部署方式的要求定制,然后实际部署在另一台计算机的定制。只有正确的自定义为任何一个或部分信用正确部署。既不是不能正确部署到另一台服务器定制,定制和部署或贫穷,
将被视为成功。
详细说明
从解决方案架构师的要求如下:
1。客户名称是Acme和阿克米是总部设在美国。
2。自定义WTPart名称将AcmePart。
3。 AcmePart需要的材料和成本的属性。
4。有限的物质属性的价值观INCO718,德州仪器- 6AL - 4V和美国ASTM乙
第1步。确定包结构。
第2步。适当控制软件包。
第3步。选择属性类型。
第4步。限制物质价值。
第5步。地点在易于部署的所有根在一个单独的开发定制
生产服务器。
注:上面的例子是在“com.customer”包;为个案研究对象,将在不同的包特定于客户名称。
综述
在完成这个模块,你应该能够:
•执行任务工程师组件的应用解决方案开发的系统的RVP工作流模块元素。
•执行任务相关的部署过程中的集成单元测试和集成系统Compoentns的应用解决方案开发的系统工作流模块的RVP元素定义。
•设计定制之前实施。
•扩大WTPart每个客户的要求。
•型号属性,操作为自定义WTPart。
•使用的开发环境,方便部署在另一台计算机(例如,生产服务器或测试环境)定制。
----------------------
999999999999
先进的解决方案
目标
当这个模块成功完成,您将能够:
•执行任务工程师组件的应用解决方案开发的系统的RVP工作流模块元素。
•实现一个自定义链接。
•实现一个侦听器服务。
练习9-1:实现自定义链接
目标
●实现一个自定义链接类。
方案
客户需要存储的信息在一个关系(链接)而定。在这个练习中,您将模型自定义链接,选择合适的设计模式。
详细说明
1。每个的CustomerOrder可以连接到许多CustomParts 0。
2。对于每个CustomPart的CustomerOrder相关的,可以指定数量。
3。阿CustomPart可以在几个不同的CustomerOrders使用,所以数量关系,具体的。
第1步。请参考wt.part.WTPartUsageLink和模式wt.part.WTPartDescribeLink。
第2步。清理以前的定制。
第3步。模型之间的自定义部分和一个自定义文档的链接。
第4步。系统生成。
第5步。重新编译。
第6步。重新启动Tomcat和方法的服务器。
第7步。测试。
接听服务
Windchill的服务提供了在两个特定领域的功能:
1。机制,为客户调用服务器端的方法(这是在服务器上调用和处理),以利用服务器的性能和集中资源优势
2。 Windchill的一种机制,以“听”的,并反过来回应,如系统事件:
•检查
•退房
•状态改变
•更新
•删除
服务类型
•监听服务
- 每当调用和处理特定类型的事件调度
- 不要求客户直接交流
- 自动启动服务器的方法
- 可以派遣活动
••
商务服务
- 随时调用和处理所提供的服务调用方法
- 自动启动服务器的方法
- 也可能是一个侦听器服务
- 可以派遣活动
-
•重量轻服务
- 不会自动开始由法服务器
- 可以派遣活动
服务综述
第一行如何调用,自动由法服务器,助手,可以分派活动开始了吗?
监听器,当特定类型的事件调度,是的,不是的,需要的是
工作上,当所提供的服务的方法被调用时,是的,是的,是
重量轻,当所提供的服务的方法被调用时,不,不是的,需要的是
接听服务
一位听众服务不是直接调用客户端或其他服务,而是登记一个或多个“听众”对象对应并响应特定事件类型分别。
侦听器服务建模遵循为所有其他类型的服务相同的标准造型设计模式。但是,抽象是没有必要帮助和服务在其RemoteInterface抽象或接口定义的任何操作,因为没有任何直接的互动将发生。
服务事件
服务事件类可以发现,在API的Javadoc作为“KeyedEvent”扩展。
有两个一般类型的事件:
1。可否决
•这些事件可以被否决或回滚的事件侦听器的背面
2。非可否决
•这些事件不能被否决的事件监听器,只是一个通知
一位听众否决一抛出一个异常(如。WTException)回到事件,又必须回滚任何数据库进行了作为一个事务块的一部分管理活动更新前原Dispatcher的事件。
实现事件监听器
一位听众内部类实现在StandardManager延伸。
该侦听内部类必须实现wt.events.KeyedEventListener接口。
wt.services.ServiceEventListenerAdapter已经这样做了,所以它可以延长代替。
注册事件监听器
一位听众服务订阅服务事件的具体登记在专门performStartupProcess()方法的一个监听器类的实例。例如:
这种方法实例化一个监听对象,并使用指定的事件时,该服务是自动启动的方法服务器关联起来。一个服务项目属性是必需的。
注册服务活动
一位听众服务注册定制服务的具体事件,它可能会发出与在专门registerEvents StandardManagerService()方法,例如:
自动服务启动
Windchill的属性指定哪些服务应该启动时自动启动服务器的方法。例如:
条目指定的接口或RemoteInterface,由StandardManager的扩展名。
自动启动和关闭服务
以下两种方法都继承自StandardManager,旨在重写专门的启动和关闭处理:
1。 performStartupProcess()
2。 performShutdownProcess()
--------------
练习9-2:实现侦听器服务
目标
●实现一个侦听器服务。
方案
客户需要记录所有的CustomerOrder创建的对象作为输入到外部的ERP系统的每一天。对于这个练习,实现侦听器服务的设计模式并添加所有适当的编码和属性,以记录的的CustomerOrder对象的创建。
第1步。确定适当的事件。
答:在事件发生后创作,使POST_STORE应该被使用。
第2步。模型的侦听器服务。
答:创建一个新的包com.customer.services。
湾内部com.customer.services,模型作为RemoteInterface CustomerOrderService没有扩展
角扩展模型StandardCustomerOrderService不过同时实现CustomerOrderService和wt.services.StandardManager。
例如:
四对于StandardCustomerOrderService,复制操作performStartupProcess()和performShutdownProcess(从标准管理器)。
大肠杆菌保存子单位。
楼系统生成。
第3步。编辑Java代码。
答:编辑WT_HOME /型钢/的COM /客户/服务/ StandardCustomerOrderService.java。
湾找到“user.operations”块。
角设置“保存”等于肯定的。添加以下代码:
四里面还有StandardCustomerOrderService.java,覆盖performStartupProcess()方法:
大肠杆菌编译Java文件总数3。
第4步。编辑属性和传播。
答:检查wt.properties找到可用的服务号码,并验证此号码可使用xconfmanager:
湾添加一个新的服务项,以wt.properties自动启动该服务:
角
第5步。测试。
答:重新启动Tomcat和方法的服务器。
湾创建的CustomerOrder。
练习9-3:API程序
目标
●实现一个API程序进行搜索。
●实现一个API的程序来创建一个自定义部分。
方案
每晚的客户有几个方案的要求。这些方案将用于生成输入到ERP系统的数据。在这个练习中,您将需要建立必要的程序使用的API作为参考。
详细说明
1。搜索所有的CustomerOrder对象。
2。搜索特定的自定义部分的对象,按名称。
3。创建一个自定义部分。
第1步。搜索所有的CustomerOrder对象。
答:创建一个Java应用程序的Main方法com.customer.utils.CustomerUtility。
湾添加一个方法getAllOrders()。从主调用此方法的方法。
角添加一个包语句。
四实现一个wt.fc.QueryResult对象为代表的搜索结果。
大肠杆菌实现一个wt.query.QuerySpec对象,以确定被搜查的类(的CustomerOrder)。
楼添加wt.fc.PersistenceHelper.manager.find()方法来执行搜索。
克通过了名称和对象的数量的QueryResult和打印结果发现环。
小时使用默认的“get”和“设置”自动为每个属性的方法也打印出属性信息生成。
一某些API需要一个try / catch块。图什么异常是通过测试或通过对QuerySpec,QueryResult和PersistenceHelper的API抛出。在下面的例子中,“合作”表示的CustomerOrder对象。
j的运行该程序,然后使用OOTB搜索UI来验证结果。
第2步。搜索特定的对象按名称自定义部分。
答:创建一个Java应用程序的Main方法com.customer.utils.CustomerUtility。
湾添加一个方法getPartsByName()。从主调用此方法的方法。
角添加一个包声明和import语句。
四除了wt.fc.QueryResult和wt.query.QuerySpec对象,一SearchCondition将需要以限制返回的对象。在这个例子中,有“QS”是一个QuerySpec对象:
大肠杆菌添加wt.fc.PersistenceHelper.manager.find()方法来执行搜索。
楼通过QueryResult循环的结果 - 这是一个java.util.Enumeration和打印出的名称和定制部件数量的扩展。
g.使用默认的自动获取和设置每个属性的属性信息也打印出生成的方法。
一和以前一样,会抛出异常,需要加以处理。
j的运行该程序,然后使用OOTB搜索UI来验证结果。
第3步。创建一个自定义部分。
答:创建一个带main方法的Java应用程序。
湾添加一个方法createPart()。从主调用此方法的方法。
角对象存储在容器中。内部createPart(),先执行一个名为“GOLF_CART”容器搜索。
四从结果 - 在QueryResult(可变“快速反应”)存储 - 获得容器的引用:
大肠杆菌初始化自定义部分,并设置属性。下面是设置一个EnumeratedType属性如该EnumeratedType属性的名称是“物质”的例子,该角色会的名称是“matl”:
该对象的数量将是目前的日期和时间。
楼设置文件夹,坚持对象。请注意,assignLocation()方法使用的GOLF_CART发现以前货柜参考:
克和以前一样,会抛出异常,需要加以处理。
小时运行该程序并使用UI来验证正在创建定制部件。
综述
在完成这个模块,你应该能够:
•执行任务工程师组件的应用解决方案开发的系统的RVP工作流模块元素。
•实现一个自定义链接。
•实现一个侦听器服务。
当WTDocument在下拉列表中出现,选择它。
例如:
选择在这里作为参考现有的类
当引用一个现有的类,在现有的类已选定,理性玫瑰会打开一个对话框:
删除默认NewClass
这表明,这是与默认名称(NewClass)创建的类将不再被引用,并且可以从模型中删除。这是确定; WTDocument被引用,而不是NewClass。
选择是。
第7步。之间建立一个扩展类和扩展推广。
答:选择工具“>创建”>的推广。使用鼠标来选择扩展 - 不要放开鼠标按钮 - 并拖动鼠标到父类。
还有一个图标来创建的概括。
湾保存更改。
第8步。系统生成。
答:选择一个模型类,而不是一OOTB类。
湾选择工具“>的Windchill>”系统生成。
角除模块描述符选择所有的复选框。模块描述符是一个保留研发功能
例如:
四选择确定。
大肠杆菌该系统将打开一个生成脚本。阅读中的错误输出,然后关闭此脚本中:
例如:
第9步。编译所有的Java源创建由系统生成。
如果这一步没有完成,方法Server将无法启动一
java.lang.ClassNotFoundException异常:
(wt.introspection.introspectionResource / 6)wt.introspection.WTIntrospectionException:
反省错误。系统信息如下:
嵌套异常是:
java.lang.ClassNotFoundException:com.customer.doc.CustomerOrder
...
具体来说,将丢失的类文件,以便与注册表
物业
第10步。执行生成的SQL。
如果这一步没有完成,方法Server将无法启动,将抛出一个非常漫长的wt.pom.DatastoreException异常:
wt.services.ManagerException:wt.util.WTException:(wt.pom.pomResource / 0)wt.pom.A持久性错误。系统信息如下:
嵌套异常是:wt.pom.DatastoreException:一个SQL错误发生的“(选择'com.ptc.windchill.enterprise.report.ThirdPartyReportModelData从
...
这表明没有任何的扩展,需要进行表
坚持。
答:导航到WT_HOME /数据库/ SQL中/的COM /客户目录。访问SQL * Plus中的Windchill的数据库用户。
湾总是会建立索引的表之前。执行以下命令:
例如:
@ Make_pkg_customer_Table.sql
@ Make_pkg_customer_Index.sql
角退出SQL * Plus中。
第11步。重新启动Tomcat和方法的服务器。
如果这一步没有完成,方法Server不会重新载入
注册表中的属性文件,并随后不知道新
定制。
第12步。测试。
答:测试中的UI。该函数创建文档应该有一个附加的类型 - com.customer.doc.CustomerOrder:
例如:
-----------------
练习6-1:扩展WTDocument
目标
●创建一个新的包结构。
●扩展Windchill的类。
●型号新的属性。
●实施定制。
方案
客户已确定了一个新的业务信息类型相似,一些额外的属性WTDocument要求。在这个练习中,您将模型所要求的属性的自定义WTDocument。
第1步。打开Windchill的模型。
答: Rational Rose中开始。
湾打开WT_HOME /型钢/重/ WTDesigner.mdl。
角?当记者问到WTdesigner.mdl负荷亚基,选择是:
例如:
第2步。在Rational Rose中创建包结构。
答:使用浏览器,浏览到逻辑视图“> <<assembly>>全国妇女委员会,并打开图SystemGeneration图。
结果:
SystemGeneration图
湾选择工具>“创建>”包。
还有一个图标来创建一个包。
角使用跨毛发位置包。
四一个软件包的默认名称将NewPackage。
大肠杆菌从NewPackage包重命名为COM。要重命名的包,选择包装上的,然后键入新名称com域名。
第3步。打开COM组件并创建一个名为客户另一个包。
第4步。打开客户包并创建一个名为doc的另一个包。
答:这项一揽子计划将与由同一名称的现有包冲突,所以不同的包创建过程将被使用。
湾要创建一个与现有的套件相同名称的套件,首先创建包。
角而不是图中的重命名窗口中包,使用Rational Rose中左侧的浏览器窗口重新命名包文档。
四要打开浏览器窗口中的新的包,右键单击并选择新的程序包在浏览器选择。
您还可以扩大“逻辑视图”在Rational Rose结构
浏览器并导航到COM>客户。
大肠杆菌当出现警告消息包“医生”现在在多个名称空间存在,选择确定。
例如:
第5步。控件的自定义单位。
答:指出,有OOTB封装在COM目录,如com.ptc。因此,不应该COM的控制; com.customer应控制。根据com.customer嵌套包可以控制,以及。
湾在Rational Rose中,右键在浏览器窗口,并选择单位>“控制...>客户包点击。
角选择文件名控制单元。
四现在,在任何地方控制包中的所有更改都将保存在*.猫刚才指定的文件。
1。存储与相同的名称作为包控制单元,并找到在同一个相对到src目录。例如,为customer.doc包分股文件将存储在WT_HOME /型钢/的COM /客户/文档/ doc.cat。
2。这取决于开发团队,以确定适当的数字和名称的包需求,而且将被控制软件包。
第6步。添加现有将扩展类。
答:导航到相应的包。
湾选择工具“>创建”>类。还有一个图标来创建类。
角交叉头发会出现定位类。
四理性的玫瑰会给予类的默认名称(“NewClass”)。开始键入WTDocument;
当WTDocument在下拉列表中出现,选择它。
例如:
选择在这里作为参考现有的类
当引用一个现有的类,在现有的类已
选定的,理性玫瑰会打开一个对话框:
删除默认NewClass
这表明,这是与创建的类的默认名称
(NewClass)将不再被引用,并且可以从模型中删除。这是确定; WTDocument被引用,而不是NewClass。
选择是。
第7步。之间建立一个扩展类和扩展推广。
答:选择工具“>创建”>的推广。使用鼠标来选择扩展 - 不要放开鼠标按钮 - 并拖动鼠标到父类。
还有一个图标来创建的概括。
湾保存更改。
第8步。系统生成。
答:选择一个模型类,而不是一OOTB类。
湾选择工具“>的Windchill>”系统生成。
角除模块描述符选择所有的复选框。模块描述符是一个保留研发功能
例如:
系统生成
四选择确定。
大肠杆菌该系统将打开一个生成脚本。阅读中的错误输出,然后关闭此脚本中:
例如:
第9步。编译所有的Java源创建由系统生成。
如果这一步没有完成,方法Server将无法启动一
java.lang.ClassNotFoundException异常:
(wt.introspection.introspectionResource / 6)wt.introspection.WTIntrospectionException:
反省错误。系统信息如下:
嵌套异常是:
java.lang.ClassNotFoundException:com.customer.doc.CustomerOrder
具体来说,将丢失的类文件,以配合注册表属性。
------------------------
第10步。执行生成的SQL。
如果这一步没有完成,方法Server将无法启动,将抛出一个非常漫长的wt.pom.DatastoreException异常:
wt.services.ManagerException:wt.util.WTException:(wt.pom.pomResource / 0)wt.pom.PersistenceException:
一个持久性错误。系统信息如下:
嵌套异常是:wt.pom.DatastoreException:一个SQL错误发生的发言
“(选择'com.ptc.windchill.enterprise.report.ThirdPartyReportModelData从
这表明没有任何的扩展,需要被持久化表。
答:导航到WT_HOME /数据库/ SQL中/的COM /客户目录。访问SQL * Plus中的Windchill的数据库用户。
湾总是会建立索引的表之前。执行以下命令:
例如:
@ Make_pkg_customer_Table.sql
@ Make_pkg_customer_Index.sql
角退出SQL * Plus中。
第11步。重新启动Tomcat和方法的服务器。
如果这一步没有完成,方法Server不会重新加载注册表属性文件,并随后不知道新的定制。
第12步。测试。
答:测试中的UI。该函数创建文档应该有一个附加的类型com.customer.doc.CustomerOrder:
例如:
在Rational Rose行动等同于Java中的方法。
•首先,类应具有相同的父类的构造方法。
•一旦类具有相同的构造方法,开发人员可以添加任何其他的需求驱动的其他方法。
•在Rational Rose中,操作是在类规范窗口操作标签概括:
图6-4:操作选项卡窗口的类规范
•业务也有一个单独的操作规范窗口设置运作的详细内容:
图6-5:操作规范窗口
•添加操作不改变数据库结构;为蓝本自定义类的任何现有的表不应该需要改变。
- 当然,生成的Java需要重新编译。
-------------------------
练习6-2:模型构造操作
目标
●添加构造操作现有的类模型在Rational Rose。
方案
在这个练习中,将添加所需的行动,以构造一个现有的类在Rational Rose模型。
第1步。打开Rational Rose和WTdesigner.mdl。
第2步。打开该窗口的CustomerOrder属性规范。
答:导航到com.customer.doc。
湾双击的CustomerOrder,或右键点击并选择打开的CustomerOrder规范...
结果:
类规范的窗口
角选择操作选项卡。
四清除显示继承复选框。应当有这个类,即除了遗传操作没有操作没有属性。
大肠杆菌选择显示继承复选框。
第3步。创建构造函数。
答:排序方式选择父列头由父属性。
湾向下滚动到要操作的列表从父类,WTDocument直接。应该有3个构造操作。选择这3个典型的操作使用CTRL键或SHIFT键选择多对象选择选择技术。
角复制和粘贴操作,无论是与右击菜单或用CTRL C和CTRL诉
四清除显示继承复选框。现在应该有3个行动的CustomerOrder,虽然现在他们被错误地命名为WTDocument(而不是的CustomerOrder())。
例如:
大肠杆菌第一重命名操作的CustomerOrder双()单击该操作。
操作规范窗口将打开。重命名的操作的名称的CustomerOrder:
例如:
楼选择确定。
克重命名通过使用鼠标操作的名称慢慢选择2次,下一个操作和打字的CustomerOrder:
例如:
小时最后重命名操作。
第4步。保存更改。
第5步。系统生成。
答:记住要选择一个模型类,而不是一OOTB类。
第6步。重新编译。
答:由于该模型的定义发生了变化,文物已经改变。
湾重新编译Java类。
第7步。重新启动Tomcat和方法的服务器。
第8步。测试。
答:什么都没有很大的变化模式或因此没有显着差异将在测试期间出现的工件。
湾这一步将确认一切仍是正确的,然后再继续。
--------------------------------
练习6-3:清理前定制
目标
●清理以前的定制。
方案
先前创建的类的模型需要进行更新。在此之前决策模型的变化,以前的定制需要考虑和清理。在本练习中,您将执行所需的清理与前一个定制功能,这样,更新后的定制就可以进行操作。
第1步。确定表名与一个类。
答:打开WTdesigner.mdl。
湾打开com.customer.CustomerOrder的属性。
角选择Windchill的标签。
例如:
四是一个持续的CustomerOrder类,因为WTDocument是一个持续的类。因此,的CustomerOrder信息必须存储在数据库中。有一个模型中的财产 - 的TableName - 用于指定一个表名持久类。该物业的TableName属性,它被设置为<使用类名>,这意味着数据库表的名称将作为类名相同的 - 的CustomerOrder。
大肠杆菌为什么WTDocument一个持久类?
第2步。询问有关的数据库自定义类的CustomerOrder。
答:你如何识别Windchill的数据库的用户名和密码?
湾登录到SQL * Plus中的Windchill的数据库用户。
角执行描述的CustomerOrder。
四什么是此表中的列?
第3步。询问有关的数据库自定义类WTDocument。
答:从WTDocument的CustomerOrder延长。什么是在WTDocument表中的列?
湾该列应该是相同的,因为从WTDocument的CustomerOrder延长没有其他变化。
第4步。清理以前的定制。
答:当改变模型,开发人员应该考虑如何变化影响
以前生成的构件。
湾在添加一个属性到一个自定义的扩展,是坚持的情况下,属性存储在一个表行。
系统生成
mData文件是在生成过程的系统中心,而不是实际模型
•除了这更容易为其他建模工具Rational Rose的允许将定制的Windchill mData文件主要有:
•不是理性玫瑰文件
•生成的模型数据文件封装从UML模型信息
•过程中创建的第一个系统的生成和在随后的系统生成的迭代更新
•系统的其他产出(例如Java和SQL代码)世代的
系统生成后产生mData文件,脚本WT_HOME /宾/ JavaGen被执行。如果mData文件已经存在,JavaGen可以运行在命令行生成工件。
注:模块描述符是一个保留研发功能忽略它,不要选择它。
Java源代码
Java源文件时生成Java源代码被选中。
Java源代码生成到WT_HOME / src目录,分目录匹配的Rational Rose中的定制包的结构嵌套。
Java的源位置是由一个物业wt.generation.source.dir,与目标属性文件的CODEBASE / user.properties。
Java源代码,可以不用担心将来的系统覆盖的代码编辑代担心,只要在里面编辑“维护=真正的”块组成。下面的例子显示了默认保存进口语句块,属性定义,初始化,静态初始化和操作:
初始化方法
默认的初始化在Java代码不完全初始化的对象创建的方法;
开发人员需要编写初始化逻辑。
通常情况下,父类的初始化方法可以被调用来执行初始化。例子:
讨论的问题:自定义的初始化方法不正确执行,Windchill的是如何创建自定义对象的实例吗?
注意:没有要求联合国实施的初始化方法或者没有来电通*引擎。
---------------------
为仿照属性的默认方法
仿照属性将自动获得3业务系统生成。一个名为“成本”的属性的例子:
1。私人无效costValidate(弦乐a_Cost)抛出WTPropertyVetoException
2。公共无效setCost(弦乐a_Cost)抛出WTPropertyVetoException
•前验证调用属性设置方法
3。公共字符串getCost()
一个枚举类型的例子属性名为“材料”与名为“matl”的总协会:
1。私人无效matlValidate(材料a_Matl)抛出WTPropertyVetoException
2。公共无效setMatl(材料a_Matl)抛出WTPropertyVetoException
•前验证调用属性设置方法
3。公共材料getMatl()
数据库支持
SQL脚本生成的数据库支持时被选中。
生成的SQL脚本到WT_HOME /数据库/ sql目录,分目录匹配的Rational Rose中的定制包的结构嵌套。
该WT_HOME /分贝位置/ SQL是实际控制通过属性wt.generation.sql.dir,与目标属性文件的CODEBASE / user.properties。
表相关的SQL文物
为每个自定义模型类的下列SQL脚本生成:
•create_ <CLASS_NAME> _Table.sql
- 第一滴表“class_name的”
注:此数据自动删除而不提示。
这是确保执行前create_ <CLASS_NAME> _Table.sql脚本正确的。
- 在数据库中创建所需的表。
- 必须运行数据库索引,以便随后可以被创建。
•create_ <CLASS_NAME> _Index.sql
- 创建性能指标或以保持数据完整性约束。
- 必须运行在创建表,因为索引需要参考表列,这些列必须已经存在。
- 多指标可能会创建一个表。
- 对指标的确定是由系统生成的逻辑。
•如果需要额外的索引,它们可以手动创建或设置在Rational Rose中的Windchill特定的属性。
•对于一个自定义属性,这将是通过设置索引为True:
•drop_ <CLASS_NAME> _Index.sql
- 之前,必须运行删除表。有时,一个表不能被删除,如果有一个对表的索引。
•drop_ <CLASS_NAME> _Table.sql
- 必须运行后删除索引。
包特定的SQL文物
对于每个包:
•Drop_pkg_ <软件包名称_Table.sql / Drop_pkg_ <软件包名称_Index.sql
- 调用所有类特定drop_ <CLASS_NAME> _Table.sql /
drop_ <CLASS_NAME> _Index.sql在当前目录中的脚本。
- 递归调用子目录Drop_pkg_ * _Table.sql / Drop_pkg_ * _Index.sql脚本。
•Make_pkg_ <软件包名称_Table.sql / Make_pkg_ <软件包名称_Index.sql
- 调用所有类特定create_ <CLASS_NAME> _Table.sql /
create_ <CLASS_NAME> _Index.sql在当前目录中的脚本。
- 递归调用子目录Make_pkg_ * _Table.sql / Make_pkg_ * _Index.sql脚本。
-
野生Introspector支持
•更新注册表属性
•创建。ClassInfo.ser文件
本地化显示
•生成一个本地化的资源如类名和属性名基本建模元素的包文件。
•建模元素有Windchill的属性,它指定是否本地化资源包应该在系统生成创建。
例如产品的包装规格,等级规范和属性说明Windchill的属性:
-=-=
可本地化资源束位于包,名为
<PACKAGE> ModelRB.rbInfo。它将包含建模元素,也指定“本地化=真”。
下面是一个WT_HOME /型钢/ COM的例子/客户/零件/ partModelRB.rbInfo其中只有类CustomerPart和材料指定“本地化=真”;类的属性中,没有:
CustomerPart.value =客户部
Material.value =材料
下面是一个WT_HOME /型钢/ COM的例子/客户/文档/ docModelRB.rbInfo其中
类的CustomerOrder,产品型号和成本属性指定“本地化=真”:
CustomerOrder.value =客户订单
CustomerOrder.cost.value =成本
ProductModel.value =产品型号
-----------------------------
系统生成性质
基本性质
wt.generation.bin.dir,指定地点。ClassInfo.ser文件(序列化信息对象),将会产生以下的包结构
wt.generation.source.dir,其中mData文件预计将在那里发现和Java源文件,将会产生以下指定的包结构
wt.generation.sql.dir,指定其中SQL脚本将生成
wt.classRegistry.search.path,指定要搜索的文件的路径为代表的类进行注册
wt.classRegistry.search.pattern,指定文件模式考虑为代表类被注册
高级属性:
练习6-4:添加初始化方法
目标
●添加初始化方法生成的Java源..
方案
在这个练习中,您将编辑Java源代码为蓝本类实施相应的初始化。
第1步。添加初始化方法来模拟类。
答:打开CustomerOrder.java。
湾查找所有的初始化方法。下面是一个例子:
角对于每一个初始化的方法,添加一个调用父类的初始化方法。使用相同的参数传入下面是一个例子:
四保存该文件。
大肠杆菌编译。
第2步。检查其他的初始化方法生成的代码。
第3步。重新启动Tomcat和方法的服务器。
----
属性建模
对于持久化的类,例如扩展一个持久化类的自定义扩展,仿照属性在一个数据库表的列。列类型取决于属性类型。
•因此,如添加或修改属性将影响到数据库中的表的更改。
如果以前定制•参与创建数据库表,这些表需要被丢弃。
一般来说,这些表不应该包含关键数据 - 下降的表应该是在开发环境中进行。在生产中,该模型之前,应设置在生产中实施。
如果有表中的重要数据,这些数据不能删除 - 这将需要迁移到新的表结构。
Windchill的有许多表,并且有一个表中的行之间的关系。如果一个表包含数据,也不会放弃它在其他表中删除相关的数据。
它通常在开发环境中有可能只是一个自定义表下降,留在其他表中的额外的行,不容易看到,在开发系统的副作用。最好的做法是删除自订的数据,使用的用户界面,使所有相关的数据是正确删除之前,执行任何其他建模的变化。
---
访问器方法
当一个属性是在Rational Rose建模,“访问”的方法将被自动默认添加到结果包含的Java类的代码。一个名为“成本”的属性的例子:
1。私人无效costValidate(弦乐a_Cost)抛出WTPropertyVetoException
2。公共无效setCost(弦乐a_Cost)抛出WTPropertyVetoException
•前验证调用属性设置方法
3。公共字符串getCost()
该setCost()和getCost()方法也被称为setter和getter方法。
在Rational Rose中,属性是类的属性选项卡规范窗口总结:
必需属性
一个属性,可在窗口的属性说明Windchill的标签必须属性:
-
LowerLimit,UpperLimit
图6-13:Windchill的属性规范物业LowerLimit
属性规格
属性也有一个规范窗口设置属性的详细属性
属性需要:
•姓名
•类型
- 类型,可能是Windchill的类或一个Java类,它依赖于属性的目的。
- 对于成本属性,java.lang.Float是一个合乎逻辑的选择。
注:了解出口管制将是这次演习的元素。
-----------------------------------------
练习6-5:添加属性建模
目标
●型号的属性。
方案
以前创建类,的CustomerOrder,需要一个属性来表示的客户,下订单的名称。在本练习中,您将添加一个属性,一个模拟模型定制,根据客户的要求。
详细说明
属性需要增加成本。
第1步。考虑是否上定制表应该被丢弃。
答:仿照属性为数据库中的列,所以保存现有的CustomerOrder表需要被丢弃,然后用新的SQL编辑后生成的模型是完整的文物重建。
第2步。打开该com.customer.doc.CustomerOrder类规范窗口。
第3步。新增成本属性。
答:打开窗口的属性的类规范标签。
结果:
湾清除显示继承复选框。不应该有属性的CustomerOrder。
角右键单击并选择插入。将创建一个属性的名称与一个默认名称。
四双击属性和属性规范窗口将打开。
例如:
大肠杆菌在名称:字段中,输入成本。
楼在类型:字段中,输入java.lang.Float。
克在出口管制,选择公共。
小时什么是“公共”是什么意思?尝试使用Rational Rose的帮助找出答案。
一选择Windchill的标签。什么是的ColumnName价值?什么是这个数据库中的列名?
j的保存单位。
第4步。使用当前的SQL,删除的CustomerOrder表。
答:打开一个Windchill的外壳。
湾导航到WT_HOME /数据库/ SQL中/的COM /客户/ doc的。
角执行DROP脚本。表前降索引。
例如:
第5步。系统生成。
第6步。重新编译。
第7步。执行新的SQL。
第8步。重新启动Tomcat和方法的服务器。
第9步。测试。
第10步。挑战:添加一个属性来表示公司下订单。
答:什么属性被命名为?
湾什么是属性的类型?
角以前的定制需求是否被丢弃?
---
枚举类型
枚举类型是特殊的Windchill的属性有一个有效的值的离散集合。
•从理论上讲,这可能是属性仿照类直接输入,然后开发人员可以编写逻辑控制的可能值。
•不要使用这种方法,使用枚举类型的模式。
•约枚举类型属性的框架包含了有效的值的离散集和文本文件中的值定位控制。这些被称为资源包。
•属性本身是通过创建一个自定义类,扩展了标准的Windchill类wt.fc.EnumeratedType。
•自定义属性被称为“枚举类型”,并有UML的关系,它们都包含英寸级
•从用户界面,这些属性是可见的,并且可以像其他属性编辑蓝本直接在类。
•就像对一个类的属性,直接为蓝本,系统生成会产生访问方法。
枚举类型设计模式的例子,可以发现在整个Windchill的模型。
•开放WTdesigner.mdl和搜索EnumeratedType。
与其他设计模式,用一个可以复制和应用所需的定制模式的现有模型。
EnumeratedType范例
•零件
- 源(制造,购买)
- QuantityUnit(每个,根据需要,公升,公斤,米)
- PartType(组件,形影不离大会,可分大会)
•文件
- DocumentType(文档,需求文档,测试计划等)
- DepartmentList(会计,设计,制造等)
•更改对象
- 类别(安全问题,降低成本,其他等)
- IssuePriority(高,中,低,紧急)
- 复杂性(简单,复杂)
•CAD文件
- EPMAuthoringAppType(Pro / ENGINEER的,则AutoCAD,CATIA的时,SolidWorks,Unigraphics系统等)
- EPMDocSubType(数控模型,工艺规划,骨架,金属板等)
图6-17:2 EnumeratedTypes的例子在wt.doc包
编辑枚举类型值
建模的枚举类型后,系统将创建一个代资源包包含可能的值。
•这些资源包可以本地化,以及。
使用WT_HOME /宾/ enumCustomize编辑的值
----------------------------
练习6-6:型号枚举类型
目标
●型号枚举类型属性。
●使用enumCustomize编辑的可能值。
方案
为客户定制需要一个模拟属性(产品型号),有限制的产品型号正在出售的数量可能值。在本练习中,您将使用这个属性建模“枚举类型”的设计模式。
第1步。对于这项工作的所有步骤,是指作为参考现有的格局。
答:其中一个例子是wt.epm.EPMDocSubType。
第2步。添加wt.fc.EnumeratedType类到com.customer.doc图。
有两个名为EnumeratedType两个类 - 确定使用从wt.fc包之一。
答:在加入上EnumeratedType wt.fc.EnumeratedType,右键单击。清除两个选项>“显示选区中的所有属性和选项>”显示所有操作。这将清理图;了该模型的重点是自定义模式,而不是OOTB类。同样的动作可以执行对WTDocument在这个图。
第3步。创建一个新类名为产品型号。虽然它是一个类,它代表了一种对的CustomerOrder属性。
第4步。之间建立ProductModel和EnumeratedType推广。
第5步。创建一个从属性类(产品型号)单向聚集它所描述的类(的CustomerOrder)。
第6步。设置的单向关联的属性。
答:引用现有的格局。
湾通过双击打开,点击该链接现有格局的单向聚集的属性。
角通过双击打开,点击该链接的自定义现有的格局单向聚合的属性。
四浏览每个OOTB例子聚集和自定义标签的聚集,使性能相似。请注意,有一些文字是针对具体情况
(代表类别名称或属性名称)这些值应为自定义类和自定义属性合适。
1。 ProductModel和之间的CustomerOrder聚合可以为每个月底的聚合作用的名字。角色名是大写的属性名称相似 - “likeThis”。这就解释了为什么类产品型号有一个角色名“产品型号” - 它不是一个错字。
2。角色名称实际上可以是任何逻辑上解释了一ProductModel和一的CustomerOrder关系。
第7步。实施变革。
答:保存小队。
湾掉落使用现有的SQL数据库中现有的自定义表。
角系统生成。
四重新编译。
大肠杆菌执行新生成的SQL。
第8步。添加额外值产品型号。
答:由于没有默认值在模型中指定,并没有默认rbInfo文件created.enumCustomize不能使用,直到有一个现有的编译资源包文件。
湾创建WT_HOME /型钢/的COM /客户对下列文字/ ProductModelRB.rbInfo:
例如:
MODEL100A.value = 110型甲
角从Windchill的外壳,执行ResourceBuild com.customer.doc.ProductModelRB。
四现在,一值存在,useenumCustomize。
大肠杆菌将有3个值在所有:型号100甲,200型和300型一答
楼哪里的变化造成的enumCustomize储存在哪里?
第9步。重新启动Tomcat和方法的服务器。
第10步。测试。
花几分钟时间回答以下问题,然后审查你的老师他们。
1。问:如果Java源代码发生后没有一个系统生成编译?
2。问:哪些方法需要完全由系统生成后,开发商实施?
3。问:什么是最简单的方法为蓝本,要求用户输入的属性?
4。问:真或假:当一个方法被添加到一个持久化类,数据库表应该重修吗?
5。问:什么是“保= yes”在Java源代码块目的是什么?
综述
在完成这个模块,你应该能够:
•执行任务工程师组件的应用解决方案开发的系统的RVP工作流模块元素。
•创建一个新的Rational Rose中的包结构。
•扩展的Windchill类。
•在Rational Rose模型的新的属性。
•型号枚举类型。
•实现一个定制的Windchill为蓝本。
-----------------------------------
7777777777
部署
目标
当这个模块成功完成,您将能够:
•执行任务相关的部署过程中的集成单元测试和集成系统Compoentns的应用解决方案开发的系统工作流模块的RVP元素定义。
•部署定制从开发计算机到另一台计算机。
部署
通常的解决方案将参照开发计算机,需要感动,到测试或生产系统合并。
系统用于汇集多个用于测试目的的自定义代码被称为“一体化”或“集成测试”服务器。
建立实施框架(仁爱基金会)
仁爱基金会是一个PTC服务工程拥有的工具帮助部署定制,是PTC的SVN源代码管理服务器中。
仁爱基金会时,应使用自定义已经超出了Windchill的负载点储存。
Windchill的外存储定制负载点
1。该系统生成工具生成的构件的控制下存储的属性。
2。另外,可移动的文物外开发计算机的Windchill一代目录。
生成的工件
1。在WT_HOME建模文件/型钢。
2。生成的Java文件,已被编辑,WT_HOME /型钢。
3。编译Java文件。
•这些是没有必要的。
•他们应该是建立在生产服务器,以确保没有遗漏或不正确的类的类路径,以及没有Java版本问题。
4。在WT_HOME生成的SQL / DB文件/ SQL的..
5。注册表属性。
•这些是不需要的,从多个开发商多个属性文件将被覆盖对方。
•他们应该在生产服务器上生成。
6。在WT_HOME定制资源包/型钢。
7。编辑OOTB在WT_HOME / wtCustom资源包。
该构件应放置在一个单独的目录,其中的编辑而作出调整。
部署这些代码
完成后的发展:
1。移动工件到生产服务器。
2。运行WT_HOME /宾/ modelInstall。
•不生成的SQL;已生成的SQL是从发展环境。
•此修改注册表属性。
3。编译源。
4。构建资源包。
5。重新启动Tomcat和方法的服务器。
当mData文件已经存在,理性玫瑰并不需要启动生成工件或部署定制:
•WT_HOME /宾/ modelInstall可以运行在命令行中插入定制的注册表设置。
- 相反,WT_HOME /宾/ modelUninstall清理注册表设置。
•WT_HOME /宾/ JavaGen可以运行在命令行生成工件。
练习7-1:小组讨论
目标
●部署定制从开发计算机到另一台计算机。
方案
在讨论期间,部署的细节进行审查。请询问任何问题,你可能有。
第1步。是Java的开发服务器上编译的程序进行部署?
第2步。是在哪个目录编辑OOTB资源包?
第3步。是否WT_HOME /宾/ modelInstall更新注册表属性?
完成标准
R的生产服务器上号,以确保适当的编译运行时类路径。
ř WT_HOME / wtCustom
r是,WT_HOME /宾/ modelInstall更新注册表属性。
回顾
花几分钟时间回答以下问题,然后检查它们与您的
导师。
1。问:什么是modelInstall目的是什么?
2。问:什么文件可用于再生的东西?
答: WTdesigner.mdl
湾猫
角mData
四所有的文件* registry.properties
大肠杆菌以上皆非
3。问:应在Windchill的目录中的文件永远不会直接编辑?
综述
在完成这个模块,你应该能够:
•执行任务相关的部署过程中的集成单元测试和集成系统Compoentns的应用解决方案开发的系统工作流模块的RVP元素定义。
•部署定制从开发计算机到另一台计算机。
-------------------------
888888888888
个案研究
在这种情况下研究,参加者获得的经验和做法,以实施方案为蓝本的基础上由解决方案架构师提供的客户要求。
目标
当这个模块成功完成,您将能够:
•执行任务工程师组件的应用解决方案开发的系统的RVP工作流模块元素。
•执行任务相关的部署过程中的集成单元测试和集成系统Compoentns的应用解决方案开发的系统工作流模块的RVP元素定义。
•设计定制之前实施。
•扩大WTPart每个客户的要求。
•型号属性,操作为自定义WTPart。
•使用的开发环境,方便部署在另一台计算机(例如,生产服务器或测试环境)定制。
练习8-1:个案研究
目标
●实施前的定制设计。
●延长WTPart。
●型号属性,操作为自定义WTPart。
●使用一个开发环境,有利于部署在另一台计算机(例如,生产服务器或测试环境)定制。
方案
在这种情况下研究,解决方案架构师要求你实现一个扩展WTPart为客户。您将需要建立一个方便的部署方式的要求定制,然后实际部署在另一台计算机的定制。只有正确的自定义为任何一个或部分信用正确部署。既不是不能正确部署到另一台服务器定制,定制和部署或贫穷,
将被视为成功。
详细说明
从解决方案架构师的要求如下:
1。客户名称是Acme和阿克米是总部设在美国。
2。自定义WTPart名称将AcmePart。
3。 AcmePart需要的材料和成本的属性。
4。有限的物质属性的价值观INCO718,德州仪器- 6AL - 4V和美国ASTM乙
第1步。确定包结构。
第2步。适当控制软件包。
第3步。选择属性类型。
第4步。限制物质价值。
第5步。地点在易于部署的所有根在一个单独的开发定制
生产服务器。
注:上面的例子是在“com.customer”包;为个案研究对象,将在不同的包特定于客户名称。
综述
在完成这个模块,你应该能够:
•执行任务工程师组件的应用解决方案开发的系统的RVP工作流模块元素。
•执行任务相关的部署过程中的集成单元测试和集成系统Compoentns的应用解决方案开发的系统工作流模块的RVP元素定义。
•设计定制之前实施。
•扩大WTPart每个客户的要求。
•型号属性,操作为自定义WTPart。
•使用的开发环境,方便部署在另一台计算机(例如,生产服务器或测试环境)定制。
----------------------
999999999999
先进的解决方案
目标
当这个模块成功完成,您将能够:
•执行任务工程师组件的应用解决方案开发的系统的RVP工作流模块元素。
•实现一个自定义链接。
•实现一个侦听器服务。
练习9-1:实现自定义链接
目标
●实现一个自定义链接类。
方案
客户需要存储的信息在一个关系(链接)而定。在这个练习中,您将模型自定义链接,选择合适的设计模式。
详细说明
1。每个的CustomerOrder可以连接到许多CustomParts 0。
2。对于每个CustomPart的CustomerOrder相关的,可以指定数量。
3。阿CustomPart可以在几个不同的CustomerOrders使用,所以数量关系,具体的。
第1步。请参考wt.part.WTPartUsageLink和模式wt.part.WTPartDescribeLink。
第2步。清理以前的定制。
第3步。模型之间的自定义部分和一个自定义文档的链接。
第4步。系统生成。
第5步。重新编译。
第6步。重新启动Tomcat和方法的服务器。
第7步。测试。
接听服务
Windchill的服务提供了在两个特定领域的功能:
1。机制,为客户调用服务器端的方法(这是在服务器上调用和处理),以利用服务器的性能和集中资源优势
2。 Windchill的一种机制,以“听”的,并反过来回应,如系统事件:
•检查
•退房
•状态改变
•更新
•删除
服务类型
•监听服务
- 每当调用和处理特定类型的事件调度
- 不要求客户直接交流
- 自动启动服务器的方法
- 可以派遣活动
••
商务服务
- 随时调用和处理所提供的服务调用方法
- 自动启动服务器的方法
- 也可能是一个侦听器服务
- 可以派遣活动
-
•重量轻服务
- 不会自动开始由法服务器
- 可以派遣活动
服务综述
第一行如何调用,自动由法服务器,助手,可以分派活动开始了吗?
监听器,当特定类型的事件调度,是的,不是的,需要的是
工作上,当所提供的服务的方法被调用时,是的,是的,是
重量轻,当所提供的服务的方法被调用时,不,不是的,需要的是
接听服务
一位听众服务不是直接调用客户端或其他服务,而是登记一个或多个“听众”对象对应并响应特定事件类型分别。
侦听器服务建模遵循为所有其他类型的服务相同的标准造型设计模式。但是,抽象是没有必要帮助和服务在其RemoteInterface抽象或接口定义的任何操作,因为没有任何直接的互动将发生。
服务事件
服务事件类可以发现,在API的Javadoc作为“KeyedEvent”扩展。
有两个一般类型的事件:
1。可否决
•这些事件可以被否决或回滚的事件侦听器的背面
2。非可否决
•这些事件不能被否决的事件监听器,只是一个通知
一位听众否决一抛出一个异常(如。WTException)回到事件,又必须回滚任何数据库进行了作为一个事务块的一部分管理活动更新前原Dispatcher的事件。
实现事件监听器
一位听众内部类实现在StandardManager延伸。
该侦听内部类必须实现wt.events.KeyedEventListener接口。
wt.services.ServiceEventListenerAdapter已经这样做了,所以它可以延长代替。
注册事件监听器
一位听众服务订阅服务事件的具体登记在专门performStartupProcess()方法的一个监听器类的实例。例如:
这种方法实例化一个监听对象,并使用指定的事件时,该服务是自动启动的方法服务器关联起来。一个服务项目属性是必需的。
注册服务活动
一位听众服务注册定制服务的具体事件,它可能会发出与在专门registerEvents StandardManagerService()方法,例如:
自动服务启动
Windchill的属性指定哪些服务应该启动时自动启动服务器的方法。例如:
条目指定的接口或RemoteInterface,由StandardManager的扩展名。
自动启动和关闭服务
以下两种方法都继承自StandardManager,旨在重写专门的启动和关闭处理:
1。 performStartupProcess()
2。 performShutdownProcess()
--------------
练习9-2:实现侦听器服务
目标
●实现一个侦听器服务。
方案
客户需要记录所有的CustomerOrder创建的对象作为输入到外部的ERP系统的每一天。对于这个练习,实现侦听器服务的设计模式并添加所有适当的编码和属性,以记录的的CustomerOrder对象的创建。
第1步。确定适当的事件。
答:在事件发生后创作,使POST_STORE应该被使用。
第2步。模型的侦听器服务。
答:创建一个新的包com.customer.services。
湾内部com.customer.services,模型作为RemoteInterface CustomerOrderService没有扩展
角扩展模型StandardCustomerOrderService不过同时实现CustomerOrderService和wt.services.StandardManager。
例如:
四对于StandardCustomerOrderService,复制操作performStartupProcess()和performShutdownProcess(从标准管理器)。
大肠杆菌保存子单位。
楼系统生成。
第3步。编辑Java代码。
答:编辑WT_HOME /型钢/的COM /客户/服务/ StandardCustomerOrderService.java。
湾找到“user.operations”块。
角设置“保存”等于肯定的。添加以下代码:
四里面还有StandardCustomerOrderService.java,覆盖performStartupProcess()方法:
大肠杆菌编译Java文件总数3。
第4步。编辑属性和传播。
答:检查wt.properties找到可用的服务号码,并验证此号码可使用xconfmanager:
湾添加一个新的服务项,以wt.properties自动启动该服务:
角
第5步。测试。
答:重新启动Tomcat和方法的服务器。
湾创建的CustomerOrder。
练习9-3:API程序
目标
●实现一个API程序进行搜索。
●实现一个API的程序来创建一个自定义部分。
方案
每晚的客户有几个方案的要求。这些方案将用于生成输入到ERP系统的数据。在这个练习中,您将需要建立必要的程序使用的API作为参考。
详细说明
1。搜索所有的CustomerOrder对象。
2。搜索特定的自定义部分的对象,按名称。
3。创建一个自定义部分。
第1步。搜索所有的CustomerOrder对象。
答:创建一个Java应用程序的Main方法com.customer.utils.CustomerUtility。
湾添加一个方法getAllOrders()。从主调用此方法的方法。
角添加一个包语句。
四实现一个wt.fc.QueryResult对象为代表的搜索结果。
大肠杆菌实现一个wt.query.QuerySpec对象,以确定被搜查的类(的CustomerOrder)。
楼添加wt.fc.PersistenceHelper.manager.find()方法来执行搜索。
克通过了名称和对象的数量的QueryResult和打印结果发现环。
小时使用默认的“get”和“设置”自动为每个属性的方法也打印出属性信息生成。
一某些API需要一个try / catch块。图什么异常是通过测试或通过对QuerySpec,QueryResult和PersistenceHelper的API抛出。在下面的例子中,“合作”表示的CustomerOrder对象。
j的运行该程序,然后使用OOTB搜索UI来验证结果。
第2步。搜索特定的对象按名称自定义部分。
答:创建一个Java应用程序的Main方法com.customer.utils.CustomerUtility。
湾添加一个方法getPartsByName()。从主调用此方法的方法。
角添加一个包声明和import语句。
四除了wt.fc.QueryResult和wt.query.QuerySpec对象,一SearchCondition将需要以限制返回的对象。在这个例子中,有“QS”是一个QuerySpec对象:
大肠杆菌添加wt.fc.PersistenceHelper.manager.find()方法来执行搜索。
楼通过QueryResult循环的结果 - 这是一个java.util.Enumeration和打印出的名称和定制部件数量的扩展。
g.使用默认的自动获取和设置每个属性的属性信息也打印出生成的方法。
一和以前一样,会抛出异常,需要加以处理。
j的运行该程序,然后使用OOTB搜索UI来验证结果。
第3步。创建一个自定义部分。
答:创建一个带main方法的Java应用程序。
湾添加一个方法createPart()。从主调用此方法的方法。
角对象存储在容器中。内部createPart(),先执行一个名为“GOLF_CART”容器搜索。
四从结果 - 在QueryResult(可变“快速反应”)存储 - 获得容器的引用:
大肠杆菌初始化自定义部分,并设置属性。下面是设置一个EnumeratedType属性如该EnumeratedType属性的名称是“物质”的例子,该角色会的名称是“matl”:
该对象的数量将是目前的日期和时间。
楼设置文件夹,坚持对象。请注意,assignLocation()方法使用的GOLF_CART发现以前货柜参考:
克和以前一样,会抛出异常,需要加以处理。
小时运行该程序并使用UI来验证正在创建定制部件。
综述
在完成这个模块,你应该能够:
•执行任务工程师组件的应用解决方案开发的系统的RVP工作流模块元素。
•实现一个自定义链接。
•实现一个侦听器服务。