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
Type | Name | Comment |
 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
Â
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.
Â