edmiRemoteValidateInstance

EdmiError edmiRemoteValidateInstance (SdaiServerContext  serverContextId, 
                                       SdaiAppInstance    currInst, 
                                       SdaiVersion        version, 
                                       SdaiString         diagnosticFile, 
                                       SdaiInteger        nFileMappings, 
                                       SdaiFileMapping    fileMapping[], 
                                       SdaiInteger        options,
                                       SdaiString         remoteRuleSchemaName, 
                                       SdaiLogDescription logDescription,
                                       SdaiInteger        numberOfParameters,
                                       SdaiSelect         parameters[],
                                       SdaiSelect         userReturnedValue,
                                       SdaiInteger        *warnings,
                                       SdaiInteger        *errors,
                                       SdaiInvocationId   *edmiInvocationId);

Invokes the EDMmodelChecker to validate an application instance against a specified set of rules in a remote EDMdatabase. The rules must be defined within the dictionary model of the data model. They may be defined in the data models underlying Express Schema or in any EDMruleSchema that has been compiled to extend the data models dictionary model. The result of the validation may be a plain text report or a population of the EDM_VALIDATION_RESULT_SCHEMA. The validation result population may be used for generating validation reports with a user defined layout and format. The expressions logging can be used to trace the validation process in the EDMexpressVM. The EDMsupervisor and the interactive EDMdebugger may be used for testing and debugging rules as well as for getting detailed information from the validation process.

Arguments


1TypeNameComment
2SdaiServerContext

serverContextId

Context identification, from edmiDefineServerContext

3SdaiAppInstance

currInst

A numeric instanceID that uniquely identifies the application instance to be validated in the remote  EDMdatabase

4SdaiVersion

version

The version of the edmModel for which to apply this operation. A zero value means the current version.

5SdaiString

diagnosticFile

The name of the file that will receive any diagnostic information generated by this function. A NULL or empty string value will send the diagnostic information to the  EDMinterface current output device.

6SdaiInteger

nFileMappings

Currently not used.

7SdaiFileMapping

fileMapping

Currently not used.

8SdaiInteger

options

See description of available options below.  Options may be joined by using the bitwise OR operator.

9SdaiString

remoteRuleSchemaName

The name of the EDMruleSchema to use for the validation. Rule schema names are case insensitive. If this argument is NULL or an empty string, the instance will be validated against the rules and constraints defined in the models underlying Express Schema.

10SdaiLogDescription

logDescription

An SdaiLogDescription structure containing the specifications for the logging of the validation process.

11SdaiInteger

numberOfParameters

The number of parameters in the <parameters> argument.

12SdaiSelect

parameters

Buffer of pointers to locally allocated tSdaiSelect structures. Each tSdaiSelect structure defines the type and value of an input parameter to the validation process.

13SdaiSelect

userReturnedValue

Pointer to a locally allocated tSdaiSelect structure that may be used by the global rule to communicate a user defined status with the calling application.

14SdaiInteger

warnings

A variable that will receive the number of warnings encountered in the validation process.

15SdaiInteger

errors

A variable that will receive the number of errors encountered in the validation process.

16SdaiInvocationId

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


  

OptionComment

UNSET_DERIVE_ATTRIBUTES

The validation will check for unset derived attributes.
This option is applicable only when the <remoteRuleSchemaName> argument is NULL or an empty string.

OUTPUT_STEPID

The diagnostic information will refer to stepIds rather than to the instanceIds used for identification of instances within the remote  EDMdatabase . This option is only applicable for models that have been imported from step files with the KEEP_STEP_IDENTIFIERS option.

INVERSE_RULES

The validation will check for unset Inverse Constraints.  This option is applicable only when the <remoteRuleSchemaName> argument is NULL or an empty string.

GLOBAL_RULES

The validation will include any applicable global rule.

REQUIRED_ATTRIBUTES

The validation will check for unset non-optional explicit attributes.  This option is applicable only when the <remoteRuleSchemaName> argument is NULL or an empty string.

ATTRIBUTE_DATA_TYPE

The validation will check for explicit attribute values with data types that do not comply with their declaration. This option is applicable only when the <remoteRuleSchemaName> argument is NULL or an empty string.

UNIQUENESS_RULES

The validation will include any applicable Uniqueness Rule.

LOCAL_RULES

The validation will include any applicable Where Rule.

AGGREGATE_SIZE

The validation will check for aggregates with numbers of elements that fail to comply with their declaration. This option is applicable only when the <remoteRuleSchemaName> argument is NULL or an empty string.

ARRAY_REQUIRED_ELEMENTS

The validation will check for arrays with unset non-optional elements. This option is applicable only when the <remoteRuleSchemaName> argument is NULL or an empty string.

AGGREGATE_UNIQUENESS

The validation will check for any aggregate that fail to comply with its uniqueness declaration. The SET type aggregate has a built-in uniqueness rule that will cause a warning if two or more equal values are found among its elements. This option is applicable only when the <remoteRuleSchemaName> argument is NULL or an empty string.

FULL_VALIDATION

The validation will include all applicable rules and constraints.  when the <ruleSchemaId> argument is zero,

AGGREGATE_DATA_TYPE

The validation will check for aggregate elements with data types that do not comply with their declaration. This option is applicable only when the <remoteRuleSchemaName> argument is NULL or an empty string.

DETAILED_OUTPUT

 

FULL_OUTPUT

Any available information about the cause of an error will be recorded in the diagnostic report.

STOP_ON_FIRST_ERROR

The validation process will terminate after encountering the first error.

 

Example


 

 - --------------------------------------
 - File: c:/data/furniture.exp 
 - -------------------------------------- 
 SCHEMA Furniture; 
 TYPE tScrewType = ENUMERATION OF (PHILIPS, ALLEN, FLAT); END_TYPE; 
 ENTITY Screw; 
 Id : STRING; 
 Typ : tScrewType; 
 Len : REAL; 
 Dia : REAL; 
 END_ENTITY; 
 ENTITY Dining_Table; 
 Name : STRING; 
 Legs : INTEGER; 
 Len : REAL; 
 Width : REAL; 
 Height : REAL; 
 Screws : BAG OF Screw; 
 END_ENTITY; 
 END_SCHEMA; 
  
 - -------------------------------------- 
 - File: c:/data/furniture_rule.rex. 
 - -------------------------------------- 
 RULE_SCHEMA Furniture_Rule FOR Furniture; 
  
 - GLOBAL RULE: 
 - At least N tables in stock, where N 
 - is an input parameter to the rule. 
 RULE globalRule FOR (Dining_Table); 
 LOCAL 
 nTables : INTEGER; 
 END_LOCAL; 
 xpxGetUserParameter(1, nTables); 
 WHERE 
 w_nTables : SIZEOF(Dining_Table) > nTables; 
 END_RULE; 
  
 - LOCAL RULE: 
 - A dining table must have 4 legs 
 ENTITY Dining_Table; 
 WHERE 
 w_nLegs : Legs = 4; 
 END_ENTITY; 
  
 END_RULE_SCHEMA; 
 */
  
 EdmiError rstat, error;
 SdaiInteger nErr, nWrn, index, nHits;
 SdaiServerContext myContext;
 SdaiInstance tableId;
 tSdaiSelect sel;
 SdaiSelect retVal = &sel;
 SdaiQueryResult qexRes;
 tSdaiLogDescription logDescr = {
 FULL_LOG | LOG_TO_FILE,  
 NULL, NULL, 
 "c:/temp/globalRule.dia", 
 "c:/temp/globalRule.out", 
 104857600 }; 
  
 /* Define Remote Server Context */
 rstat = edmiDefineServerContext("MyRemoteServerContext",
 "Johnny", "Supervisor", "cf37ftr", 
 "TCP", "9090", "MyServerHost", 
 NULL, NULL, NULL, NULL, NULL, &myContext); 
  
 /* Compile the Express Schema */
 rstat = edmiRemoteDefineSchema(myContext, EXPRESS_SCHEMA_TYPE,
 "c:/data/furniture.exp", "c:/temp/furniture.dia",  
 "Furniture", 0, &nWrn, &nErr, NULL); 
  
 /* Compile the Rule Schema */
 rstat = edmiRemoteDefineSchema(myContext, RULE_SCHEMA_TYPE,
 "c:/data/furniture_rule.rex", "c:/temp/furniture_rule.dia", 
 "Furniture_Rule", 0, &nWrn, &nErr, NULL); 
  
 /* Import the product catalogue from a p21 file
 into the model Products in the DataRepository */ 
 rstat = edmiRemoteReadStepFile(myContext, "DataRepository",
 "Products", NULL, NULL, "c:/data/furniture.stp", 
 "c:/temp/furniture.stp.dia", "Furniture", NULL, 
 0, &nWrn, &nErr, &error, NULL); 
  
 /* Get the Id of the table PIZA-210 */
 index = 0;
 nHits = 1;
 rstat = edmiRemoteSelectInstances(myContext, "DataRepository",
 "Products", "Dining_Table", "NAME = 'PIZA-210'",  
 ONLY_INSTANCE_IDS, NULL, NULL, NULL,  
 &index, &nHits, &qexRes,  
 NULL, NULL, NULL, NULL); 
 tableId = qexRes->instanceIds[0];
 edmiFreeQueryResult(qexRes);
  
 /* Validate the PIZA-210 table */
 rstat = edmiRemoteValidateInstance(myContext, tableId, 0,
 "c:/temp/validation_result.out", 0, NULL, 
 LOCAL_RULES | REQUIRED_ATTRIBUTES | AGGREGATE_DATA_TYPE, 
 "Furniture_Rule", &logDescr, 0, NULL, retVal,  
 &nWrn, &nErr, NULL); 
 . . .

 

See also

Filter by label

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