EDMtableInstance
The EDMtableInstance concept is the functionality to define persistent and volatile instances (objects) of type EDMtableInstance. An EDMtableInstance can be created in any EDMdataModel in the EDMscratchModel and in the EDMvolatileModel. Only an EDMvmProcess can create EDMtableInstances in the EDMVolatileModel. Any EDMclient and EDMvmProcess can create EDMtableInstances in any EDMdataModel and in the EDMscratchModel. An EDMtableInstance consists of some properties, rows and columns. The property names and the access from the get/set property methods:
Property Name | Property Type | Explanation |
Name | STRING | Optional, same syntax as an Express identifier but case sensitive; Read & Write access |
Description | STRING | Optional, any string; Read & Write access. |
Column_Name | STRING | Same syntax as an Express identifier. Case insensitive. Read & Write access |
Column_Datatype | INTEGER (SdaiPrimitiveType) : sdaiINTEGER, sdaiSTRING, ....edmiGENERIC | Read Only access |
Column_Domain | INSTANCE | Optional; Read Only access |
Creation_Date | INTEGER (_TIMESTAMP) | Read Only access |
Last_Update_Date | INTEGER (_DATETIME) | Read & Write access |
Rows | INTEGER | Read Only access |
Columns | INTEGER | Read Only access |
Columns_Name | "BUFFER OF STRINGS" in EDMI or LIST OF STRING in EDMxpx | Read Only access |
Columns_Datatype | BUFFER OF INTEGER (SdaiPrimitiveType)" in EDMI. LIST OF INTEGER (SdaiPrimitiveType) in EDMxpx | Read only access |
Columns_Domain | BUFFER OF INSTANCE" in EDMI; LIST OF INSTANCE in EDMxpx | Read Only access. |
EDMtableInstance property names are case insensitive. The numbering of Rows and Columns in an EDMtableInstance start with the number one, not zero. This is valid in all EDMIoperationsand in all EDMexpressX operations. As the ColumnName plays a similar role as an attribute name, all columns must have a name. Column names can optionally be given in the function that creates the actual EDMtableInstance , or it can be given in a "setTableInstanceProperty()" operation. All column names in an EDMtableInstance must be unique. Column names are case insensitive. Default column names are Column1, Column2, Column3, etc. When the order of columns in an EDMtableInstance is changed by "createTableInstanceColumn and deleteTableInstanceColumn" operations, the default names of columns will be changed according to the columns new number. Columns with "given names" will keep their original names. Unset cells in an EDMtableInstance will have the value sdaiINDETERMINATE. When a cell in an EDMtgableInstance is populated, a check for assignment compatibility between the actual column datatype and the actual data value is performed.
To obtain a stronger check, a "Columns_Domain" property can be defined, to have a assignment compatibility between the actual columns "Columns_Domain" and the actual data value to populate the cell with an EDMtableInstance is an instance of type AN_INSTANCE_TYPE, but not all instances of this type is an EDMtableInstance. The entity named AN_INSTANCE_TYPE is an empty entity, i.e., no attributes or constraints are declared in this entity. Hence the normal functions like sdaiGetInstanceType() cannot be used to determine if an instance is an EDMtableInstance or not. The EDMI function edmiIsTableInstance() and edmiRemoteIsTableeInstance(), and the EDMxpx function xpfIsTableInstance() have to be used for such decisions.
An EDMtableInstance behave as an USER_DEFINED_INSTANCE in an EDMmodel, i.e., it is not found in the "Model_Contents.Instances" or in an Entity_Extent in the "Model_Contents.Populated_Folders". There is an special "independent" Entity_Extent for EDMtableInstances in an EDMtableModel. Any instances, including EDMtableInstances, in an EDMmodel can be referenced by an EDMtableInstance. However, no EDMtableInstances can play any role in an ordinary Entity Instance. An EDMtableInstance can reference any other EDMtableInstances. The EDMsupervisor is updated to fully handle EDMtableInstances for EDMstandAlone, EDMfatClient, and EDMremoteClient operations. Exceptions are the commands ModifyInstance and CreateInstance. These are not applicable on EDMtableInstances. The ShowInstance/DeleteInstance commands will display the EDMtableInstance with the "properties as attributes". Clicking on the Arrow in front of the "Rows" property, the rows and columns will be displayed in the EDMsupervisor standard table format, i.e., the table used in SelectInstances and ExecuteQuery commands. EDMtableInstances are mapped to STEP file in the format of an User_Defined_Entity, hence this is fully compliant to the ISO 10303-21 specification. The options EXCLUDE_USER_DEFINED_ENTITIES and ONLY_USER_DEFINED_ENTITIES in the EDMstepFileFactory are valid for EDMtableInstances. There is currently no XML binding/mapping of EDMtableInstances.
- An EDMtableInstance column name can be any combination of alphanumeric characters, "_" (underscore), "-" (hyphen) and " " (white space). All of these characters, except white space, can be the first character in an EDMtableInstance column name.
- The maximum number of columns in an EDMtableInstance is 99.
- Volatile EDMtableInstances cannot be returned to the client from an EDMquery. Use instead EDMtableInstances created in the EDMscratchModel.
Rows, Columns and Cells
The numbering of Rows and Columns in an EDMtableInstance start with the number one, not zero. This is valid in all EDMIoperations and in all EDMexpressX operations.
As the ColumnName plays a similar role as an attribute name, all columns must have a name. Column names can optionally be given in the function that creates the actual EDMtableInstance, or it can be given in a "setTableInstanceProperty()" operation.
All column names in an EDMtableInstance must be unique. Column names are case insensitive. Default column names are Column1, Column2, Column3, etc. When the order of columns in an EDMtableInstance is changed by "createTableInstanceColumn/deleteTableInstanceColumn" operations, the default names of columns will be changed according to the columns new number. Columns with "given names" will keep their original names.
Unset cells in an EDMtableInstance will have the value sdaiINDETERMINATE.
When a cell in an EDMtgableInstance is populated, a check for assignment compatibility between the actual column datatype and the actual data value is performed. To optain a stroger check, a "Columns_Domain" property can be defined, ie.e, to have a assignment compatibility between the actual columns "Columns_Domain" and the actual data value to populate the cell with.
Behaviour in models
An EDMtableInstance is an instance of type AN_INSTANCE_TYPE, but not all instances of this type is an EDMtableInstance. The entity named AN_INSTANCE_TYPE is an empty entity, i.e., no attributes or constraints are declared in this entity. Hence the normal functions like sdaiGetInstanceType() cannot be used to determine if an instance is an EDMtableInstance or not. The EDMI function edmiIsTableInstance() and edmiRemoteIsTableeInstance(), and the EDMxpx function xpfIsTableInstance() have to be used for such decisions.
An EDMtableInstance behave as an USER_DEFINED_INSTANCE in an EDMmodel, i.e, it is not found in the "Model_Contents.Instances" or in an Entity_Extent in the "Model_Contents.Populated_Folders". There is an special "independent" Entity_Extent for EDMtableInstances in an EDMtableModel. Any instances, including EDMtableInstances, in an EDMmodel can be referenced by an EDMtableInstance. However, no EDMtableInstances can play any role in an ordinary Entity Instance. An EDMtableInstance can reference any other EDMtableInstances
EDMsupervisor
The EDMsupervisor is updated to fully handle EDMtableInstances for EDMstandAlone, EDMfatClient, and EDMremoteClient operations. Exceptions are the commands ModifyInstance and CreateInstance. These are not applicable on EDMtableInstances.
The ShowInstance/DeleteInstance commands will display the EDMtableInstance with the "properties as attributes". Clicking on the Arrow in front of the "Rows" property, the rows and columns will be displayed in the EDMsupervisor stadard table format, i.e., the table used in SelectInstances and ExecuteQuery commands.
STEP file binding
EDMtableInstances are mapped to STEP file in the format of an User_Defined_Entity, hence this is fully compliant to the ISO 10303-21 specification.
The options EXCLUDE_USER_DEFINED_ENTITIES and ONLY_USER_DEFINED_ENTITIES in the EDMstepFileFactory are valid for EDMtableInstances.
XML file binding
There is currently no XML binding/mapping of EDMtableInstances.
Remaining implementations of the EDMtableInstance concept:
- Represent an EDMtableInstance in HTML_FORMAT, ASCII_FORMAT, OLD_XML_FORMAT are not yet fully implemented.
- SelectInstances with conditions on the EDMtableInstances
- SelectAggrInstances on EDMtableInstance with conditions on the columns
- Handling EDMtableInstance cells with aggregate value on STEP file
- Implementation in EDMdebugger's InstanceBrowser.
List of EDMI functions for the EDMtableInstance
- edmiCreateTableInstance
- edmiDeleteTableInstance
- edmiGetTableInstanceId
- edmiIsTableInstance
- edmiGetTableInstancesEntityExtent
- edmiCreateTableInstanceColumn
- edmiDeleteTableInstanceColumn
- edmiSetTableInstanceColumnsValue
- edmiGetTableInstanceColumnsValue
- edmiGetTableInstanceColumnNumber
- edmiInsertTableInstanceRows
- edmiDeleteTableInstanceRows
- edmiGetTableInstanceProperties
- edmiSetTableInstanceProperty
- edmiGetTableInstanceProperty
List of EDMI remote functions for the EDMtableInstance
- edmiRemoteCreateTableInstance
- edmiRemoteDeleteTableInstance
- edmiRemoteGetTableInstanceId
- edmiRemoteIsTableInstance
- edmiRemoteGetTableInstancesEntityExtent
- edmiRemoteCreateTableInstanceColumn
- edmiRemoteDeleteTableInstanceColumn
- edmiRemoteSetTableInstanceColumnsValue
- edmiRemoteGetTableInstanceColumnsValue
- edmiRemoteGetTableInstanceColumnNumber
- edmiRemoteInsertTableInstanceRows
- edmiRemoteDeleteTableInstanceRows
- edmiRemoteGetTableInstanceProperties
- edmiRemoteSetTableInstanceProperty
- edmiRemoteGetTableInstanceProperty
List of xpx/xpf functions for the EDMtableInstance
- xpfCreateTableInstance
- xpxDeleteTableInstance
- xpfCreateTableInstanceColumn
- xpxDeleteTableInstanceColumn
- xpfSetTableInstanceColumnsValue
- xpxGetTableInstanceColumnsValue
- xpfGetTableInstanceColumnValue
- xpxGetTableInstanceProperties
- xpfGetTableInstanceId
- xpxSetTableInstanceProperty
- xpfGetTableInstanceProperty
- xpxDeleteTableInstanceRows
- xpfInsertTableInstanceRows
- xpfGetTableInstanceEntityExtent
- xpfIsTableInstance