Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
languagecpp
themeConfluence
EdmiError edmiRemoteGetMethodSignatureBN(SdaiServerContext serverContextId,
                                          SdaiString        methodType,
                                          SdaiString        methodName,
                                          SdaiString        schemaName,
                                          SdaiInstance      *methodId,
                                          SdaiString        *methodClass,
                                          SdaiInteger       *arguments,
                                          SdaiPrimitiveType *returnValueDatatype,
                                          SdaiInstance      *returnValueDomainId,
                                          SdaiString        **argumentNames,
                                          SdaiPrimitiveType **argumentDatatypes,
                                          SdaiInstance      **argumentDomainIds,
                                          SdaiString        *description,
                                          SdaiString        *textualSignature,
                                          SdaiInvocationId  *edmiInvocationId);


Reads the additional information / documentation of a method, identified by its

...

methodId, in a remote EDMdatabase

...

.

...

The purpose of the user defined method signatures is to provide information about the methods and their input parameters to the users. The methods in question are Express-X mapping schemas and query functions.

...

serverContextId

...

Context identification, from edmiDefineServerContext

...

methodType

Arguments

...

Variable that will receive the instance Id that uniquely identifies the method in the remote _EDMdatabase_ . This is an instance of the EDM_METHOD entity in the ExpressDataManager model
TypeNameComment
SdaiServerContext

serverContextId

Context identification, from edmiDefineServerContext

SdaiInstance

methodId

The instance Id of that uniquely identifies the method in the remote EDMdatabase. This Id is an instance of the EDM_METHOD entity in the ExpressDataManager model.

SdaiString

methodType

Variable that will receive the type of method. Values are:

  • "XPX" if the method is an Express-X Schema Map.
  • "QEX" if the method is a
query function
  • Query Function.
SdaiString

methodName

If the method is an Express-X Schema Map, this shall be the method Variable that will receive the name that was assigned to the method when it was defined with edmiDefineMethodSignatureedmiRemoteDefineMethodSignature.
If the method is a query functionQuery Function, the method name shall will be the name of the query function it self.

SdaiString

schemaName

If the method is an Express-X Schema Map, this variable shall be will receive the name of the mapping schema. E.g "MySchemaMap".
If the method is a query function, this the variable shall be will receive the name of the query schema containing the query in question, qualified with the name of the parent Express schema. E.g: "MySchema.MyQuerySchema"

methodId

SdaiString

methodClass

Variable that will receive the optional and user defined method class. Method classification may be used to organize methods in the remote EDMdatabase

SdaiInteger

arguments

This variable will receive the number of input parameters for the given method.

SdaiPrimitiveType

returnValueDatatype

Variable that will receive the type of the return value from the method. This parameter is only applicable for query function methods.

SdaiInstance

returnValueDomainId

 

SdaiString

argumentNames

A buffer that will receive a null terminated list of the input parameter names.

SdaiPrimitiveType

argumentDatatypes

A buffer that will receive a list of the input parameter types that correspond to the argument names in <argumentNames>

SdaiInstance

argumentDomainIds

 

SdaiString

description

Variable that will receive the user defined description of the method.

SdaiString

textualSignature

Optional, method signature in text.

SdaiInvocationId

edmiInvocationId

Currently not used.

...

Return Value

...

Insert excerpt
US:_r_EDMInterface
US:_r_EDMInterface
nopaneltrue

 

Options

...

  

 

Example

...

 

Code Block
languagecpp
 EdmiError rstat;
 SdaiInteger nErr, nWrn;
 SdaiServerContext myContext;
  
 /* Define Remote Server Context */
 rstat = edmiDefineServerContext("MyRemoteServerContext",

...


 "Johnny", "Supervisor", "cf37ftr",

...

 
 "TCP", "9090", "MyServerHost",

...

 
 NULL, NULL, NULL, NULL, NULL, &myContext);

...

 
  
 /* Define Schemas */

...


 rstat = edmiRemoteDefineSchema(myContext, EXPRESS_SCHEMA_TYPE,

...


 "c:/data/person.exp", "c:/temp/person.dia", "Person",

...

 
 DELETING_EXISTING_SCHEMAS | STORING_SOURCE,

...

 
 &nWrn, &nErr, NULL);

...

 
  
 rstat = edmiRemoteDefineSchema(myContext, EXPRESS_X_SCHEMA_TYPE,

...


 "c:/data/person_maps.xpx", "c:/temp/person_maps.dia",

...

 
 "InsertPerson", DELETING_EXISTING_SCHEMAS | STORING_SOURCE,

...

 
 &nWrn, &nErr, NULL);

...

 
  
 rstat = edmiRemoteDefineSchema(myContext, QUERY_SCHEMA_TYPE,

...


 "c:/data/person_queries.xpx", "c:/temp/person_queries.dia",

...

 
 "queries", DELETING_EXISTING_SCHEMAS | STORING_SOURCE,

...

 
 &nWrn, &nErr, NULL);

...

 
  
 /* Define XPX Method Signature */

...


 {

...


 SdaiString _parNamesXpx[4] = {"Name", "Sex", "Weight", NULL};

...

 
 SdaiPrimitiveType _parTypesXpx[3] = {sdaiSTRING, sdaiINTEGER, sdaiREAL};

...

 
  
 rstat = edmiRemoteDefineMethodSignature(myContext, "XPX",

...

 
 "Insert a Person", "InsertPerson",

...

  
 "CLASS_INPUT", _parNamesXpx, _parTypesXpx,

...

 
 "Inserts a new person", NULL);

...

 
 }
  
 /* Get QEX Method Signature */

...


 {

...


 SdaiInstance _qexMethodId;

...

 
 SdaiString _qexMethodClass, _qexDesc, *_qexArgNames;

...

  
 SdaiPrimitiveType _qexReturnType, *_qexArgTypes;

...

 
 SdaiInteger _nArgs;

...

 
  
 rstat = edmiRemoteGetMethodSignatureBN(myContext, "QEX",

...

 
 "SexHeavierThan", "Person.Queries",

...

 
 &_qexMethodId, &_qexMethodClass,

...

  
 &_nArgs, &_qexReturnType, &_qexArgNames,

...

 
 &_qexArgTypes, &_qexDesc, NULL);

...

 
 }
  
 /* Modify QEX Method Signature */

...


 rstat = edmiRemoteModifyMethodSignature(myContext, "QEX",

...


 "SexHeavierThan", "Person.Queries", "CLASS_OUTPUT",

...

 
 NULL, NULL, "Returns all persons of a given sex \

...

 
 exceeding a given threshold weight", NULL);

...

 
  
 /* List Query Method Signatures */

...


 {

...


 SdaiString _typeFilter = "method_type = QEX";

...

 
 SdaiString _nameFilter = "name LIKE 'SEX*'";

...

 
 SdaiString _schemaFilter = "name = 'PERSON'";

...

 
 SdaiString _extraSchemaFilter = "name = 'QUERIES'";

...

 
 SdaiString _classFilter = "class = 'CLASS_OUTPUT'";

...

 
 SdaiString _ownerFilter = NULL;

...

 
 SdaiString _groupFilter = NULL;

...

 
 SdaiString *_methodNames = NULL;

...

 
  
 rstat = edmiRemoteListMethodSignatures(myContext, _typeFilter,

...

  
 _nameFilter, _schemaFilter, _extraSchemaFilter,

...

 
 _classFilter, _ownerFilter, _groupFilter, 0,

...

  
 &_methodNames, NULL);

...

 
  
 while(*_methodNames) {

...

 
 printf("\nMethod %s", *_methodNames);

...

 
 ++_methodNames;

...

 
 } 
 }
 . . .
  
 Express Schema
 - --------------------------------------------------------------
 -

...

 File : c:/data/person.exp

...


 - --------------------------------------------------------------

...


 SCHEMA person;

...


 ENTITY aperson;

...


 name : STRING;

...


 sex : STRING;

...


 weight : REAL;

...


 END_ENTITY;

...


 END_SCHEMA;

...


  
 Express-X

...

 Schema
 - --------------------------------------------------------------
 -

...

 File : c:/data/person_maps.xpx

...


 - --------------------------------------------------------------

...


 SCHEMA_MAP InsertPerson;

...


 GLOBAL

...


 DECLARE src INSTANCE OF SOURCE_SCHEMA person;

...


 DECLARE tar INSTANCE OF TARGET_SCHEMA person;

...


 END_GLOBAL;

...


  
 STATEMENTS;

...


 LOCAL

...


 npar : INTEGER;

...


 fail : BOOLEAN := FALSE;

...


 name : STRING;

...


 sex : INTEGER;

...


 weight : REAL;

...


 parType : INTEGER;

...


 END_LOCAL;

...


  
 IF (xpxGetNumberOfUserParameters() = 3) THEN

...


 xpxGetUserParameter(1, name);

...


 xpxGetUserParameter(2, sex);

...


 xpxGetUserParameter(3, weight);

...


 xpxCreateInstanceAndPutAttrsBN(XPXTARGETMODELID, "aperson", 3,

...


 xpxSTRING, name, xpxINTEGER, sex, xpxREAL, weight);

...


 }

...


 END_STATEMENTS;

...


 END_SCHEMA_MAP;

...


  
 Query Schema.
 - --------------------------------------------------------------

...


 - File : c:/data/person_queries.qex

...


 - --------------------------------------------------------------

...


 QUERY_SCHEMA queries FOR person;

...


 GLOBAL

...


 DECLARE src INSTANCE OF person;

...


 END_GLOBAL;

...


  
 VIEW_ENTITY PersonView;

...


 name : STRING;

...


 sex : INTEGER;

...


 weight : REAL;

...


 END_VIEW_ENTITY;

...


  
 QUERY_FUNCTION SexHeavierThan ( p_sex:INTEGER; p_weight:REAL)

...


 : SET OF PersonView;

...


 LOCAL

...


 result : SET of PersonView;

...


 currView : PersonView;

...


 END_LOCAL;

...


  
 FROM(s:src::aperson)

...


 WHEN TRUE;

...


 BEGIN

...


 IF((s.sex = p_sex) AND (s.weight > p_weight)) THEN

...


 NEW currView;

...


 currView.name := s.name;

...


 currView.sex := s.sex;

...


 currView.weight := s.weight;

...


 result ++ currView;

...


 END_IF;

...


 END;

...


 RETURN(result);

...


 END_QUERY_FUNCTION;

...


 END_QUERY_SCHEMA;

 

See also

Filter by label (Content by label)
showLabelsfalse
showSpacefalse
cqllabel = "model" and parent = "6062220"