Using the Data Checker

The data model imbeds and enforces a significant number of consistency rules. It is important to be able to check that those rules are not broken. This tool allows you to check and repair, when possible, the data.

This page discusses:

How Does the Data Checker Work?

The Data Checker is a batch tool which runs on the 3DSpace server side. It has two main features:

  • it first detects errors in the database and formalizes the result in an intelligible way for the end user
  • then it corrects these errors, when possible.

Both steps are distinct since the detection step may be launched alone, or followed by the correction step.

The data checker accepts external declaration of the rules that coherent data should follow. These rules are defined in rule file in XML format. Rule files are used to describe:

  • the list of rules to apply
  • the type of rule to apply (JAVA or MQL type)
  • for JAVA rules, the name of the Java class to be used
  • for JAVA rules, several couples of attributes or parameters and their values
  • for MQL rules, the where clause, the data type targeted and the correction mode.

Datachecker reports or fixes errors related to the data persistency.

The tool is intended for administrators and not for casual users.

Multiple user access on the checked database should be avoided. Depending upon the rules to apply and upon the mode used (check or repair), the Data Checker can be CPU-intensive. Database locks can be generated (depending of the RDBMS) disallowing data access to ENOVIA end users.

It may be launched periodically, once a week for example, or punctually when a data quality problem is suspected.

Before using the repair mode, perform a full and successful backup of the metadata.

Running the Data Checker

The Data Checker is a command line tool. There is no graphical user interface (GUI). You run the tool from the server runtime view.

On Windows

Go the installation folder:

INSTALL_PATH\server\win_b64\code\command

then run the following command with the appropriate command-line parameters:

VPMDataChecker.bat

On UNIX

Go the installation folder:

INSTALL_PATH/server/scripts

then run the following command with the appropriate command-line parameters:

VPMDataChecker.sh

Command-Line Parameters

Usage 1: check or check and repair in one shot:

VPMDataChecker -user User -password Password 
               [ -role Role ] -host Host [-v] [-tl [1|2|3]] 
               [ -rulefile [ FullRulefileName ] ]
               [ -outputfile [ OutputFileName ] ]
               [ -CustomReportFile [ CustoReportFileName ] ]
               [ -mode {Check | CheckAndRepair} ]

Usage 2: repair the entities listed in the input file:

 VPMDataChecker -user User -password Password 
               [ -role Role ] -host Host [-v] [-tl [1|2|3]]
               [ -rulefile [ FullRulefileName ] ]
               -inputfile InputFile

Usage 3: Customize a reporting file: each entry of InputFile reporting file is completed with a list of user-defined attributes as specified in CustomReportFileName. Customized reporting file is written in OutputFileName:

 VPMDataChecker -user User -password Password 
               [ -role Role ] -host Host [-v] [-tl [1|2|3]]
               -CustomReportFile [ CustoReportFileName]
               -inputfile InputFile
               -outputfile [ OutputFileName ]

Usage 4: Help

VPMDataChecker -h|-help

This is the full list of command-line parameters:

Parameter Description
-userUser name to connect to the database. It must be an administrator user with full access to all data.
-password Password of the user.
-role

Role of the user. If not defined, an administration role associated with this user will be used.

-host

Server URL. For example:

http://servername:8091/enovia

If the Data Checker is run locally on the server machine, the following value can be used instead:

localhost.

This value is recommended for very big databases and time consuming rules, in order not to rely on the application server, whose default settings may lead to “timeout exception”.

-outputfileReport file.

For usage 1 and 3, the default value is DataCheckerDetectedErrors.xml.

For usage 3, the option is mandatory.

-modeExecution mode. Can be Check or CheckAndRepair.

For Usage 1, the default mode is CheckAndRepair.

-inputfile

XML report file generated during a previous execution of the tool.

For Usage 2: this option automatically selects Repair execution mode, in which errors contained in this file are repaired.

For Usage 3: this option is used for report file conversion. A customized file can be used to modify customized attributes.

-rulefile

XML file describing the rules to be applied.

A list of error tags concatenated with commas is used to list the rules to apply.

Consult the Program Directory to get the syntax of the rule file. The default rule file name is DataChecker_Rulefile.xml.

-customreportfile

Name of the XML file describing the content of the detailed report file for each type to be detailed. Default file name: CustomReportFile.xml. This option is mandatory to activate report customization.

-v Verbose
-tl|TL Trace level. Get more traces from tl = 1 to tl = 3. Default value is 1.
-hDisplay this help

The data checker uses the rule file and applies the rules in two steps:

  • Check step: during this step, all rules are applied and a single report file is generated. The report file may have to be edited or checked before the repair step.
  • Repair step: using the previously generated report file, this step will correct (if possible) every error described in the report file.

Using the check and repair option means that the report file generated does not need to be edited before the repair step. It also means no validation of the errors found.

Rule File Syntax

The rule file is used to:

  • list the rules to apply in one shot
  • describe the rule type (MQL or JAVA)
  • describe every rule item.

Rule Tag Description

The following table lists the rule tags and describes them:

Tag Description
DC_RULESData checker main tag
RULES_LIST

List of rules to be applied. The name of a rule is a single word. A space is used as a separator between rules names.

The administrator may use the same rules file every day or week, but run the checker with a different set of rules. Only rules declared into the rule list are applied.

JAVA_RULE

Main tag of a JAVA rule type. Its definition includes 4 tags:

  • NAME: the name of the rule to apply.
  • TYPE: the data type to which the rule applies (including subtypes).
  • JAVA_CLASS: the path of the JAVA class used by this rule.
  • VAL: name of attributes or parameters with their values.
MQL_RULE

Tag used for non IRPC data:

  • NAME: the name of the rule.
  • TYPE: the upper data type into the data model on which the rule will apply.
  • ADMINOBJECTKIND: "TYPE", "RELATIONSHIP" are supported.
  • WHERECLAUSE: the where clause in mql format.
  • CORRECTION_MODE: allows deleting objects found in error or just one attribute value modification.
  • ATT_NAME: name of the attribute to modify (if necessary)
  • ATT_VALUE: new attribute value to apply.
IRPC_MQL_RULE

Tag used for IRPC data:

  • NAME: the name of the rule
  • TYPE: the upper data type in the data model on which the rule will apply.
  • WHERECLAUSE: the where clause in MQL format.
  • CORRECTION_MODE: allows deleting instances only, references only or both or one attribute value modification.
  • ATT_NAME: name of the attribute to modify (if necessary)
  • ATT_VALUE: new attribute value to apply.

Rules TAG more detailed

RULES_LIST purpose: the administrator may use the same rules file every day or week, but run the checker with a different set of rules. Only rules declared in the rule list are applied.

TYPE: this is the data type of the object on which rules will be applied. The rule will be also applied on all types which are children of TYPE.

WHERECLAUSE: the syntax of the where clause is the same as an MQL where clause. Double negation must be used to process data with a null or empty string.

CORRECTION_MODE: has the following possible values:

  • DELETE: delete business object or relationship in error
  • MODIFY_ATT_VALUE: the tags ATT_NAME and ATT_VALUE are then used to define an attribute and its value:
    • ATT_NAME: name of the attribute to modify.
    • ATT_VALUE: value of the attribute to modify.

For compatibility reasons older values are possible for IRPC_MQL_RULE:

  • DELETE_REFERENCES : just delete references (business objects)
  • DELETE_INSTANCES : just delete instances (relationships)
  • DELETE_ALL : delete references and instances.

NAME: the name of the rule to apply.

Rule Description

The following table describes the rules:

ErrorCorrection Rule Tag Name
PlmParameter objects not compliant with the composition Repair the following unwanted patterns:
  • Several ParameterAggregation connections (only one allowed, a PlmParameter can be aggregated by only one object).
  • Interfaces and/or attributes on the ParameterAggregation relationship.
  • Vault different from its parents.
  • Inconsistent Inherited Access (IA).
  • TreeOrder, Sequence Order and ParameterUsageDescription not uptodate on the type (ignored for Characteristics).
ERR_PlmParameter_PreComposition
Mandatory attribute (string/date/binary) not valuatedFill report file to valuate entities before repairing dataERR_ATTR_NOVALUE
Orphan instance applied on PLMInstanceDataChecker provides no correction for this error.ERR_ORPHAN_INST
Once instanciable orphan repDelete orphan repERR_AGGR_REP_NOINST
Orphan instance applied on PLMCoreRepInstanceDelete orphan rep instanceERR_ORPHAN_REPINST
Orphan portDelete portERR_ORPHAN_PORT
Orphan connectionDelete connectionERR_ORPHAN_CNX
Customer custom ruleCustomer choiceERR_MQL_CUSTOM_01
duplicate TNR foundDelete duplicated objects if possible.ERR_JAVA_DUPLI_TNR
Invalid V_VersionID The output file contains the correct VALUE of versionid for correction purpose DC_ERR_JAVA_VERSIONID_ATB_BASIC
SR with bad OutOfScope value The output file contains the correct VALUE of OutOfScope for correction purpose DC_ERR_JAVA_SR_OUTOFSCOPE
6WTag server rule: unicity of the couple {type RDFResource ; attribute RDFUri} repair uniquekey RDFUriUK DC_ERR_JAVA_RDFURIUK
Useless sets are left in the databaseDelete useless setsDC_ERR_JAVA_SET

ERR_ATTR_NOVALUE : searches for non-valuated attributes of type STRING declared as MANDATORY into the ENOVIA dictionary. The output file contains the VALUE tag that must be valuated to valuate those attributes while running the Data Checker in repair mode.

ERR_ORPHAN_INST: searche s for PLMInstances entities not connected TO or FROM another entity. The Data Checker DOES NOT repair this kind of problem.

ERR_AGGR_REP_NOINST : searches for representations that are declared as instanciated only once but that are not instantiated at all. Repair phase deletes those entities.

ERR_ORPHAN_REPINST: searches for PLMCoreRepInstance entities not connected TO or FROM another entity. During repair phase, the orphan rep instance is deleted.

ERR_ORPHAN_PORT: searches for orphan Ports and deletes them in repair mode.

ERR_ORPHAN_CNX: searches for orphan connections and deletes them in repair mode.

ERR_MQL_CUSTOM_01: rule may be customized by the administrator.

ERR_MQL_CUSTOM_02: rule may be created to check and repair data with customer's own rule.

ERR_JAVA_DUPLI_TNR: checks if duplicate TNR exist and lists them.

If duplicated items are found, it determines if those objects may be deleted. The output file contains a commented part: all commented objects have to be checked manually in order to keep or delete them. Note: ERR_JAVA_DUPLI_TNR has to be added to the rule list in order to be applied.

DC_ERR_JAVA_VERSIONID_ATB_BASIC: searches for PLMReferences in vault 'vplm' for which attribute[PLMReference.V_VersionID] != versioned. The output file contains the VALUE of versionid that must be assigned to PLMReference.V_VersionID when running the DataChecker in repair mode. If not repaired, inconsistent behaviors may be observed on objects after "advanced duplication", "new version from distant data" and "Designer Workspace" operations.

DC_ERR_JAVA_SR_OUTOFSCOPE : searches for Semantic Relations that do not have a correct value for OutOfScope. There should be as many OutOfScope status as path elements. The output file contains the VALUE of OutOfScope that must be assigned to the SemanticRelation when running the DataChecker in repair mode. If not repaired, inconsistent behaviors may be observed when loading links in CATIA.

DC_ERR_JAVA_RDFURIUK : for 3DEXPERIENCE 6WTags server. Unicity of the couple {type RDFResource ; attribute RDFUri} is enforced by a Unique Key. add uniquekey RDFUriUK type RDFResource attribute RDFUri.

DC_ERR_JAVA_SET: checks if useless sets exist and lists them. If useless sets are found, they are deleted when running the Data Checker in repair mode. For better performance, some queries need to be performed using MQL sets that are reused between several requests within the same session. If the client crashes, cleaning operations cannot be performed, leaving useless sets in the database. A set is considered useless when it has exceeded the time-to-live value.

Default Rule File

The default delivered rule file is: DataChecker_Rulefile.xml.

WARNING: do no cut and paste this sample in to generate your rule file! Some lines may be split and the generated file corrupted for the Data Checker. Every default rule is delivered with some comments. Please read them to understand the use of each rule and decide if you need to apply it.

<?xml version="1.0" encoding="utf-8" ?><DC_RULES>    
<RULES_LIST        
LIST="ERR_ATTR_NOVALUE ERR_ORPHAN_INST ERR_ORPHAN_PORT ERR_ORPHAN_CNX ERR_ORPHAN_REPINST ERR_AGGR_REP_NOINST DC_ERR_JAVA_VERSIONID_ATB_BASIC DC_ERR_JAVA_SR_OUTOFSCOPE DC_ERR_JAVA_RDFURIUK ERR_PGP_PMR_UNICITY DC_ERR_JAVA_SET">    
</RULES_LIST>
<!--
ERR_ATTR_NOVALUE : search non valuated attributes of type STRING declared as MANDATORY into the ENOVIA dictionary. 
The output file contains the VALUE tag that must be valuated in order to valuate those attributes while running the DataChecker in repair mode.-->    
<JAVA_RULE        
NAME="ERR_ATTR_NOVALUE"        
TYPE="*"        
JAVA_CLASS="com.matrixone.vplm.dataChecker.Rules.DCMandatoryStringAttrNotValuatedRule"        >    
</JAVA_RULE>

<!--
ERR_ORPHAN_INST: check all PLMInstances entities not connected TO or FROM another entity.
The DataChecker DOES NOT repair this kind of problem.


old WHERECLAUSE="(not(from != '')) OR (not(to != '' )) "
-->    
<IRPC_MQL_RULE        
NAME="ERR_ORPHAN_INST"        
TYPE="PLMInstance"        
WHERECLAUSE="(from ~~ FALSE) OR (to ~~ FALSE) "        
CORRECTION_MODE="DELETE"        
>    
</IRPC_MQL_RULE>
<!--
ERR_ORPHAN_REPINST : Check all PLMCoreRepInstance entities not connected TO or FROM another entity. 
On repair phase the orphan rep instance is deleted.  
old WHERECLAUSE="(not(from != '')) OR (not(to != '' )) "-->    
<IRPC_MQL_RULE        
NAME="ERR_ORPHAN_REPINST"        
TYPE="PLMCoreRepInstance"        
WHERECLAUSE="(from ~~ FALSE) OR (to ~~ FALSE) "        
CORRECTION_MODE="DELETE"        
>    
</IRPC_MQL_RULE>

<!--
ERR_ORPHAN_PORT: Check orphan Ports and delete them in repair mode.  
old WHERECLAUSE="not(to[VPLMrel/PLMPort/V_Owner].from.id != '')"  
WARNING: VPLMrel/PLMPort/V_Owner attribute not changed for new mapping-->    
<IRPC_MQL_RULE        
NAME="ERR_ORPHAN_PORT"        
TYPE="PLMPort"        
WHERECLAUSE=" to[VPLMrel/PLMPort/V_Owner]~~FALSE "        
CORRECTION_MODE="DELETE"        
>    
</IRPC_MQL_RULE>

<!--
ERR_ORPHAN_CNX: Check orphan connections and delete them in repair mode.
OLD WHERECLAUSE="not(to[VPLMrel/PLMConnection/V_Owner].id != '')"
WARNING: VPLMrel/PLMConnection/V_Owner attribute not changed for new mapping-->    
<IRPC_MQL_RULE        
NAME="ERR_ORPHAN_CNX"        
TYPE="PLMConnection"        
WHERECLAUSE=" to[VPLMrel/PLMConnection/V_Owner]~~FALSE "        
CORRECTION_MODE="DELETE"        
>    
</IRPC_MQL_RULE>

<!--
ERR_AGGR_REP_NOINST : Check all representation that are declared as instanciated only once but that are not instanciated at all.  
Repair phase delete those entities. 
OLD WHERECLAUSE="attribute[VPLMatt/PLMCoreRepReference/V_isOnceInstantiable] == true AND not(to[VPLMrel/PLMInstance].from.id != '')"-->    
<IRPC_MQL_RULE        
NAME="ERR_AGGR_REP_NOINST"        
TYPE="PLMCoreRepReference"        
WHERECLAUSE="attribute[PLMCoreRepReference.V_isOnceInstantiable]~~TRUE AND to[PLMInstance]~~FALSE "        
CORRECTION_MODE="DELETE"        
>    
</IRPC_MQL_RULE>

<!--
ERR_MQL_CUSTOM_01: rule may be customized by the administrator.
ERR_MQL_CUSTOM_01 should be added to the RULES_LIST tag in order to be executed
ERR_MQL_CUSTOM_02: rule may be created in order to check and repair data with customer s own rule.
ERR_MQL_CUSTOM_02 should be added to the RULES_LIST tag in order to be executed
OLD WHERECLAUSE="(attribute[VPLMatt/PLMEntity/PLM_ExternalID]~='Part_To_Check_01*') AND (owner == myowner)"-->    
<IRPC_MQL_RULE        
NAME="ERR_MQL_CUSTOM_01"        
TYPE="PLMCoreReference"        
WHERECLAUSE="(attribute[PLMEntity.PLM_ExternalID]~='Part_To_Check_01*') AND (owner == myowner)"        
CORRECTION_MODE="DELETE"        
>    
</IRPC_MQL_RULE>
<!--
ERR_MQL_CUSTOM_03: rule may be customized by the administrator.
ERR_MQL_CUSTOM_03 should be added to the RULES_LIST tag in order to be executed
ERR_MQL_CUSTOM_03: rule may be created in order to check and modify attribute / basic value.
OLD WHERECLAUSE="(attribute[VPLMatt/PLMEntity/PLM_ExternalID]~='ERR_MQL_CUSTOM_03*') AND (owner == myowner)"
OLD WHERECLAUSE=" attribute[VPLMatt/PLMEntity/PLM_ExternalID]~='ERR_MQL_CUSTOM_06*'  "
-->    
<IRPC_MQL_RULE        
NAME="ERR_MQL_CUSTOM_03"        
TYPE="PLMCoreReference"        
WHERECLAUSE="(attribute[PLMEntity.PLM_ExternalID]~='
ERR_MQL_CUSTOM_03*') AND (owner == myowner)"        
CORRECTION_MODE="MODIFY_ATT_VALUE"        
ATT_NAME="PLMEntity.description"        
ATT_VALUE="Not Defined"
>    
</IRPC_MQL_RULE>    
<IRPC_MQL_RULE        
NAME="ERR_MQL_CUSTOM_06"        
TYPE="PLMInstance"        
WHERECLAUSE=" attribute[PLMInstance.PLM_ExternalID]~='
ERR_MQL_CUSTOM_06*'  "        
CORRECTION_MODE="MODIFY_ATT_VALUE"        
ATT_NAME="PLMInstance.V_Name"        
ATT_VALUE="Same V_Name for those instances"
>    
</IRPC_MQL_RULE>

<!--  
ERR_JAVA_DUPLI_TNR This rule checks if duplicate TNR exist and list them.
If duplicated items are found, it looks if those objects may be deleted.
The output file contains a commented part: all commented objects have to be checked manually in order to keep or delete them.
The not commented objects may be deleted. A manual check is recommended prior to run the Repair phase.
ERR_JAVA_DUPLI_TNR has to be added to the rule list in order to be applied.
-->   
<JAVA_RULE    
NAME="ERR_JAVA_DUPLI_TNR"    
TYPE="PLMEntity"    
JAVA_CLASS="com.matrixone.vplm.dataChecker.Rules.DC_ERR_JAVA_DUPLI_TNR"  
>  
</JAVA_RULE>

<!--     
DC_ERR_JAVA_VERSIONID_ATB_BASIC : search PLMReferences in vault 'vplm' for which attribute[PLMReference.V_VersionID] != versionid    
The output file contains the VALUE of versionid that must be assigned to PLMReference.V_VersionID when running the DataChecker in repair mode.    
If not repaired, inconsistent behaviors may be observed on objects after "advanced duplication", "new version from distant data" and "Designer Workspace" operations    
Rule valid from V6R2013.
-->    
<JAVA_RULE        
NAME="DC_ERR_JAVA_VERSIONID_ATB_BASIC"        
TYPE="PLMReference"        
JAVA_CLASS="com.matrixone.vplm.dataChecker.Rules.DC_ERR_JAVA_VERSIONID_ATB_BASIC"        
>    
</JAVA_RULE>

<!--     
DC_ERR_JAVA_SR_OUTOFSCOPE : search for Semantic Relations that do not have a correct value for OutOfScope.
There should be as many OutOfScope status as path elements.
The output file contains the VALUE of OutOfScope that must be assigned to the SemanticRelation when running the DataChecker in repair mode.    
If not repaired, inconsistent behaviors may be observed when loading links in CATIA    
Rule valid from V6R2013x.
-->    
<JAVA_RULE        
NAME="DC_ERR_JAVA_SR_OUTOFSCOPE"        
TYPE="PLMReference"        
JAVA_CLASS="com.matrixone.vplm.dataChecker.Rules.DC_ERR_JAVA_SR_OUTOFSCOPE"        
>    
</JAVA_RULE>

<!--    
3DExp 6W Tag : unicity of the couple {type RDFResource ; attribute RDFUri} is enforced by a Unique Key.         
add uniquekey RDFUriUK type RDFResource attribute RDFUri         
cf. i3DXResources\CNext\reffiles\DBMS\ddl\RDFDataModel.mql
                
Check = print uniquekey RDFUriUK select enabled dump;  // Should return TRUE        
Repair = enable uniquekey RDFUriUK 
               
Validity: this rule is valid since V6R2015x.        
Frequency: can be applied every day: its not time consuming.

-->    
<JAVA_RULE        
NAME="DC_ERR_JAVA_RDFURIUK"        
TYPE="RDFResource"        
JAVA_CLASS="com.matrixone.vplm.dataChecker.Rules.DC_ERR_JAVA_RDFURIUK"        
>    
</JAVA_RULE>

<!--        
This rule corrects unicity issues in PGP (Product Graphical Properties) and PMR (Positional Mechanical Reference) models. 
These issues were caused by a bug which is now corrected.        
Product references and instances carry PGP and PMR unicity attributes which can be incorrectly valued.        
Check  = checks these unicity attributes are correctly valued         
Repair = set these attributes to FALSE if no PMR or PGP model is associated to the Reference or Instance        
Validity : this rule is valid since V6R2015x.        
Frequency : can be time consuming –should be run once (since the bug is corrected), or once in a while (since other bugs may still remain...)
-->    
<JAVA_RULE        
NAME="ERR_PGP_PMR_UNICITY"        
TYPE="*"        
JAVA_CLASS="com.dassault_systemes.vplm.data_cleaning_rules.DCPGPPMRUnicityAttrRule"        
>

<!--
SET : For better performances, some queries need to be performed using 
MQL sets that are re-used between several requests within the same session. 
If the client crashes, cleaning operations cannot be performed, leaving useless sets in the database.
	
Check  = list set user * autoset* select name user originated property[TTL].value dump;  // check if SET creation is older than (Date + TTL)
Repair = delete set SETNAME user [UserName]; // Delete all SET created before (Date + TTL)
		
Validity: this rule is valid since V6R2015x.
Frequency: can be applied every day: its not time consuming.
-->
<JAVA_RULE
NAME="DC_ERR_JAVA_SET"
TYPE="*"
JAVA_CLASS="com.matrixone.vplm.dataChecker.Rules.DC_ERR_JAVA_SET"
>
    
</JAVA_RULE>  
</DC_RULES>

Rule File Customization

The purpose is to be able to activate/deactivate one or several rules in the same rule file. Even if a rule has been defined into the rule file, the RULE LIST tag must contain the rule name to be applied by the data checker.

MQL rules may be easily modified or created by the administrator. Start with this rule set:

<?xml version="1.0" encoding="UTF-8" ?>
<DC_RULES>
  <RULES_LIST    LIST="ERR_MQL_CUSTOM_01 ERR_MQL_CUSTOM_02 ERR_MQL_CUSTOM_03"  > </RULES_LIST>  
  <IRPC_MQL_RULE
    NAME="ERR_MQL_CUSTOM_01"
    TYPE="PLMProductDS"
    WHERECLAUSE="attribute[PLMEntity.PLM_ExternalID]~='Part_ERR_MQL_CUSTOM_01*'  "
    CORRECTION_MODE="DELETE"
  >
  </IRPC_MQL_RULE>
  <MQL_RULE
      NAME="ERR_MQL_CUSTOM_01"
      TYPE="CBPODTClass"
      ADMINOBJECTKIND="TYPE"
      WHERECLAUSE="(attribute[CBPODTAttString2]~='VPLMQLENGINE_DC_ER_MQL_CHECK_*') AND (attribute[CBPODTAttInteger] != 999) "
      CORRECTION_MODE="MODIFY_ATT_VALUE"
      ATT_NAME="CBPODTAttInteger"
      ATT_VALUE="999"
  >
  </MQL_RULE>
  <MQL_RULE
      NAME="ERR_MQL_CUSTOM_03"
      TYPE="CBPODTRelationClass"
      ADMINOBJECTKIND="RELATIONSHIP"
      WHERECLAUSE="(attribute[CBPODTAttString2]~='VPLMQLENGINE_DC_ER_MQL_CHECK_*') AND (attribute[CBPODTAttInteger] != 999) "
      CORRECTION_MODE="DELETE"
  >
  </MQL_RULE>
</DC_RULES>

It is possible to rename the error name by changing the two end characters with other numbers:

  • ERR_MQL_CUSTOM_02
  • ERR_MQL_CUSTOM_03

Do not forget to add this new name into the rule list " <RULES_LIST LIST= " at the top of the rule file.

TYPE customization: it is possible to change the type of the objects concerned by the error check. A good knowledge of the data types is needed. The data checker will look for all objects of type "TYPE=" and their children.

WHERECLAUSE customization: a new where clause may be entered using MQL syntax. It must be coherent to the TYPE defined.

For CORRECTION_MODE, see the detailed description of rules tags.

For JAVA rules, the administrator can only modify the TYPE and VAL tags.

TYPE customization: while changing the default TYPE value, ONLY sub-types of the default TYPE value is supported. A good knowledge of the data types is needed. The Data Checker will look for all objects of type "TYPE=" and their children.

VAL customization: this should be modified ONLY if specified/documented.

Custom Report File Use

The standard data checker output file may be enhanced in order to get more information on reported objects. Only TYPE and RELATIONSHIP entities support customization. The customization of the output file is enabled while using the option: -CustomReportFile.

With this file, the administrator is able to provide attributes to be added in customized report file. Those attributes will be displayed with their values into the data checker output file.

The -CustomReportFile option may be used in order to add knowledge into an already existing output file.

The custom report file is an XML file describing the data types and the attributes of those types or sub-types that must be added to the output file.

Custom Report File TAG definition

<CUSTOM_REPORT>: Custom report file main tag

  • <TYPE:
    • NAME: The name of a business object type to be customized for output.>
    • <ATTRIBUTE: attribute of type <TYPE>

      NAME: the name of the attribute and its value.

  • </TYPE>: end of a TYPE customization.
  • <REL: The name of a relationship type to be customized for output.>
    • <ATTRIBUTE: attribute of relationship <REL>

      NAME: the name of the attribute and its value.

  • </REL>: end of a relationship customization.

</CUSTOM_REPORT>: end of Custom report file definition.

Custom Report File Sample

CUSTOM_REPORT>

<REL NAME="CBPODTRelationClass ">
	<ATTRIBUTE NAME="attribute[.CBPODTAttString]" />
	<ATTRIBUTE NAME="attribute[.CBPODTAttString2]" />
  	<ATTRIBUTE NAME="attribute[.CBPODTAttReal]" />
	<ATTRIBUTE NAME="attribute[.CBPODTAttDate]" />
	<ATTRIBUTE NAME="attribute[.CBPODTAttInteger]" />
	<ATTRIBUTE NAME="attribute[.CBPODTAttBoolean]" />
	<ATTRIBUTE NAME="from" />
	<ATTRIBUTE NAME="to" />
	<ATTRIBUTE NAME="isfrozen" />
	<ATTRIBUTE NAME="modified" />
	<ATTRIBUTE NAME="from" />
	<ATTRIBUTE NAME="to" />
	<ATTRIBUTE NAME="isfrozen" />
	<ATTRIBUTE NAME="modified" />
</REL>
<TYPE NAME="CBPODTClass">
	<ATTRIBUTE NAME="name" />
	<ATTRIBUTE NAME="description" />
	<ATTRIBUTE NAME="originated" />
	<ATTRIBUTE NAME="attribute[.CBPODTAttString]" />
	<ATTRIBUTE NAME="attribute[.CBPODTAttString2]" />
	<ATTRIBUTE NAME="attribute[.CBPODTAttReal]" />
	<ATTRIBUTE NAME="attribute[.CBPODTAttInteger]" />
	<ATTRIBUTE NAME="current" />
	<ATTRIBUTE NAME="state" />
	<ATTRIBUTE NAME="lattice " />
</TYPE>
</CUSTOM_REPORT>

Customized Output File Sample

The data checker produces the output report file, defined with the -outputfile option. This option must be valuated with the full path name of the report file.

Here is a sample of customized data generated by the data checker:

<?xml version="1.0" encoding="UTF-8" ?>
<ERROR_LIST>
<ERROR
    NAME="ERR_MQL_CUSTOM_01"
    PHYSICALID="293AB55634300000CD64A853C7830600"
    ADMINOBJECTKIND="BO"
    TYPE="CBPODTClass"
    owner="uxodtitp"
    organization="MyCompany"
    project="Engineering"
    >
        <CUSTOM>
                <ATTRIBUTE NAME="name" VALUE="VPLMQLENGINE_DC_ER_MQL_CHECK_001__oIuVXd2Qus3g3+++CM+-h" />
                <ATTRIBUTE NAME="description" VALUE="" />
                <ATTRIBUTE NAME="originated" VALUE="6/23/2014 7:33:01 PM" />
                <ATTRIBUTE NAME="attribute[.CBPODTAttString]" VALUE="12121212" />
                <ATTRIBUTE NAME="attribute[.CBPODTAttString2]" VALUE="VPLMQLENGINE_DC_ER_MQL_CHECK__oIuVXd3+++CM+-h" />
                <ATTRIBUTE NAME="attribute[.CBPODTAttReal]" VALUE="2.2" />
                <ATTRIBUTE NAME="attribute[.CBPODTAttInteger]" VALUE="1" />
                <ATTRIBUTE NAME="current" VALUE="IN_WORK" />
                <ATTRIBUTE NAME="state" VALUE="IN_WORK" />
                <ATTRIBUTE NAME="state" VALUE="WAIT_APP" />
                <ATTRIBUTE NAME="state" VALUE="SHARED" />
                <ATTRIBUTE NAME="state" VALUE="PRIVATE" />
                <ATTRIBUTE NAME="lattice" VALUE="vplm" />
        </CUSTOM>
    </ERROR>

Output File Tag Description

The xml report file generated during the check phase contains the description of the entities with error. Only the VALUE TAG of non-customized attributes can be edited, to give a value to the attributes of the errors found.

Tag NameTag Description Can be edited for Repair phase?
ERROR NAMEName of the applied rule NO
PLMIDPLMID of the entityNO
GROUP NAME Beginning of a group and its nameNO
OBJECTID Physicalid or M1 id of the entityNO
ADMINOBJECTKINDUsed with OBJECTID NO
VAL NAMEAttribute name and its value (for an ERROR or a GROUP) YES
TYPEData typeNO
V_OwnerOwner of the entityNO
V_ProjectProjectNO
V_OrganizationOrganizationNO
PLM_ExternalIDVPLM name of the entityNO
V_VersionVersion of the entityNO
ExpectedValueExpected valueNO
ATTRIBUTE NAMEAttribute nameNO
VALUEAttribute valueYES
RANK_VALUERank value and attribute valueYES

Output File Sample

Used in check mode, with no customization, the Data Checker generates an XML output file (error file) like this:

<?xml version="1.0" encoding="UTF-8" ?>
<ERROR_LIST>
 <GROUP   NAME="ERR_JAVA_CUSTOM_02">
   <ERROR   NAME="ERR_JAVA_CUSTOM_02"
      TYPE="CBPODTClass"
      OBJECTID="1447B556022F00003309C55310EB0200"
      ADMINOBJECTKIND="TYPE">
      <VAL NAME="id">64704.27894.34048.50162</VAL>
   </ERROR>
    <ERROR   NAME="ERR_JAVA_CUSTOM_02"
      TYPE="CBPODTClass"
      OBJECTID="1447B556022F0000F718C553229A0B00"
      ADMINOBJECTKIND="TYPE">
      <VAL NAME="id">64704.27894.53504.33246</VAL>
   </ERROR>
    <ERROR   NAME="ERR_JAVA_CUSTOM_02"
      TYPE="CBPODTClass"
      OBJECTID="1447B556022F00003309C553FAC30400"
      ADMINOBJECTKIND="TYPE">
      <VAL NAME="id">64704.27894.34048.62124</VAL>
   </ERROR>
 </GROUP>
 <GROUP   NAME="ERR_JAVA_CUSTOM_22">
    <ERROR   NAME="ERR_JAVA_CUSTOM_22"
      TYPE="CBPODTRelationClass"
      OBJECTID="1447B556022F00003309C55389820600"
      ADMINOBJECTKIND="RELATIONSHIP">
      <VAL NAME="id">64704.27894.29952.32474</VAL>
   </ERROR>
    <ERROR   NAME="ERR_JAVA_CUSTOM_22"
      TYPE="CBPODTRelationClass"
      OBJECTID="1447B556022F00003309C553B9770700"
      ADMINOBJECTKIND="RELATIONSHIP">
      <VAL NAME="id">64704.27894.29952.10362</VAL>
   </ERROR>
    <ERROR   NAME="ERR_JAVA_CUSTOM_22"
      TYPE="CBPODTRelationClass"
      OBJECTID="1447B556022F00003309C5536D1B0800"
      ADMINOBJECTKIND="RELATIONSHIP">
      <VAL NAME="id">64704.27894.29952.10813</VAL>
   </ERROR>
 </GROUP>
 <GROUP   NAME="ERR_JAVA_ODT_01">
   <VAL NAME="physicalid">1447B556022F0000BD0EC553E7AD0300</VAL>
   <VAL NAME="majorid">1447B556022F0000BD0EC553E7AD0300</VAL>
   <VAL NAME="logicalid">1447B556022F0000BD0EC553E8AD0300</VAL>
    <ERROR   NAME="ERR_JAVA_ODT_01"
      TYPE="ENOSAM2_Representation"
      PLMID="PLMIDv2(1447B556022F0000BD0EC553E7AD0300,1447B556022F0000BD0EC553E8AD0300,1447B556022F0000BD0EC553E7AD0300,ENOSAM2/ENOSAM2_Representation,PLM1)">
      <VAL NAME="owner">uxodtitp</VAL>
      <VAL NAME="physicalid">1447B556022F0000BD0EC553E7AD0300</VAL>
      <VAL NAME="name">CuiCui_oIwIBeoQus3g3+++Ox+45_1A0</VAL>
      <VAL NAME="id">44000.36759.6912.39183</VAL>
   </ERROR>
    <ERROR   NAME="ERR_JAVA_ODT_71"
      TYPE="ENOSAM2_Representation"
      PLMID="PLMIDv2(1447B556022F0000BD0EC5539F500600,1447B556022F0000BD0EC553A0500600,1447B556022F0000BD0EC5539F500600,ENOSAM2/ENOSAM2_Representation,PLM1)">
      <VAL NAME="owner">uxodtitp</VAL>
      <VAL NAME="physicalid">1447B556022F0000BD0EC5539F500600</VAL>
      <VAL NAME="name">CuiCui_oIwIBeoQus3g3+++Ox+45_1A1</VAL>
      <VAL NAME="id">44000.36759.35584.10930</VAL>
   </ERROR>
    <ERROR   NAME="ERR_JAVA_ODT_01"
      TYPE="ENOSAM2_Representation"
      PLMID="PLMIDv2(1447B556022F0000BD0EC55313920C00,1447B556022F0000BD0EC55314920C00,1447B556022F0000BD0EC55313920C00,ENOSAM2/ENOSAM2_Representation,PLM1)">
      <VAL NAME="owner">uxodtitp</VAL>
      <VAL NAME="physicalid">1447B556022F0000BD0EC55313920C00</VAL>
      <VAL NAME="name">CuiCui_oIwIBeoQus3g3+++Ox+45_1A10</VAL>
      <VAL NAME="id">44000.36759.19200.51883</VAL>
   </ERROR>
    <ERROR   NAME="ERR_JAVA_ODT_71"
      TYPE="ENOSAM2_Representation"
      PLMID="PLMIDv2(1447B556022F0000BD0EC5531C440D00,1447B556022F0000BD0EC5531D440D00,1447B556022F0000BD0EC5531C440D00,ENOSAM2/ENOSAM2_Representation,PLM1)">
      <VAL NAME="owner">uxodtitp</VAL>
      <VAL NAME="physicalid">1447B556022F0000BD0EC5531C440D00</VAL>
      <VAL NAME="name">CuiCui_oIwIBeoQus3g3+++Ox+45_1A11</VAL>
      <VAL NAME="id">44000.36759.19200.23482</VAL>
   </ERROR>
 </GROUP>
</ERROR_LIST>