示例代码
随附的示例
AbstractCarambolaAttributeSumBusinessAlgorithm
这是一个示例业务算法,用于计算并返回部件结构中所有部件上指定属性的数字 "sum"。此算法旨在用于数字属性上的 "Formula" 特性。用于求和的属性的内部名称将作为第一个自变量传入到算法中。
由于添加数字列表的方法因数据类型不同而有所不同,因此,此抽象类的子类将实际处理不同数据类型的值的求和。我们提供了 3 个子类,用于处理这些数据类型的特定细节:
IntCarambolaAttributeSumBusinessAlgorithm
FloatCarambolaAttributeSumBusinessAlgorithm
FloatWithUnitCarambolaAttributeSumBusinessAlgorithm
这些子类必须覆盖以下 2 种数据类型的特定方法:一种是提供用于公式验证 (getSampleValue()) 的数据类型的典型示例值,另一种是添加此数据类型 (calculateSumValue()) 的值列表。
因此,要在浮点属性上使用此算法,请在“类型和属性管理”实用程序中计算的属性的 formula 特性中输入如下所示的表达式:
execute("com.ptc.carambola.customization.examples.businessfield.FloatCarambolaAttributeSumBusinessAlgorithm", "<name of a floating point attribute>")
此代码示例可在以下位置查看:<Windchill>\Windchill\srclib\wnc\
此示例中使用的文件
<Windchill>\Windchill\srclib\wnc\Carambola-java.jar
示例代码的说明
execute() 方法首先获取用于求和的属性的名称以及当前业务对象 (WTPart)。接下来,它调用 getAllPartStructure(final BusinessObject curBusinessObject) 帮助程序方法来向下浏览当前业务对象的部件结构树,并返回该结构中部件的 WTCollection。(这将通过 wt.navigation.PartRequestwt.navigation.DependencyHelper 类完成。)
在获取结构中部件的集合后,execute() 下一步会调用 getBusinessField( final String fieldName, final TypeIdentifier contextType ) 帮助程序,以返回应针对结构进行求和的 BusinessField 对象。
然后,execute() 调用 getPartStructureValues(final WTCollection partCollection, final BusinessField fieldToSum ) 帮助程序,以获取结构中所有部件所需业务字段的值列表。此帮助程序首先使用 com.ptc.core.businessfield.server.businessObject.BusinessObjectHelper 类同时创建并加载所有业务对象 (如果尚未加载)。然后,它会遍历业务对象,并在 fieldToSum 业务字段中获取值并将其添加到列表中。最后,返回值列表。
下一步,execute() 将调用子类覆盖 calculateSumValue(List<Number> allValuesForAttribute) 方法,以将所有值实际累加到总和中。(如果查看不同的子类,则会发现:计算长整型值比较简单,但添加浮点值需要考虑单位和精度。)
最后,execute() 返回总和,然后该总和将作为 "execute()" 公式函数的值返回。(如果 Formula 仅包含 execute() 函数,则这也是整个公式和属性的值。)
这对您有帮助吗?