Examples
If you create your own compliance definition files, you should re-use the compliance type, substance classifications, and compliance definitions that are already in Materials Compliance Management (created when EURoHSComplianceConfiguration.xml file is loaded during the install).
Below is an example of a compliance definition in this file:
<ComplianceDefinition name="RoHS" complianceType="EU RoHS" description="This compliance definition represents the list of restricted, reportable or prohibited substances and their allowable thresholds as mandated by the European Union's EU RoHS directive." thresholdType="Maximum Allowed" enterprise="Yes" rollup="Yes" active="Yes" key="cdef_rohs">
<CThreshold ref="cls_cadmium" quantity=".01" category="Prohibited" iaZeroThreshold="Yes"/>
<CThreshold ref="cls_lead" quantity=".1" category="Prohibited" iaZeroThreshold="Yes"/>
<CThreshold ref="cls_lead_pvc_cables" quantity=".1" category="Prohibited" iaZeroThreshold="Yes"/>
<CThreshold ref="cls_hex_chromium" quantity=".1" category="Prohibited" iaZeroThreshold="Yes"/>
<CThreshold ref="cls_mercury" quantity=".1" category="Prohibited" iaZeroThreshold="Yes"/>
<CThreshold ref="cls_pbb" quantity=".1" category="Prohibited" iaZeroThreshold="Yes"/>
<CThreshold ref="cls_pbde" quantity=".1" category="Prohibited" iaZeroThreshold="Yes"/>
<Exemption ref="app_mercury_1"/>
<Exemption ref="app_mercury_2a"/>
<Exemption ref="app_mercury_2b"/>
<Exemption ref="app_mercury_2c"/>
<Exemption ref="app_mercury_3"/>
<Exemption ref="app_mercury_4"/>
<Exemption ref="app_lead_5"/>
<Exemption ref="app_lead_6a"/>
<Exemption ref="app_lead_6b"/>
<Exemption ref="app_lead_6c"/>
<Exemption ref="app_lead_7a"/>
<Exemption ref="app_lead_7b"/>
<Exemption ref="app_lead_7c"/>
<Exemption ref="app_cadmium_8"/>
<Exemption ref="app_hex_chromium_9"/>
<Exemption ref="app_pbde_10a"/>
<Exemption ref="app_lead_10b"/>
<Exemption ref="app_lead_11"/>
<Exemption ref="app_lead_13a"/>
<Exemption ref="app_cadmium_13b"/>
<Exemption ref="app_lead_14"/>
<Exemption ref="app_lead_15"/>
<Exemption ref="app_lead_16"/>
<Exemption ref="app_lead_17"/>
<Exemption ref="app_lead_18"/>
<Exemption ref="app_lead_19"/>
<Exemption ref="app_lead_20"/>
<Exemption ref="app_lead_21"/>
<Exemption ref="app_lead_22"/>
<Exemption ref="app_lead_23"/>
<Exemption ref="app_lead_24"/>
<Exemption ref="app_lead_25"/>
<Exemption ref="app_lead_26"/>
<Exemption ref="app_lead_27"/>
<Exemption ref="app_hex_chromium_28"/>
<Exemption ref="app_lead_29"/>
</ComplianceDefinition>
This is the compliance definition for RoHS. The CThreshold elements reference substance applications. The Exemption elements reference compliance applications.
Let's say you want to create a separate import file that contains a simple compliance definition called "RoHS Mercury," which is a subset of RoHS. The definition would look like this:
<ComplianceDefinition name="RoHS Mercury" complianceType="EU RoHS" description="This compliance definition represents RoHS Mercury only." thresholdType="Maximum Allowed" enterprise="Yes" rollup="Yes" active="Yes" key="cdef_rohs">
<CThreshold ref="cls_mercury" quantity=".1" category="Prohibited" iaZeroThreshold="Yes"/>
<Exemption ref="app_mercury_1"/>
<Exemption ref="app_mercury_2a"/>
<Exemption ref="app_mercury_2b"/>
<Exemption ref="app_mercury_2c"/>
<Exemption ref="app_mercury_3"/>
<Exemption ref="app_mercury_4"/>
</ComplianceDefinition>
Even though these substance classifications and compliance applications already exist in Materials Compliance Management (because they were loaded when installing the RoHS data management option), you still need to put XML elements in the file to identify them. You would need to add the following lines ahead of this compliance definition:
<ComplianceType name="EU RoHS" applicationRequired="No" materialClassificationRequired="No" substanceClassificationRequired="No" referenceOnly="Yes"/>
<SubstanceClassification name="Mercury/Mercury Compounds" complianceType="EU RoHS" code="A10" key="cls_mercury" referenceOnly="Yes"/>
<ComplianceApplication name="1 Mercury in compact fluorescent lamps not exceeding 5 mg per lamp" code="1" complianceType="EU RoHS" key="app_mercury_1" referenceOnly="Yes"/>
<ComplianceApplication name="2a Mercury in straight fluorescent lamps for general purposes not exceeding 10 mg. in halophosphate lamps" code="2a" complianceType="EU RoHS" key="app_mercury_2a" referenceOnly="Yes"/>
<ComplianceApplication name="2b Mercury in straight fluorescent lamps for general purposes not exceeding 5 mg. in triphosphate lamps with a normal lifetime" code="2b" complianceType="EU RoHS" key="app_mercury_2b" referenceOnly="Yes"/>
<ComplianceApplication name="2c Mercury in straight fluorescent lamps for general purposes not exceeding 8 mg. in triphosphate lamps with long lifetime" code="2c" complianceType="EU RoHS" key="app_mercury_2c" referenceOnly="Yes"/>
<ComplianceApplication name="3 Mercury in straight fluorescent lamps for special purposes" code="3" complianceType="EU RoHS" key="app_mercury_3" referenceOnly="Yes"/>
<ComplianceApplication name="4 Mercury in other lamps not specifically mentioned in this list" code="4" complianceType="EU RoHS" key="app_mercury_4” referenceOnly="Yes"/>
An important point here is the addition of the referenceOnly="Yes" attribute, which tells the importer that these items already exist in Materials Compliance Management and should just be referenced. The entire file would look like this:
<bom:ComplianceConfiguration xmlns:bom="http://www.matrixone.com/schemas/mcc/BillOfMaterials" xmlns="http://www.matrixone.com/schemas/mcc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.matrixone.com/schemas/mcc/BillOfMaterials
D:\matrix-dev\java\src\com\studio\apps\materialcompliance\xmlschema\XSD\MCC_BillOfMaterials.xsd">
<ReportInfo/>
<ComplianceType name="EU RoHS" applicationRequired="No" materialClassificationRequired="No" substanceClassificationRequired="No" referenceOnly="Yes"/>
<SubstanceClassification name="Mercury/Mercury Compounds" complianceType="EU RoHS" code="A10" key="cls_mercury" referenceOnly="Yes"/>
<ComplianceApplication name="1 Mercury in compact fluorescent lamps not exceeding 5 mg per lamp" code="1" complianceType="EU RoHS" key="app_mercury_1" referenceOnly="Yes"/>
<ComplianceApplication name="2a Mercury in straight fluorescent lamps for general purposes not exceeding 10 mg. in halophosphate lamps" code="2a" complianceType="EU RoHS" key="app_mercury_2a" referenceOnly="Yes"/>
<ComplianceApplication name="2b Mercury in straight fluorescent lamps for general purposes not exceeding 5 mg. in triphosphate lamps with a normal lifetime" code="2b" complianceType="EU RoHS" key="app_mercury_2b" referenceOnly="Yes"/>
<ComplianceApplication name="2c Mercury in straight fluorescent lamps for general purposes not exceeding 8 mg. in triphosphate lamps with long lifetime" code="2c" complianceType="EU RoHS" key="app_mercury_2c" referenceOnly="Yes"/>
<ComplianceApplication name="3 Mercury in straight fluorescent lamps for special purposes" code="3" complianceType="EU RoHS" key="app_mercury_3" referenceOnly="Yes"/>
<ComplianceApplication name="4 Mercury in other lamps not specifically mentioned in this list" code="4" complianceType="EU RoHS" key="app_mercury_4" referenceOnly="Yes"/>
<ComplianceDefinition name="RoHS Mercury" complianceType="EU RoHS" description="This compliance definition represents RoHS Mercury only." thresholdType="Maximum Allowed" enterprise="Yes" rollup="Yes" active="Yes" key="cdef_rohs">
<CThreshold ref="cls_mercury" quantity=".1" category="Prohibited" iaZeroThreshold="Yes"/>
<Exemption ref="app_mercury_1"/>
<Exemption ref="app_mercury_2a"/>
<Exemption ref="app_mercury_2b"/>
<Exemption ref="app_mercury_2c"/>
<Exemption ref="app_mercury_3"/>
<Exemption ref="app_mercury_4"/>
</ComplianceDefinition>
</bom:ComplianceConfiguration>
Notes
There are a number of attributes on the compliance definition element that can be set that configure the compliance definition:
- thresholdType is "Maximum Allowed" or "Minimum Rejected". This tells Materials Compliance Management whether a threshold is exceeded when the amount of substance is greater than the threshold or greater than or equal to the threshold. The default is Maximum Allowed, which is the same as saying "greater than" the threshold
- enterprise is "Yes" or "No". Only Compliance Administrators can set this to Yes. If Yes, the compliance definition is visible to every user. If No, it is visible only to the originator.
- rollup is "Yes" or "No". Only Compliance Administrators can set this to Yes and only if enterprise="Yes". If Yes, then Materials Compliance Management will calculate, store, and display this compliance value on various pages.
- Active="Yes", which only applies to enterprise="Yes" Compliance Definitions. This sets the state to Active. For enteprise="No" Compliance Definitions the only state is Active. The rollup only goes into effect when the compliance definition is active.
A compliance definition can also reference a substance threshold (SThreshold element) instead of a substance classification threshold (CThreshold element). Just as for substance classifications, a substance element has to be present in the file ahead of the SThreshold element. Below is an example of a substance element:
<Substance CAS="26628-22-8" name="Sodium azide" key="cas_26628-22-8"/>
If the substance already exists in Materials Compliance Management, you need to add referenceOnly="Yes" to the element:
<Substance CAS="26628-22-8" name="Sodium azide" key="cas_26628-22-8" referenceOnly="Yes"/>
If you want to include this substance in the RoHS Mercury Compliance Definition, you would need to add an SThreshold element:
<ComplianceDefinition name="RoHS Mercury" complianceType="EU RoHS" description="This compliance definition represents RoHS Mercury only." thresholdType="Maximum Allowed" enterprise="Yes" rollup="Yes" active="Yes" key="cdef_rohs">
<CThreshold ref="cls_mercury" quantity=".1" category="Prohibited" iaZeroThreshold="Yes"/>
<SThreshold ref="cas_26628-22-8" quantity=".1" category="Prohibited" iaZeroThreshold="Yes"/>
<Exemption ref="app_mercury_1"/>
<Exemption ref="app_mercury_2a"/>
<Exemption ref="app_mercury_2b"/>
<Exemption ref="app_mercury_2c"/>
<Exemption ref="app_mercury_3"/>
<Exemption ref="app_mercury_4"/>
</ComplianceDefinition>
Here are some attributes of the CThreshold and SThreshold elements that configure them:
- quantity. The amount of the threshold in percent units
- category. An indication of how restricted the substance is. Choices are Prohibited, Restricted, Reportable, and Unrestricted
- iaZeroThreshold. When a substance is used in a material in Materials Compliance Management the user can specify whether it is intentionally added. When set to Yes, the attribute says that if the substance is intentionally added consider its threshold to be 0%. If it is not intentionally added consider the threshold to be the value in the quantity field. If No, then the quantity threshold is always used regardless of whether the substance was intentionally added or not.