Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Current »


 
Returns the value of an attribute of a given application instance within a model version other than the current.
The value type may also have changed between versions of the population. Use edmiVersionGetAttrDatatype to find the value type.
Related functions: edmiCreateModelVersion, edmiDeleteModelVersion, edmiDeleteModelVersionBN, edmiGetModelVersionId, edmiGetModelVersionIdBN, edmiRollbackModel, edmiRollbackModelBN, edmiVersionGetAttr, edmiVersionGetAttrBN, edmiVersionGetAttrDatatype, edmiVersionGetAttrDatatypeBN.
Header:
#include "sdai.h"
Prototype:
EdmiError edmiVersionGetAttr(SdaiInstance      instance,
                              SdaiVersion       version,
                              SdaiAttr          attributeId,
                              SdaiPrimitiveType valueType,
                              SdaiVoid          value);
Arguments:

instance

The instanceID of an application instance in the edmModel for which an attribute shall be read in from an earlier version of the model.

version

The version number of the edmModel in question. The version number is a sequence number counting from one with an increment of one for each new model version created.

attributeId

The attributeID that uniquely identifies the attribute definition instance in the EDMdatabase.
The attributeID is returned from the sdaiGetAttrDefinition and sdaiGetAttrDefinitionBN functions.

valueType

The primitive data type of the attribute to be read.
Legal data types are: sdaiINTEGER, sdaiREAL, sdaiSTRING, sdaiBOOLEAN, sdaiLOGICAL, sdaiBINARY, sdaiENUMERATION, sdaiAGGR, sdaiINSTANCE, sdaiADB .

value

Variable that will receive a pointer to the value of the given attribute of <instance> for the <version> of the edmModel.

Returns:
A completion code of datatype EdmiError is the returned function value. The completion code has the following values:
Completion code = 0 : Operation successfully performed.
Completion code != 0: Error in operation. Completion code is an EDMinterface error code. Use edmiGetErrorText to get the error text corresponding to the error code.
Example:
EdmiError rstat;
SdaiInteger nWrn, nErr;
SdaiRepository repId;
SdaiModel modelId;
SdaiVersion version1Id, version2Id;
SdaiModelVersion modelVersionId;
SdaiInteger myInteger;
SdaiReal myReal;
SdaiInstance instId;
SdaiAttr attrId;
SdaiPrimitiveType type;
 
/* Compile schema */
rstat = edmiCompileFile("c:/data/MyFile.exp",
"c:/tmp/MyFile.dia", 
"MySchema", 0, &nWrn, &nErr); 
/* Create Model */
rstat = edmiGetRepository("MyRepository", &repId);
modelId = edmiCreateModelBN(repId, "MyModel", "MySchema", 0);
/* Populate Model */
instId = edmiCreateInstanceAndPutAttrsBN(modelId, "MyEntity", 1,
"REAL_ATTR", sdaiREAL, 3.14);  
/* Create version 1 */
rstat = edmiCreateModelVersion("MyRepository", "MyModel",
"V1", &modelVersionId); 
/* Change population */
sdaiPutAttrBN(instId, "REAL_ATTR", sdaiINTEGER, 1);
/* Create version 2 */
rstat = edmiCreateModelVersion("MyRepository", "MyModel",
NULL, &modelVersionId); 
/* Get Id of version 1 */
rstat = edmiGetModelVersionIdBN("MyRepository", "MyModel",
"V1", &modelVersionId, &version1Id); 
/* Type is sdaiREAL */
rstat = edmiVersionGetAttrDatatypeBN(instId, version1Id,
"REAL_ATTR", &type);
/* Value is 3.14 */ 
if (type != sdaiREAL) goto error;
rstat = edmiVersionGetAttrBN(instId, version1Id, "REAL_ATTR",
type, &myReal); 
/* Get Id of version 2 */
attrId = sdaiGetAttrDefinitionBN("MySchema", "MyEntity", "REAL_ATTR");
rstat = edmiGetModelVersionId(modelId, "version2",
&modelVersionId, &version2Id); 
/* Type is now sdaiINTEGER */
rstat = edmiVersionGetAttrDatatype(instId, version2Id,
attrId, &type); 
/* Value is 1 */
if (type != sdaiINTEGER) goto error;
rstat = edmiVersionGetAttr(instId, version2Id, attrId,
type, &myInteger);
/* Roll back to version 1 */
rstat = edmiRollbackModel(modelId, version1Id,
KEEP_ALL_MODEL_VERSIONS); 
/* Delete version 2 */
edmiDeleteModelVersion(modelId, version2Id);
error:
. . .

  • No labels