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 »


 
To be completed.
Related functions: edmiRemoteCreateTypedAggr
Header:
#include "sdai.h"
Prototype:
EdmiError edmiRemoteCreateTypedAggrBN(SdaiServerContext serverContextId,
                                       SdaiAppInstance   currInst,
                                       SdaiString        attributeName,
                                       SdaiSelect        pSel,
                                       SdaiAggr          *aggrId,
                                       SdaiInvocationId  *edmiInvocationId);
 
Arguments:

serverContextId

Context identification, from edmiDefineServerContext

currInst

A numeric instanceID that uniquely identifies an instance in the remote _EDMdatabase_ that owns the attribute on which to create the typed aggregate.

attributeName

The name of the attribute on which to create a typed aggregate. Attribute names are case insensitive. When the attribute name is not unique within the instance <currInst>, it must be qualified with the name of the entity from which it was originally inherited.

pSel

Pointer to a locally allocated tSdaiSelect data structure that contains the type specification of the typed aggregate elements.
The aggregate is typed with a path of pSel->nTypes elements. The path must be specified in the buffer pointed to by pSel->typeList. Each element in this buffer is a numeric typeID identifying a defined type instance in the remote _EDMdatabase{_}. The last specified typeID in the pSel->typeList buffer defines the element type of the typed aggregate.

aggrId

Variable that will receive the aggregateId that uniquely identifies the typed aggregate in the remote EDMdatabase.

edmiInvocationId

Currently not used.

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:
/*
SCHEMA Accounts 
TYPE tUSD = REAL; END_TYPE; 
TYPE tEUR = REAL; END_TYPE; 
TYPE tNOK = REAL; END_TYPE; 
TYPE tAmount = SELECT (tUSD, tEUR, tNOK); END_TYPE; 
 
ENTITY Turnover; 
Year 
Sales : ARRAY [1:12] OF tAmount; 
END_ENTITY; 
END_SCHEMA; 
*/
 
EdmiError rstat;
SdaiServerContext myContext;
SdaiAggr aggrId;
SdaiType tAmountId;
SdaiInstance instId;
tSdaiSelect sel;
SdaiSelect salesAmount = &sel;
 
/* Create Server Context */
rstat = edmiDefineServerContext("MyContext",
"Johnny", "Supervisor", "cf37ftr", 
"TCP", "9090", "MyServerHost", 
NULL, NULL, NULL, NULL, NULL, &myContext); 
 
/* Create instance of sales */
rstat = edmiRemoteCreateInstanceAndPutAttrsBN(myContext,
"AdminRepository", "Economy", 
"Turnover", 0, &instId, NULL); 
 
/* Get the type Id of tAmount */
rstat = edmiRemoteGetDefinedTypeBN(myContext, "Accounts",
"tAmount", &tAmountId, NULL); 
 
/* Create typed aggregate */
salesAmount->nTypes = 1;
salesAmount->type = sdaiREAL;
salesAmount->typeList = &tAmountId;
salesAmount->value.realVal = 0;
rstat = edmiRemoteCreateTypedAggrBN(myContext,
instId, "Sales", salesAmount,  
&aggrId, NULL); 
. . .

  • No labels