edmiRemoteConvertModelsEx


 

EdmiError edmiRemoteConvertModelsEx(SdaiServerContext   serverContextId,
                                      SdaiInteger         numberOfSources,
                                      SdaiSourceOrTarget  sources[],
                                      SdaiString          remoteSchemaMapName,
                                      SdaiInteger         numberOfTargets,
                                      SdaiSourceOrTarget  targets[],
                                      SdaiInteger         nFileMappings,
                                      SdaiFileMapping     fileMappings[],
                                      SdaiInteger         numberOfParameters,
                                      SdaiSelect          parameters[],
                                      SdaiOptions         options,
                                      SdaiLogDescription  logDescription,
                                      SdaiExecutionResult executionResult,
                                      SdaiSelect          extensionsArgs,
                                      SdaiInvocationId    *edmiInvocationId);


Converts one or more existing data models (source models) in the remote EDMdatabase by invoking the EDMmodelConverter. By default, the result of the conversion will populate a new data model (target model) in the remote EDMdatabase. Optionally the result of this operation may be added to an existing data model, thereby enabling merging of models. The following preconditions must be met before invoking the EDMmodelConverter.

  1. The Target Express Schema, i.e the underlying schema of the target model, must be compiled to generate a dictionary model in the remote EDMdatabase.
  2. The Express-X Mapping Schema that defines the conversion process must be compiled to generate an Express-X dictionary model in the remote EDMdatabase

The function edmiRemoteDefineSchema may be used to create the dictionary models. The source model will not be changed by the conversion process. The EDMmodelConverter uses the EDMexpressVM to perform the conversion process. To facilitate debugging of the conversion, this function offer a broad variety of options for tracing the process and for logging events. Express-X may be used as a programming language for creating, manipulating, and deleting data within data models in the remote EDMdatabase. Hence, Express-X Schema may be successfully executed without creating a target data model. An optional filter controls the logging of the conversion process. This filter is controlled by the arguments <declarationsToLog>, <sourceLinesToLog> and <options>. Together, these three arguments define which events to log in which parts of the Express-X schema. It is suggested that an appropriate logging filter be specified to avoid extensive usage of disk space when logging to file.

Arguments


1TypeNameComment
2 SdaiServerContext

serverContextId

Context identification, from edmiDefineServerContext

3 SdaiInteger

numberOfSources

Number of source files in the <sources> argument.

4 SdaiSourceOrTarget

sources

Buffer of SdaiSourceOrTarget structures defining the source models of the conversion.

5 SdaiString

remoteSchemaMapName

The name of the Express-X Mapping Schema. This schema must be compiled to generate an Express-X dictionary model in the remote _EDMdatabase{_}.

6 SdaiInteger

numberOfTargets

Number of target files in the <targets> argument.

7 SdaiSourceOrTarget

targets

Buffer of SdaiSourceOrTarget structures defining the target models of the conversion.

8 SdaiInteger

nFileMappings

Currently not used.

9 SdaiFileMapping

fileMapping

Currently not used.

10 SdaiInteger

numberOfParameters

The number of parameters in the <parameters> argument.

11 SdaiSelect

parameters

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

12 SdaiOptions

options

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

13
SdaiLogDescription  

logDescription

An SdaiLogDescription structure containing the specifications of the logging of the conversion process.

14 SdaiExecutionResult

executionResult

An SdaiExecutionResult structure that will receive information concerning the execution of the conversion process.

15 SdaiSelect

extensionsArgs

Currently not used.

16 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


  

OptionComment

DELETING_EXISTING_MODEL

Delete the target model from the remote EDMdatabase, if it already exists.

USE_EXISTING_TARGET_MODEL

Add the target convertion data to an existing data model in the remote EDMdatabase.

USER_OUTPUT_TO_FILE

The output from the Express-X functions xpxPrintf and xpxOutputValue will be written to the file specified in the <userOutputFile> argument.

USER_OUTPUT_TO_STDOUT

The output from the Express-X functions xpxPrintf and xpxOutputValue will be written to the _EDMinterface_ current output device.

PARAMETERS_IN_XML_STRING

The first and only parameter transferred to the schema map will be interpreted as an XML formatted list of parameters.

PARAMETERS_IN_XML_FILE

The first and only parameter transferred to the schema map will be interpreted as the name of an XML formatted file on the local file system containing the all the input parameters.

 

Example


 

 EdmiError rstat, error;
 SdaiServerContext myContext;
 SdaiInteger nErr, nWrn;
  
 /* Define Remote Server Context */
 rstat = edmiDefineServerContext("MyRemoteServerContext",
 "Johnny", "Supervisor", "cf37ftr", 
 "TCP", "9090", "MyServerHost", 
 NULL, NULL, NULL, NULL, NULL, &myContext); 
  
 /* Compile the Express Source Schema */
 rstat = edmiRemoteDefineSchema(myContext, EXPRESS_SCHEMA_TYPE,
 "c:/data/myschema_v1.exp", "c:/temp/myschema_v1.dia", 
 "MYSCHEMA_V1", DELETING_EXISTING_SCHEMAS, 
 &nWrn, &nErr, NULL); 
  
 /* Compile the Express Target Schema */
 rstat = edmiRemoteDefineSchema(myContext, EXPRESS_SCHEMA_TYPE,
 "c:/data/myschema_v2.exp", "c:/temp/myschema_v2.dia", 
 "MYSCHEMA_V2", DELETING_EXISTING_SCHEMAS, 
 &nWrn, &nErr, NULL); 
  
 /* Compile the Express-X Mapping Schema */
 rstat = edmiRemoteDefineSchema(myContext,
 EXPRESS_X_SCHEMA_TYPE, "c:/data/myschema_v1_to_v2.xpx",  
 "c:/temp/myschema_v1_to_v2.dia", "MYSCHEMA_V1_TO_V2",  
 DELETING_EXISTING_SCHEMAS, &nWrn, &nErr, NULL); 
  
 /* Import the source model from p21 file */
 rstat = edmiRemoteReadStepFile(myContext, "DataRepository",
 "MYMODEL_V1", NULL, NULL, "c:/data/MyModel_v1.stp",
 "c:/temp/MyModel_v1.dia", "MYSCHEMA_V1", NULL,
 0, &nWrn, &nErr, &error, NULL); 
  
 if (!rstat) {
 /* Convert the source model to comply 
 with version 2 of mychema. Supply 
 two parameters. One boolean and 
 one integer */ 
 SdaiString _sysOutFile = "c:/temp/myschema_v1_to_v2.dia"; 
 SdaiString _usrOutFile = "c:/temp/myschema_v1_to_v2.out"; 
 SdaiString _srcModel = "MyModel_v1";
 SdaiString _tarModel = "MyModel_v2"; 
 SdaiString _repName = "DataRepository";
  
 tSdaiSourceOrTarget _srcTrg[2]; 
 SdaiSourceOrTarget _source[1] = {&_srcTrg[0]}; 
 SdaiSourceOrTarget _target[1] = {&_srcTrg[1]}; 
 tSdaiExecutionResult _exeRes; 
 tSdaiSelect _sel[2]; 
 SdaiSelect _param[2] = {&_sel[0], &_sel[1]};  
 tSdaiLogDescription _logDescr; 
  
 _logDescr.loggingOptions = FULL_LOG | LOG_TO_FILE; 
 _logDescr.sourceLinesToLog = NULL; 
 _logDescr.declarationsToLog = NULL; 
 _logDescr.systemOutputFile = _sysOutFile; 
 _logDescr.userOutputFile = _usrOutFile; 
 _logDescr.maxLogFileSize = 104857600; 
 _source[0]->repositoryName = _repName; 
 _source[0]->modelName, "MyModel_v1"; 
 _source[0]->options = REMOTE_MODEL; 
 _target[0]->repositoryName = _repName; 
 _target[0]->modelName, "MyModel_v2"; 
 _target[0]->options = REMOTE_MODEL; 
 _param[0]->nTypes = 0; 
 _param[0]->type = sdaiBOOLEAN; 
 _param[0]->typeList = NULL; 
 _param[0]->value.boolVal = sdaiFALSE; 
 _param[1]->nTypes = 0; 
 _param[1]->type = sdaiINTEGER; 
 _param[1]->typeList = NULL; 
 _param[1]->value.intVal = 128; 
  
 /* Convert between model versions */ 
 rstat = edmiRemoteConvertModelsEx(myContext, 1, _source,  
 "MYSCHEMA_V1_TO_V2", 1, _target, 0, NULL, 
 1, _param, DELETING_EXISTING_MODEL,  
 &_logDescr, &_exeRes, NULL, NULL); 
  
 /* Check execution result from 
 the virtual machine */ 
 printf("\nMyModel_v1 converted with:"); 
 printf("\n %d warnings", _exeRes.nWarnings); 
 printf("\n %d errors", _exeRes.nErrors); 
 printf("\nUser def. status: %d", _exeRes.userDefinedStatus);
 printf("\nSdai Error Code : %d", _exeRes.sdaiError);
  
 /* Export the target model to a p21 file */ 
 rstat = edmiRemoteWriteStepFile(myContext, "DataRepository", 
 "MYMODEL_V2", NULL, NULL, "c:/data/MyModel_v2.stp",
 "c:/temp/MyModel_v2.dia", NULL, 0, 6,
 &nWrn, &nErr, &error, NULL); 
 }
 . . .

 

See also

Filter by label

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