================================
BO4E Data Model Release Workflow
================================
Welcome to the BO4E Data Model release process!
This guide provides a straightforward explanation of how we release new versions of our data model, making it easier for you to integrate and use them in your preferred programming language.
Step-by-Step Guide
==================
1. Python Package Implementation
--------------------------------
* **Starting Point:** The journey begins with the implementation of the `BO4E data model as a Python package `_.
2. Release and Schema Generation
--------------------------------
* **Automatic Generation:** Upon releasing a new version of this Python package, a GitHub action automatically triggers.
* **JSON Schemas Creation:** This action generates JSON schemas, which are essential blueprints of the data model.
* **Storage:** These schemas are then stored in a dedicated repository, known as the `BO4E-Schemas Repository `_.
3. Optional Customization (BO4E-Schema-Tool)
--------------------------------------------
* **Flexibility in Data Fields:** Initially, the JSON schemas contain only optional fields.
* **Setting Required Fields:** If you need to designate certain fields as mandatory, you can use the `BO4E-Schema-Tool Repository `_.
* **Tool Functionality:** This repository houses a command-line interface (CLI) tool that assists in updating the JSON schema files to define required fields.
4. Code Generation (BO4E-Python-Generator)
------------------------------------------
* **Finalizing JSON Schemas:** Once you have the final version of the JSON schema files, it's time to generate code.
* **Pydantic Classes Creation:** Utilize tools like the `BO4E-Python-Generator `_, another CLI tool, to create Pydantic classes from the JSON schemas.
5. Ready to Use
---------------
* **Integration:** With these steps complete, the BO4E data model is now ready for use in your favorite programming language.
* **Seamless Application:** Implement the data model seamlessly in your projects and enjoy the efficiency it brings to your workflow.
.. note::
This workflow ensures that the BO4E data model remains flexible, adaptable, and easy to integrate into various programming environments.
Visualization of the release workflow
=====================================
.. image:: /_static/bo4e-release-workflow.png