F2I-Consulting / fesapi

DevKit for ENERGISTICS™ data standards (mainly RESQML™), multi-languages (C++, Java, C#, Python)
Apache License 2.0
32 stars 24 forks source link

Unable to create Property Kind for WITSML Channel. #315

Closed Hoosayin closed 6 months ago

Hoosayin commented 1 year ago

Hi Philippe!

I am following FESAPI example and I am trying to serialize wells. I am using RESQML 2.0 and EML 2.0 as default standards for DataObjectRepository. However, when I try to create Property Kind for WITSML Channel, it throws invalid argument exception since I am using EML 2.0 standard, while the constructor of Property Kind is guarded by the macro WITH_RESQML2_2. Following is the code snippet where the exception is thrown:

image

Following is the code where Channel Property Kind is being created:

image

How can we create WITSML objects if we are using RESQML 2.0 and EML 2.0 with FESAPI v2.7.1.0?

Hoosayin commented 1 year ago

Sorry for inconvenience. This is resolved by using overloaded member function:

image

philippeVerney commented 1 year ago

Hi Hussain,

You got it right! However:

Hoosayin commented 1 year ago

Thanks for your response. However, I didn't get the point.

  1. How can I do the same thing, "serializeWitsmlWells()", if I am using RESQML 2.0 and EML 2.0 with FESAPI v2.7.1.0? Do I have to use WITSML 2.0 classes? If so, I guess they are not available in FESAPI v2.7.1.0.

As for now, I am using overloaded member function for creating Property Kind, the program seems to execute well, the data is written successfully. But, when I try to read the title of WITSML Well Bore that is associated with Well Bore Feature, I get exception because gsoapProxy2_3 is a nullptr.

image

Here is the snippet where I am reading the title:

image

If I skip this part, I am able to read everything else including Trajectory's MD Values and XYZ Points,

  1. Also, when serializing WITSML Wells in Java, it seems like "eml23UnitOfMeasure" and "eml23DataIndexKind" are not defined in "com.f2i_consulting.fesapi". FESAPI v2.7.1.0 JAR

image

philippeVerney commented 1 year ago

So my very first question is "why do you use WITSML?" If the answer is "because it is in the example", please do not follow blindly the example and consider not using WITSML at all. I am afraid that you want RESQML transfer but that you use WITSML cause of the example...

Otherwise, I keep this issue opened to look at the particular bug you raise (WITSML in FESAPI is not as tested as RESQML in FESAPI)

Hoosayin commented 1 year ago

To be honest, I am following the example blindly. Actually, I am trying to write Wellbore Feature, Wellbore Interpretation, Wellbore Trajectory Representation, and Wellbore Frame Representation, and read them back from the server. I have achieved this already. Since, I don't know why WITSML part is there. In order to not miss anything, I was trying serialize WITSML wells too. I guess, I can skip the WITSML part. However, skipping WITSML leaves my Wellbore Feature as a Partial Object. Is it safe?

philippeVerney commented 1 year ago

If you don't need WITSML, my recommendation would be for you to skip it if you are RESQML focused. The RESQML WellboreFeature should not be partial when you skip WITSML well. This bug has been solved in FESAPI 2.5 AFAIK.

If you want WITSML support what is tested as of today is:

All the WITSML other dataobjects are subject to issues. These issues can of course be reported here (and solved) and I thank you for that.

Hoosayin commented 1 year ago

Thanks for your recommendation. You're welcome. I'll keep reporting if I encounter more issues. I really appreciate your prompt replies.