Specialized Administration > Configuring Your Windchill Environment > Business Rules > Available Business Rules > BOM Release Rule
  
BOM Release Rule
This business rule ensures that all resulting objects are at an appropriate state and all their first-level dependants are at the appropriate state. If a child object is also a resulting object, that child goes to the target state when released through the change notice, instead of staying at the current state.
Required configuration options include:
targetState—a valid state for the resulting objects. You can define more than one targetState.
validDependentState—a valid state for dependent objects. You can define more than one validDependentState.
collectionComponentID—the collection component identifier used to collect the dependent objects. The default collection component identifier COLLECT_ITEMS_FOR_BOM_RELEASE_RULE is available with your Windchill system. Each collection component identifier has preferences that determine which objects are collected. The BOM Maturity Release Collector preference in the Business Rules section of the Preference Management utility controls the collection rules.
Optional configuration options include:
checkPredecessorRevisions—check for valid state of previous revisions of the dependent object. If true, the rule checks to make sure the previous revisions are in a valid state. If false or not set, the rule does not check validity of previous revisions. The default is false.
invalidDependentState—an invalid state for dependent objects. You can define more than one invalidDependentState.
The following examples illustrate using the BOM Release Rule:
Any assembly being released to the Released or Prototype state and not at the Obsolete state. If a dependent is not in the Released, Prototype, or Obsolete state, the previous revision is checked
If there are any dependent component parts that are in an invalid state, the rule fails and a list of invalid assemblies are listed in the View Conflicts report. For more information, see Viewing Rule Conflicts.
Example configuration attributes:
* 
If the configuration option supports more than one value, you can define more than one state by specifying a separate configuration entry for each additional value as shown in the example below.
<configs>
<config name="targetState" value="RELEASED"/>
<config name="validDependentState" value="RELEASED"/>
<config name="validDependentState" value="PROTOTYPE"/>
<config name="invalidDependentState" value="OBSOLETE"></config>
<config name="invalidDependentState" value="INWORK"></config>
<config name="checkPredecessorRevisions" value="true"></config>
<config name="collectionComponentID"
value="COLLECT_ITEMS_FOR_BOM_RELEASE_RULE"/>
</configs>
The following examples illustrate the BOM Release rule.
Example
Suppose you need to change an assembly that has many child parts. However, before you change the assembly, you want to ensure that all of the children are in the RELEASED state, or will be in the RELEASED state as a result of this change. You also want to ensure that all of the child parts are up to date, so you want to check that none of the child parts have become OBSOLETE. In order to configure this, you could create the following business rule objects.
Business rule set:
<?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>
Business rule:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE BusinessRule SYSTEM "standardX20.dtd">
<BusinessRule>
<ObjectID><localId>wt.businessRules.BusinessRule:158927</localId>
</ObjectID>

<objectContainerPath>/wt.inf.container.OrgContainer=
BusinessRulesTestOrganization/wt.pdmlink.PDMLinkProduct=
BusinessRulesTestProduct</objectContainerPath>
<key>BOM_RELEASE_RULE_RELEASED_STATE</key>
<selector>BOM_RELEASE_RULE</selector>
<name>Test BOM release Rule</name>
<description>Test BOM release Rule RELEASED State</description>
<enabled>true</enabled>
<updateIfExists>true</updateIfExists>
<configs>
<config name="targetState" value="RELEASED"></config>
<config name="validDependentState" value="RELEASED"></config>
<config name="invalidDependentState" value="OBSOLETE"></config>
<config name="checkPredecessorRevisions" value="true"></config>
<config name="collectionComponentID" value=
"COLLECT_ITEMS_FOR_BOM_RELEASE_RULE"></config>
</configs>
</BusinessRule>
Business rule link:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE BusinessRuleLink SYSTEM "standardX20.dtd">
<BusinessRuleLink>
<ObjectID><localId>wt.businessRules.BusinessRuleLink:168920</localId>
</ObjectID>

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

<rule><ObjectReference><localId>wt.businessRules.BusinessRule:158927
</localId></ObjectReference></rule>
<blockNumber>1</blockNumber>
<updateIfExists>true</updateIfExists>
</BusinessRuleLink>