This operation creates an entity instance in an edmModel in a remote EDMdatabase and in the same operation, optionally puts values into any number of its attributes.
This operation is only applicable on data models.
Related functions: edmiRemoteCreateInstanceAndPutAttrsBN, edmiRemoteCreateInstanceAndPutAttrsBNEx, edmiRemoteCreateInstanceAndPutAttrsEx
Header:
#include "sdai.h"
Prototype:
EdmiError edmiRemoteCreateInstanceAndPutAttrs(SdaiServerContext serverContextId,
SdaiModel remoteModelId,
SdaiEntity entityId,
SdaiInteger attributes,
SdaiAppInstance *newInstanceId,
SdaiInvocationId *edmiInvocationId,
/* [SdaiAttr attributeId, SdaiPrimitiveType valueType, SdaiVoid value] */
...);
Arguments:
serverContextId |
Context identification, from edmiDefineServerContext |
remoteModelId |
The numeric modelID that uniquely identifies the edmModel in the remote _EDMdatabase_ in which the instance is to be created. |
entityId |
The numeric entityID that uniquely identifies the entity definition instance in the dictionary model within the remote _EDMdatabase{_}. |
attributes |
The number of attribute values given in the variable argument list <values>. |
newInstanceId |
Variable that will receive the numeric instanceID that uniquely identifies the created instance in the remote EDMdatabase. |
edmiInvocationId |
Currently not used. |
values |
For each attribute value to assign, the three following arguments in the following order must be specified:
|
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;
SdaiServerContext myContext;
SdaiInstance instId;
SdaiModel modelId;
SdaiEntity entityId;
SdaiAttr nameAttrId, ageAttrId;
SdaiAttr weightAttrId, marriedAttrId;
/* Create Server Context */
rstat = edmiDefineServerContext("MyContext",
"Johnny", "Supervisor", "cf37ftr",
"TCP", "9090", "MyServerHost",
NULL, NULL, NULL, NULL, NULL, &myContext);
/* Get the model Id */
rstat = edmiRemoteGetModelBN(myContext, "DataRepository",
"MySocialNetwork", &modelId, NULL);
/* Get the entity Id */
rstat = edmiRemoteGetEntity(myContext, modelId,
"PERSON", &entityId, NULL);
/* Get the attribute Ids */
rstat = edmiRemoteGetAttrDefinitionBN(myContext, "SocialNetwork",
"Person", "NAME", &nameAttrId, NULL);
rstat = edmiRemoteGetAttrDefinitionBN(myContext, "SocialNetwork",
"Person", "AGE", &ageAttrId, NULL);
rstat = edmiRemoteGetAttrDefinitionBN(myContext, "SocialNetwork",
"Person", "WEIGHT", &weightAttrId, NULL);
rstat = edmiRemoteGetAttrDefinitionBN(myContext, "SocialNetwork",
"Person", "MARRIED", &marriedAttrId, NULL);
/* Add lucy to my social network */
rstat = edmiRemoteCreateInstanceAndPutAttrs(myContext,
modelId, entityId, 4, &instId, NULL,
nameAttrId, sdaiSTRING, "Lucy Schmidt",
ageAttrId, sdaiINTEGER, 32,
weightAttrId, sdaiREAL, 59.5,
marriedAttrId, sdaiBOOLEAN, sdaiFALSE);
. . .