Description of grpc interface
There are two main ways to use the grpc interface.
- Share implementation with command file commands
- Direct methods on PDM objects
Command file commands and Python commands
When sharing the implementation with both command file and Python, the command objects must derive from RicfCommandObject. Each scriptable field must be made availabla using
the CAF_PDM_InitScriptableField macro.
Command file commands are read and parsed in RicfCommandFileReader::readCommands
Python command objects are read and parsed in RiaGrpcCommandService::Execute
Parameters to grpc commands are defined in Commands.proto The, ResInsight creates the file Commands_pb2.py based on the definitions in the proto file. Then these commands
are used from the relevant Python object.
Example
export_well_path_completions is a method defined in case.py. This method is a forward to ExportWellPathCompRequest defined in Commands_pb2.py.
Direct functions on PDM objects
Use CAF_PDM_InitScriptableObject to make a class available for scripting in Python. Then, fields can be made scriptable using CAF_PDM_InitScriptableField
A function can be made available in Python by adding extra function objects to an existing Pdm object by deriving from PdmObjectMethod. These are parsed, and added to the corresponding generated Python code in .
Example
RimSummaryCase is available as class SummaryCase in generated_classes.py. RimSummaryCase_summaryVectorValues is defining a function used to get vector values from a summary string. This function is available in through the wrapping of the Pdm data model in generated_classes.py as function summary_vector_values()