属性規則
属性規則は、指定した属性が特定の条件を満たしているかどうかを検証します。属性規則のコンフィギュレーションでは、入力としてオブジェクトタイプのみが必要です。オブジェクトタイプは、wt.fc.Persistable タイプのオブジェクトである必要があります。たとえば、com.ptc.Waiver は wt.change2.WTVariance のサブタイプです。
<configs>
<config name="objectType" value="com.ptc.Waiver"></config>
</configs>
タイプ名またはタイプ文字列の値は、タイプの外部名のみを使用して指定できます (com.ptc.Waiver または WCTYPE|wt.change2.WTVariance|com.ptc.Waiver)。
指定したオブジェクトタイプのサブタイプを、属性規則から除外できます。たとえば、次のようなオブジェクトタイプ WTVariance の属性規則のコンフィギュレーションでは、com.ptc.Waiver と com.ptc.Deviation タイプが評価から除外されます。
<configs>
<config name="objectType" value="wt.change2.WTVariance "></config>
<config name="excludedType" value="com.ptc.Waiver"></config>
<config name="excludedType" value="com.ptc.Deviation"></config>
</configs>
指定したオブジェクトタイプの属性で検証を行うように条件を設定するには、コンフィギュレーション名を「属性名」にして、値を「条件」にします。次の属性のコンフィギュレーションは、com.ptc.Waiver の承認済み数量が 10 から 100 の間であるかどうかを確認します。
<configs>
<config name="objectType" value="com.ptc.Waiver"></config>
<config name="approvedQuantity" value="[10..100]"></config>
</configs>
次に、部品の特定のサブタイプで、グローバル属性の内部名が weight である例を示します。
<configs>
<config name="objectType" value="com.ptc.SubTypePart"></config>
<config name="weight" value="<=100"></config>
</configs>
次の表に、サポートされる演算と、属性規則のコンフィギュレーションでサポートされるオブジェクトタイプを示します。
演算子
値タイプ
説明
ロード条件の例
>、>=、<、<=
Long、文字列、日付、タイムスタンプ、FloatingPoint、FloatingPointWithUnits
オブジェクトの属性値が、指定した値より大きい、以上、未満、以下、または等しいかどうかを検証します。
演算子の文字はインポートロードの予約文字です。「未満」の演算子 (<) は「&lt;」、「より大きい」の演算子 (>) は「&gt;」と指定する必要があります。
&gt;2012-01-12 00:00:00=&lt;=20.002&gt;=10
[0..10]
Long、文字列、日付、タイムスタンプ、FloatingPoint、FloatingPointWithUnits
オブジェクトの属性値が指定した範囲内にあるかどうかを検証します。範囲の最小値を指定しなかった場合は、「以下」の条件と同じになります。範囲の最大値を指定しなかった場合は、「以上」の条件として処理されます。
[-10.09..10.09][2012-01-12 00:00:00..2012-02-12 00:00:00][..100][0..]
=、!=
ブール、Long、文字列、日付、タイムスタンプ、FloatingPoint、FloatingPointWithUnits
オブジェクトの属性値が、指定した値と等しい、または等しくないことを検証します。
演算子の ! 文字はインポートロードの予約文字であるため、「#33;」と指定する必要があります。
=true#33;=2012-02-12 00:00:00=10.09
[A,B]
ブール、Long、文字列、日付、タイムスタンプ、FloatingPoint、FloatingPointWithUnits
オブジェクトの属性値が離散セット内にあるかどうかを検証します。
[true][2012-02-01 00:00:00,2012-02-15 00:00:00,2012-02-30 00:00:00][MAJOR,CRITICAL][10.01,10.02][10,100,1000]
SET
ブール、Long、文字列、日付、タイムスタンプ、FloatingPoint、FloatingPointWithUnits
オブジェクトの属性値が null でないことを検証します。演算の指定には SET キーワードのみが必要です。
SET
NOT_SET
ブール、Long、文字列、日付、タイムスタンプ、FloatingPoint、FloatingPointWithUnits
オブジェクトの属性値が null であることを検証します。演算の指定には NOT_SET キーワードのみが必要です。
NOT_SET
EQUALS
文字列
オブジェクトの属性値が指定した文字列であるかどうかを検証します。
EQUALS(MAJOR)
NOT_EQUALS
文字列
オブジェクトの属性値が指定した文字列でないことを検証します。
NOT_EQUALS(MAJOR)
BEGINSWITH
文字列
オブジェクトの属性値が、指定した文字列から始まっているかどうかを検証します。
BEGINSWITH(PN)
NOT_BEGINSWITH
文字列
オブジェクトの属性値が、指定した文字列で始まっていないことを検証します。
NOT_BEGINSWITH(PN)
ENDSWITH
文字列
オブジェクトの属性値が、指定した文字列で終了しているかどうかを検証します。
ENDSWITH(0)
NOT_ENDSWITH
文字列
オブジェクトの属性値が、指定した文字列で終了していないことを検証します。
NOT_ENDSWITH(0)
CONTAINS
文字列
オブジェクトの属性値に指定した文字列が含まれているかどうかを検証します。
CONTAINS(PN0)
NOT_CONTAINS
文字列
オブジェクトの属性値に指定した文字列が含まれていないことを検証します。
NOT_CONTAINS(PN0)
LENGTH
文字列
オブジェクトの属性文字列の長さが、指定した長さの範囲内であることを検証します。
LENGTH(0..40)LENGTH(0..)LENGTH(..40)
* 
属性条件の日付とタイムスタンプのフォーマットには、システムのロケールが使用されます。
部品の重さを表す weight という属性を持つ部品のサブタイプがあるとします。weight を持つ部品をリリースする前に、weight が妥当な数値に設定されていることを確認します。このためには、weight 属性が 1 から 100 の範囲にあることを検証するビジネス規則を作成します。
ビジネス規則セット:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE BusinessRuleSet SYSTEM "standardX20.dtd">
<BusinessRuleSet>
<ObjectID><localId>wt.businessRules.BusinessRuleSet:45347</localId>
</ObjectID>

<objectContainerPath>/wt.inf.container.OrgContainer=
BusinessRulesTestOrganization/wt.pdmlink.PDMLinkProduct=
BusinessRulesTestProduct</objectContainerPath>
<key>CHANGEABLE_PRE_RELEASE</key>
<name>Test_Changeable_ReleaseRuleSet</name>
<description>To test basic Attribute RuleSet Validation</description>
<enabled>true</enabled>
<overridable>true</overridable>
<updateIfExists>true</updateIfExists>
</BusinessRuleSet>
ビジネス規則:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE BusinessRule SYSTEM "standardX20.dtd">
<BusinessRule>
<ObjectID><localId>wt.businessRules.BusinessRule:168926</localId></ObjectID>
<objectContainerPath>/wt.inf.container.OrgContainer=
BusinessRulesTestOrganization/wt.pdmlink.PDMLinkProduct=
BusinessRulesTestProduct</objectContainerPath>
<key>PART_ATTRIBUTE_RULE</key>
<selector>ATTRIBUTE_RULE</selector>
<name>Test Attribute Rule</name>
<description>Test Attribute Rule</description>
<enabled>true</enabled>
<updateIfExists>true</updateIfExists>
<configs>
<config name="objectType" value="wt.part.AttributeRulePart"></config>
<config name="weight" value="[0..100]"></config>
</configs>
</BusinessRule>
ビジネス規則リンク:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE BusinessRuleLink SYSTEM "standardX20.dtd">
<BusinessRuleLink>
<ObjectID><localId>wt.businessRules.BusinessRuleLink:168919</localId>
</ObjectID>

<ruleSet><ObjectReference><localID>wt.businessRules.BusinessRuleSet:45347
</localId></ObjectReference></ruleSet>

<rule><ObjectReference><localID>wt.businessRules.BusinessRule:168926
</localId></ObjectReference></rule>
<blockNumber>1</blockNumber>
<updateIfExists>true</updateIfExists>
</BuisnessRuleLink>
これは役に立ちましたか?