客制化开发中会用到Windchill 创建/更新部件时获取属性布局,属性约束范围 API
获取布局
/**
* 获取布局
* @param type
* @return
* @throws NotAuthorizedException
* @throws WTContainerException
* @throws WTException
*/
public static LayoutDefinitionReadView getLayout(Typed type) throws NotAuthorizedException, WTContainerException, WTException {
LayoutDefinitionReadView layout = null;
TypeDefinitionReference ref = type.getTypeDefinitionReference();
TypeIdentifier t = EPMSoftTypeServerUtilities.getTypeIdentifier(ref);
TypeDefinitionManager theTypeDefinitionManager = TypeDefinitionManager.getTypeDefinitionManagerInstance();
TypeDefinitionReadView arg3 = theTypeDefinitionManager.getTypeDefView(getTypeDefName(t));
Collection<LayoutDefinitionReadView> layouts = arg3.getAllLayouts();
for(LayoutDefinitionReadView layoutDefinitionReadView : layouts) {
String name = layoutDefinitionReadView.getName();
System.out.println("layoutName=="+name);
if("Edit Layout".equals(name)) {
layout = layoutDefinitionReadView;
break;
}
}
// LayoutDefinitionReadView layout = TypeDefinitionServiceHelper.service.getLayoutDefinition(t, "", "Edit Layout");
return layout;
}
查询对象属性值和约束
/**
* 查询对象属性值和约束
* @param part
* @throws RemoteException
* @throws WTException
*/
public static void getAttrite(WTPart part) throws RemoteException, WTException {
String softtype = TypeIdentifierUtilityHelper.service.getTypeIdentifier(part).toString();
TypeIdentifier ti = TypedUtility.getTypeIdentifier(softtype);
TypeDefinitionReadView tv = TypeDefinitionServiceHelper.service.getTypeDefView(ti);
Collection<AttributeDefinitionReadView> attrs = tv.getAllAttributes();
IBAHolder ibaHolder = null;
DefaultAttributeContainer dac = null;
ibaHolder = IBAValueHelper.service.refreshAttributeContainerWithoutConstraints(part);
dac = (DefaultAttributeContainer) ibaHolder.getAttributeContainer();
AbstractValueView valueView[] = dac.getAttributeValues();
//查询属性值
if (valueView.length != 0) {
for (int i = 0; i < valueView.length; i++) {
AbstractValueView avv = valueView[i];
if(!(avv instanceof StringValueDefaultView)) {
//只读字符型
continue;
}
String attrname = avv.getDefinition().getName();
String attrValue = ((StringValueDefaultView) avv).getValue();
System.out.println("IBAName=="+attrname);
System.out.println("IBAValue=="+attrValue);
AttributeDefinitionReadView av = tv.getAttributeByName(attrname);
if (av == null) {
continue;
}
Collection<ConstraintDefinitionReadView> constraints = av.getAllConstraints();
for (ConstraintDefinitionReadView constraint : constraints) {
ConstraintRuleDefinitionReadView crdrv = constraint.getRule();
DatatypeReadView datatypeReadView = crdrv.getDatatype();
String datatype = datatypeReadView.getName();
boolean isDateTimestampType = Timestamp.class.getName().equals(datatype);
boolean isFloatingPointWithUnitsType = FloatingPointWithUnits.class.getName().equals(datatype);
boolean isLong = Long.class.getName().equals(datatype);
boolean isString = String.class.getName().equals(datatype);
String rule = constraint.getRule().getKey().toString();
System.out.println("rule===========>" + rule);
if (rule.indexOf("com.ptc.core.lwc.server.LWCEnumerationBasedConstraint") > -1) {
// 枚举
RuleDataObject rdo = constraint.getRuleDataObj();
if (rdo != null) {
Collection coll = rdo.getEnumDef().getAllEnumerationEntries().values();
Iterator<EnumerationEntryReadView> it = coll.iterator();
while (it.hasNext()) {
EnumerationEntryReadView view = it.next();
String enumKey = view.getName();
String enumName = view.getPropertyValueByName("displayName").getValue().toString();
System.out.println("key: "+enumKey+"====enumName: "+enumName);
}
}
} else if (rule.indexOf("com.ptc.core.meta.container.common.impl.StringLengthConstrain") > -1) {
// 长度
RuleDataObject rdo = constraint.getRuleDataObj();
} else if (rule.indexOf("com.ptc.core.meta.container.common.impl.DiscreteSetConstraint") > -1) {
// 离散型
} else if (rule.indexOf("com.ptc.core.meta.container.common.impl.RangeConstrain") > -1) {
// 有效范围
} else if (rule.indexOf("com.ptc.core.meta.container.common.impl.SuggestedValuesConstraint") >