Closed mpostol closed 5 years ago
I updated the Readme to list the step-by-step guide which should be used to build the NodeSet2.xml file from the ModelDesign files.
This build process is based on the official UA-ModelCompiler, where I opened a Pull Request to add docker support. My build process then uses the pre-built docker container. https://github.com/OPCFoundation/UA-ModelCompiler/pull/36
This pre-build docker container is using the current files of the UA-ModelCompiler master branch, therefore the ModelDesign files are validated against the schema file inside the docker container. I will try to keep this docker container aligned with the official master branch, until the PR is merged.
I'm happy for any feedback!
@Pro thanks for the answer. I know that you have done the best in this respect. I have raised this issue to address the more general problem, but your work is a perfect example to continue this discussion.
My concern is that the docker only solves the problem with software installation but not versioning.
@Pro let me stress it is not only your problem. My Address Space Model Designer has ModelCopiler embedded as a plugin and schema files as the internal resources. In my opinion, is a good example of dependency hell .
Form Part 6 we can learn that to avoid these problems we should use compiled against UANodeSet schema models, but it does not work for custom models.
Let me know what do you think about it. I promised to publish my ASMD as the open source but still have some doubts on how to do it. BTW have you tried this tool. In the meantime, I can provide you an appropriate license for free. Mariusz
@mpostol thanks for your comments!
My concern is that the docker only solves the problem with software installation but not versioning.
Models do have a version string. It's currently not used correspondingly in this repo, but these version numbers should be used, independent how the model is created.
- The ModelCompiler tool is not versioned
Correct, but that shouldn't be an issue with the model itself. There is one specific release version, and that is the only source of truth, even if it contains bugs.
- The repository doesn't publish binaries for ModelCompiler
Why should it? You can check out a specific commit id and then build the model compiler from there. The docker image itself is also based on a specific commit. Normally you do not include binaries in git...
- What does it mean official - the repository is maintained by a single person and as I know the process is not covered by any OPCF procedure
Official in the sense that it is used by the OPCF for the official OPC UA Nodesets.
- The main role for this code is to do generate officials NodeSet files for released models as the companion specification
Yes
- Using docker you can produce a bubble working for a particular model
No, docker is just used to have a precompiled version of the model compiler which can be used for any model. It lowers the efforts for new users, since you do not have to install mono and then build the compiler first.
- The generated files are applicable only for the OPC Unified Architecture .NET Standard
No, the generated files are according to the official NodeSet2 format. Many OPC UA stacks have an importer for that specific format.
- How to deal with versioning of the standard model that is based for any other models.
Versioning of the models itself is a hard task. I agree. There should be some kind of min/max supported version for models. But on the other hand, the model compiler will complain, if the model is not consistent.
@Pro let me stress it is not only your problem. My Address Space Model Designer has ModelCopiler embedded as a plugin and schema files as the internal resources. In my opinion, is a good example of dependency hell .
Form Part 6 we can learn that to avoid these problems we should use compiled against UANodeSet schema models, but it does not work for custom models.
Let me know what do you think about it. I promised to publish my ASMD as the open source but still have some doubts on how to do it.
I'd say you should include the most recent release of a specification, and maybe some way to manually define the UANodeSet repository. Then a user can select which version he wants to use.
It is a general question on how to represent the OPC UA Information Model. The
ModelDesign
files are validated against schema and XML files that are not in this repository. The files are not officially released and may change at any time. I have described this process in theMy concern is that his repository cannot be reused to generate the same results. It is marked
build success
but it is not clear hot to get this success. I will appreciate adding an explanation to the readme files related to the dependency chain.