edmiRemoteDeleteMethodSignature


 

EdmiError edmiRemoteDeleteMethodSignature(SdaiServerContext serverContextId, 
                                            SdaiString        methodType,           
                                            SdaiString        methodName, 
                                            SdaiString        schemaName,  
                                            SdaiInvocationId  *edmiInvocationId);


<Deletes any additional information / documentation of a method from a remote EDMdatabase. A method signature is an instance of the EDM_METHOD entity in the ExpressDataManager model. A method is either an Express-X Mapping Schema or a Query Function. The method signature contains information about the required input parameters for each method. It may also contain a more general and descriptive text for documentation purposes. Query functions already have their parameters defined in the query function signature. Hence, they implicitly get a method signature definition in the ExpressDataManager model and they may therefore not be deleted. Therefore this method is only applicable on Express-X mapping schemas.

Arguments


TypeNameComment
 SdaiServerContext

serverContextId

Context identification, from edmiDefineServerContext

 SdaiString

methodType

"XPX" is currently the only applicable method type.

 SdaiString

methodName

The name that was assigned to the Express-X Mapping Schema method when it was defined.

 SdaiString

schemaName

The name of the Express-X Schema Map.

 SdaiInvocationId

edmiInvocationId

Currently not used.

Return Value


Error rendering macro 'excerpt-include' : User 'null' does not have permission to view the page 'US:_r_EDMInterface'.

 

Options


  

 

Example


 

 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; 
 } 
 }
  
 /* Delete the XPX Method Signature */
 edmiRemoteDeleteMethodSignature(myContext, "XPX",
 "INSERT A PERSON", "InsertPerson", NULL); 
 . . .
  
 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

There are no items with the selected labels at this time.

Â