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 »


 
Invokes the EDMmodelChecker to validate the specified data model against the specified global rule. The specified global rule must be defined in the dictionary model (Express schema) that is the underlying schema of the specified data model, or the global rule must be defined in an EDMruleSchema appropriate to the specified data model.
This operation is the same as the edmiValidateGlobalRuleBN except that the actual application can supply arguments to the validation process, hence making the validation process parameterized. The validation process can return additional information to the application through the < returnValue> argument.
The actual data model must be open before this operation can be successfully performed.
The expressions logging can be used to log (trace) the execution of the global rule in the EDMexpressVM. The EDMsupervisor and the interactive EDMdebugger can be used for testing and debugging global rules as well as getting detailed information of a validation process.
Related functions: edmiValidateGlobalRule, edmiValidateGlobalRuleBN, edmiValidateGlobalRuleWithParameters, edmiValidateInstance , edmiValidateInstanceWithParameters, edmiValidateInstanceType , edmiValidateInstanceTypeBN , edmiValidateInstanceTypeWithParameters, edmiValidateInstanceTypeWithParametersBN ,edmiValidateModel, edmiValidateModelBN ,edmiValidateModelWithParameters, edmiValidateModelWithParametersBN, edmiValidateWhereRule , edmiValidateWhereRuleBN , edmiValidateWhereRuleWithParameters, edmiValidateWhereRuleWithParametersBN, sdaiValidateGlobalRule , edmiDefineRuleSchema
Header:
#include "sdai.h"
Prototype:
EdmiError edmiValidateGlobalRuleWithParametersBN(SdaiModel         modelId, 
                                                  SdaiString        globalRuleName, 
                                                  SdaiRuleSchema    ruleSchemaId, 
                                                  SdaiString        userOutputFile, 
                                                  SdaiLogical       *result, 
                                                  SdaiPrimitiveType *returnValueDatatype, 
                                                  void              *returnValue, 
                                                  SdaiInteger       numberOfParameters, 
                                                  /* For each user parameter: [SdaiPrimitiveType parameterDataType, parameterValue] */ 
                                                  ... ); 
Arguments:

modelId

A numeric modelID that uniquely identifies the data model of interest in the EDMdatabase .
The modelID is returned from the functions: sdaiCreateModel , sdaiCreateModelBN , sdaiOpenModelBN , edmiGetModel , edmiGetModelBN , sdaiGetInstanceModel

globalRuleName

Specifies the global rule to validate. Global rule names are case insensitive.
Dependent of the <ruleSchemaId> argument, the actual global rule must be defined in the dictionary model (Express schema) that are the underlying schema of the <modelId> data model, or in the specified EDMruleSchema.

ruleSchemaId

A numeric ruleSchemaID that uniquely identifies the rule schema instance in the EDMdatabase that defines the global rule specified in the <globalRuleName> argument.
The specified global rule must be defined in the dictionary model (Express schema) that is the underlying schema of the specified data model <modelId> if the <ruleSchemaId> is set to zero.
The ruleSchemaID can be retrieved by the edmiGetRuleSchema operation.

userOutputFile

Specifies the name of a file that will be used to receive the result of executing the xpxPrintf and xpxOutputValue function in the actual global rule. The specified file can be an existing file or the name of a file that will be created by the EDMmodelChecker. The default file extension is ".txt".
The output of the xpxPrintf and xpxOutputValue function in the actual global rule will be written to the EDMinterface current output device when the <userOutputFile> is set to NULL. The EDMinterface current output device can be defined by the edmiDefineOutputFunction operation.

result

Address of a SdaiLogical variable that will receive the result of the validation operation. The returned result is as follows:
sdaiTRUE: No global rule violation
sdaiFALSE: Actual data model violates specified global rule.
sdaiUNKNOWN: Unpredictable result due to unset values or error in operation.

returnValueDataType

Address of a variable of type SdaiPrimitiveType that is used both as an input argument and an output argument:
Input: specifies the expected datatype of the value returned in the <returnValue> argument. The returned value must be type compatible with the datatype specified in the <returnValueDataType> argument.
Output: actual data type of the return value <returnValue>. When no value is returned the <returnValueDatatype> is set to sdaiINDETERMINATE

returnValue

Address of variable that will receive the value from the actual validation process. The actual value must be specified by invoking the xpxReturnValueToCaller procedure in the validation process in the EDMexpressVM.

numberOfParameters

Specifies the number of parameters supplied in the actual invocation of the operation.
For each parameter the following two arguments must be specified in this order:

parameterDataType

The data type of the actual parameter value specified as a SdaiPrimitiveType value.

parameterValue

Actual parameter value.

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
EdmiError rstat;
SdaiModel modelId;
SdaiLogical result;
SdaiAppInstance returnedInstance;
. . .
if (rstat = edmiValidateGlobalRuleWithParametersBN(
modelId, 
"GlobalRuleName", 
"/usr/hkd/ifc/data/validation_print.text", 
&result, 
sdaiINSTANCE, 
(void *) &returnedInstance, 
2, 
sdaiINTEGER, 512, 
sdaiSTRING, "PRODUCT_A012XYZ")) { 
/* Error in operation */ 
printf("\nError: %s in edmiValidateGlobalRuleWithParametersBN\n", 
edmiGetErrorText(rstat)); 
goto error; 
}
switch (result) {
case sdaiTRUE: 
. . . /* No violation in operation */ 
break; 
case sdaiFALSE: /* Rule violation */ 
printf("\nFailing instance: %lu", returnedInstance); 
. . .  
break; 
default: 
. . . /* Unpredictable result */ 
break; 
}
. . .

  • No labels