基于AAS元模型生成不同的实现和模式。
项目描述
Aas-core-codegen
为不同的编程环境和模式生成代码
以处理资产管理系统
基于简化的Python元模型。
动机
元模型仍然处于频繁变动的阶段。然而,我们需要不同语言的SDK(C#、C++、C、Java、Golang、Erlang等)以及不同的模式(JSON模式、XSD、RDF等)。跟上变化很困难,耗时且容易出错,因为每个SDK和模式都需要独立审查。
为了使元模型、SDK和模式的整个开发周期更具可维护性,我们编写了一个代码和模式生成器。我们使用Python语言的子集编写元模型,解析它,并根据此元模型生成不同语言和模式的代码。
因此,我们可以轻松扩展到许多语言和模式。
以下是一个图解整个过程的图表
关于稳定性的警告
虽然我们旨在使生成器的长期稳定性,但请注意,当前元模型的版本3候选版本2(V3RC2)变化太大,无法对短期稳定性做出任何明确声明。
例如,基本类型的集合尚未定义,而且关于这个集合的讨论正在进行中。同样,关于引用的定义以及我们如何处理它们也在进行讨论。
此外,序列化方法也尚未最终确定。例如,当前JSON模式不允许单遍序列化(也称为基于流的序列化)。我们正在UAG Verwaltungsschale讨论使用带有模型类型前缀的JSON元组,而不是JSON对象,但这项讨论还处于早期阶段。
只要V3RC2不稳定,生成的代码和模式都不足以用于任何严肃的应用(无论是实验性的还是生产性的)。
安装
单文件发布
请从GitHub发布页面下载并解压缩最新版本。
从PyPI
该工具也可在PyPI上找到。
创建虚拟环境
python -m venv venv-aas-core-codegen
激活它(在Windows上)
venv-venv-aas-core-codegen\Scripts\activate
或在Linux和OS X上
source venv-aas-core-codegen/bin/activate
在虚拟环境中安装工具
pip3 install aas-core-codegen
用法
将元模型和实现特定类和函数的代码片段写在某处。例如,以我们的test元模型为灵感来编写元模型和片段。
确保您在已安装生成器的虚拟环境中。或者,如果您使用的是二进制发布版,请确保发布版在您的路径中。
使用适当的目标调用生成器
aas-core-codegen \
--model_path path/to/meta_model.py \
--snippets_dir path/to/snippets \
--output_dir path/to/output \
--target csharp
--help
usage: aas-core-codegen [-h] --model_path MODEL_PATH --snippets_dir
SNIPPETS_DIR --output_dir OUTPUT_DIR --target
{csharp,jsonschema,rdf_shacl,xsd} [--version]
Generate different implementations and schemas based on an AAS meta-model.
optional arguments:
-h, --help show this help message and exit
--model_path MODEL_PATH
path to the meta-model
--snippets_dir SNIPPETS_DIR
path to the directory containing implementation-
specific code snippets
--output_dir OUTPUT_DIR
path to the generated code
--target {csharp,jsonschema,rdf_shacl,xsd}
target language or schema
--version show the current version and exit
版本控制
我们仍然不清楚如何对生成器进行版本控制。目前,我们使用带有0.0前缀的宽松增量版本控制(0.0.1、0.0.2等)。
变更日志可在CHANGELOG.rst中找到。
贡献
功能请求或错误报告总是非常受欢迎!
代码贡献也受欢迎!请参阅CONTRIBUTING.rst以获取开发指南。
项目详情
aas-core-codegen-0.0.15.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 114871e695f66462312984024b3945ad6882757af281ee958ad06e7539797d7f |
|
MD5 | 072ae56d5d6719143740a90ea2e79879 |
|
BLAKE2b-256 | e1db74a13ceb6210b3574458134735714b8254d729b92b4765e3cf3a46728a1c |