What if my Enterprise's private processes call for an entirely new data model? For example, perhaps we want to model an "Office" inside a Site. EPTs do not allow you to create entirely new Models in the same sense that a Platform Module does. To do so would require database schema changes, server restarts, and other disruptive activities. Nevertheless, some business processes simply cannot be modeled without additional data. So how to proceed?
To meet the requirement of Enterprise-specific data modeling, the EPT allows developers to define their own "Enterprise Objects". These are analogous to Models that you would create in a Platform Module. Just like a Model, an Enterprise Object has fields of various types, has natural keys, and has views, actions, workflows, and state machines. However, it achieves all of this without requiring database schema changes and can be deployed dynamically along with the EPT, without a server restart.
Behind-the-scenes, all Enterprise Objects are stored in the EnterpriseObject model from the core Platform. The natural key of EnterpriseObject is as follows:
ModelName - Holds the custom model name created in the EPT for EnterpriseObject model. For example, EPT.SampleEnterprise.Office.
ObjectKey - Holds a copy of the EDF values which are part of NK in a tilde separated format. Each EnterpriseObject will have a logical natural key that is specified in studio - these attribute values will be concatenated and stored automatically in the ObjectKey field without developer intervention.
Enterprise - Refers to the Enterprise who owns the object.
All EnterpriseObjects are stored in the database table "ENT_OBJ". Attributes of EnterpriseObjects are stored as EntObjAttributes, using table "ENT_OBJ_ATTR".