Technical Blog Post
Abstract
MDM Workbench model editor validation
Body
To avoid errors being produced in code generated from module models, the workbench validates the model contents. This post summarises the naming constraints that must be observed in the model to avoid validation errors. This is not intended to be a complete list of constraints but if there are any others that you think are worth being aware of up front, please leave a comment.
Entity
Name:
The entity name must,
- be composed of the letters a-z, numbers 0-9, the underscore character and the dollar symbol;
- be a maximum of 36 characters;
- start with a letter;
- be a valid java identifier (see notes);
The entity name must not,
- be any of the following reserved words-
- Component
- Entity
Database table name:
The database table name must,
- be a maximum of 48 characters;
- be a valid SQL identifier (see notes);
Entity attribute
Name:
The entity attribute name must,
- be composed of the letters a-z, numbers 0-9, the underscore character and the dollar symbol;
- be a maximum of 50 characters;
- start with a letter;
- be a valid java identifier (see notes);
The entity attribute name must not,
- be any of the following reserved words-
- ObjectReferenceId
- Control
- Status
- ObjectId
- IdPk
- History
- LastUpdate
- NullFields
- end with any of the following reserved names-
- LastUpdateTxId
- LastUpdateUser
- LastUpdateDate
- HistActionCode
- HistCreatedBy
- HistCreateDate
- HistEndDate
- HistoryIdPK
Entity field name:
The entity field name must,
- be composed of the letters a-z, numbers 0-9, the underscore character and the dollar symbol;
- start with a letter;
- be a valid java identifier (see notes);
The entity field name must not,
- be any of the following reserved words-
- LastUpdateTxId
- LastUpdateUser
- LastUpdateDt
- HistActionCode
- HistCreatedBy
- HistCreateDt
- HistEndDt
- HistoryIdPK
- IdPk
- OldLastUpdateDt
Database field name:
The database field name must,- be a maximum of 28 characters;
- be a valid SQL identifier (see notes);
The database field name must not,
- be any of the following reserved words-
- last_update_dt
- last_update_tx_id
- last_update_user
Code Table
Name:
The code table name must,
- be composed of the letters a-z, numbers 0-9, the underscore character and the dollar symbol;
- be a maximum of 36 characters;
- start with a letter;
- be a valid java identifier (see notes);
The entity name must not,
- be any of the following reserved words-
- Component
- Entity
Database table name:
The database table name must;
- be a maximum of 48 characters;
- be a valid SQL identifier (see notes)
Code Table Attribute
Name:
The code table attribute name must,
- be composed of the letters a-z, numbers 0-9, the underscore character and the dollar symbol;
- be a maximum of 50 characters;
- start with a letter;
- be a valid java identifier (see notes);
The code table attribute name must not,
- be any of the following reserved words-
- ObjectReferenceId
- Control
- Status
- ObjectId
- IdPk
- History
- LastUpdate
- NullFields
- end with any of the following reserved names-
- LastUpdateTxId
- LastUpdateUser
- LastUpdateDate
- HistActionCode
- HistCreatedBy
- HistCreateDate
- HistEndDate
- HistoryIdPK
Database field name:
The database field name must,
- be a maximum of 28 characters;
- be a valid SQL identifier (see notes);
The database field name must not,
- be any of the following reserved words-
- description
- expiry_dt
- lang_tp_cd
- last_update_dt
- last_update_tx_id
- last_update_user
Transient Data Object (TDO)
Name:
The TDO name must,
- be composed of the letters a-z, numbers 0-9, the underscore character and the dollar symbol;
- be a maximum of 36 characters;
- start with a letter;
- be a valid java identifier (see notes);
The TDO name must not,
- be any of the following reserved words-
- Component
- Entity
Transient Data Object attribute
Name:
The TDO attribute name must,
- be composed of the letters a-z, numbers 0-9, the underscore character and the dollar symbol;
- be a maximum of 50 characters;
- start with a letter;
- be a valid java identifier (see notes);
The TDO attribute name must not,
- be any of the following reserved words-
- ObjectReferenceId
- Control
- Status
- ObjectId
- IdPk
- History
- LastUpdate
- NullFields
- end with any of the following reserved names-
- LastUpdateTxId
- LastUpdateUser
- LastUpdateDate
- HistActionCode
- HistCreatedBy
- HistCreateDate
- HistEndDate
- HistoryIdPK
Transaction
Name:
The transaction name must,
- be composed of the letters a-z, numbers 0-9, the underscore character and the dollar symbol;
- be a maximum of 50 characters;
- start with a letter;
- be a valid java identifier (see notes);
Folder
Name:
The folder name must,
- be composed of the letters a-z, numbers 0-9, the underscore character and the dollar symbol;
- start with a letter;
- be a valid java identifier (see notes);
The folder name must not,
- be any of the following reserved words-
- Component
- Entity
Application
Hub base name:
The hub base name must,
- be composed of the letters a-z, numbers 0-9, the underscore character and the dollar symbol;
- be a maximum of 36 characters;
- be a valid java identifier (see notes);
The hub base name must not,
- start with a number;
- be any of the following reserved words-
- TCRM
- DWLCommon
- DWLAdmin
- CompositeAdminTransaction
- CompositeTransaction
Notes
General:
- Reserved name checks are not case sensitive
Java identifiers:
Details on valid Java identifiers can be found in sections 3.8 and 3.9 of the Java language specification however, due to the other naming constraints imposed in the model, the only extra restriction is the use of any of the following reserved words-
- abstract, assert, boolean, break, byte, case, catch, char, class, const, continue, default, do, double, else, enum, extends, final, finally, float, for, goto, if, implements, import, instanceof, int, interface, long, native, new, package, private, protected, public, return, short, static, strictfp, super, switch, synchronized, this, throw, throws, transient, try, void, volatile, while, true, false, null
SQL identifiers:
The name must not,
- start with a digit or the underscore character;
- be any of the following reserved words-
- ADD, ALL, ALTER, AND, ANY, AS, ASC, AUTOINCREMENT, AVA, BETWEEN, BINARY, BIT, BOOLEAN, BY, BYTE, CHAR, CHARACTER, COLUMN, CONSTRAINT, COUNT, COUNTER, CREATE, CURRENCY, DATABASE, DATE, DATETIME, DELETE, DESC, DISALLOW, DISTINCT, DISTINCTROW, DOUBLE, DROP, EXISTS, FROM, FLOAT, FLOAT4, FLOAT8, FOREIGN, GENERAL, GROUP, GUID, HAVING, INNER, INSERT, IGNORE, IMP, IN, INDEX, INT, INTEGER, INTEGER1, INTEGER2, INTEGER4, INTO, IS, JOIN, KEY, LEFT, LEVEL, LIKE, LOGICAL, LONG, LONGBINARY, LONGTEXT, MAX, MEMO, MIN, MOD, MONEY, NOT, NULL, NUMBER, NUMERIC, OLEOBJECT, PIVOT, ON, OPTION, ORDER, OUTER, OWNERACCESS, PARAMETERS, PERCENT, PRIMARY, REAL, REFERENCES, RIGHT, SELECT, SET, SHORT, SINGLE, SMALLINT, SOME, STDEV, STDEVP, STRING, SUM, TABLE, TABLEID, TEXT, TIME, TIMESTAMP, TOP, TRANSFORM, UNION, UNIQUE, UPDATE, VALUE, VALUES, VAR, VARBINARY, VARCHAR, VARP, WHERE, WITH, YEAR, YESNO
UID
ibm11142458