The Data Checker
is a command line tool. There is no graphical user interface (GUI). You run the tool from the server runtime view.
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:
Error | Correction |
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 valuated | Fill report file to valuate entities before repairing data | ERR_ATTR_NOVALUE |
Orphan instance applied on PLMInstance | DataChecker provides no correction for this error. | ERR_ORPHAN_INST |
Once instanciable orphan rep | Delete orphan rep | ERR_AGGR_REP_NOINST |
Orphan instance applied on PLMCoreRepInstance | Delete orphan rep instance | ERR_ORPHAN_REPINST |
Orphan port | Delete port | ERR_ORPHAN_PORT |
Orphan connection | Delete connection | ERR_ORPHAN_CNX |
Customer custom rule | Customer choice | ERR_MQL_CUSTOM_01 |
duplicate TNR found | Delete 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 database | Delete useless sets | DC_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.
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:
- </TYPE>: end of a TYPE customization.
- <REL:
The name of a relationship type to be customized for
output.>
- </REL>: end of a relationship
customization.
</CUSTOM_REPORT>: end of Custom report file
definition.
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 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>