部件创建/更新页面客制化—属性值约束获取API

本文详述了如何在部件创建/更新页面上实现客制化,通过查询对象属性值和约束的API,提供了一组示例及完整的测试类,以帮助理解并应用到实际布局获取中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

客制化开发中会用到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") >
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值