2025-11-06 11:46:31 +01:00
|
|
|
|
Abstract presentation
|
|
|
|
|
|
=========================
|
|
|
|
|
|
|
2026-06-04 20:43:51 +02:00
|
|
|
|
Rougail is a robust and powerful, free/open-source configuration manager.
|
|
|
|
|
|
|
|
|
|
|
|
Rougail is:
|
|
|
|
|
|
|
|
|
|
|
|
- a CLI (command line interface) utility
|
|
|
|
|
|
- a `Python <https://www.python.org/>`_ library
|
|
|
|
|
|
- a YAML based description language
|
|
|
|
|
|
|
|
|
|
|
|
The language combines declaration, data validation, and templating in a single, declarative syntax.
|
2026-06-04 08:27:11 +02:00
|
|
|
|
|
|
|
|
|
|
It will be useful to:
|
|
|
|
|
|
|
2026-06-04 11:26:47 +02:00
|
|
|
|
- define variables (the structure) easily and their constraints
|
2026-06-04 08:27:11 +02:00
|
|
|
|
- loads those variables
|
|
|
|
|
|
- generate variables documentation
|
|
|
|
|
|
- loads variables' values
|
|
|
|
|
|
- validate the variables and the overall consistency handling system
|
|
|
|
|
|
- generate custom table views
|
|
|
|
|
|
- export to different common format (YAML, Ansible, ...)
|
|
|
|
|
|
- ...
|
2026-06-03 22:41:08 +02:00
|
|
|
|
|
|
|
|
|
|
Why another configuration manager?
|
2025-11-06 11:46:31 +01:00
|
|
|
|
-------------------------------------
|
|
|
|
|
|
|
2026-06-04 11:26:47 +02:00
|
|
|
|
Using Rougail tansforms end user consumer defined consistency rules into highly consistent business objects.
|
|
|
|
|
|
It's a configuration language designed to simplify and unify the way you define,
|
2026-06-06 20:28:11 +02:00
|
|
|
|
validate and generate configuration data.
|
2026-06-03 22:41:08 +02:00
|
|
|
|
|
|
|
|
|
|
In other word, making it easier to manage complex configurations across multiple environments.
|
|
|
|
|
|
|
2026-06-04 20:43:51 +02:00
|
|
|
|
You might tell me that other configuration management tools do the same thing. And that's partly true.
|
2026-06-03 22:41:08 +02:00
|
|
|
|
|
2026-06-04 20:43:51 +02:00
|
|
|
|
But Rougail adds interesting features in variable management that other projects don't have.
|
2026-06-08 18:48:12 +02:00
|
|
|
|
We are of course referring to the documentation management included directly in the configuration manager.
|
2026-06-04 20:43:51 +02:00
|
|
|
|
|
|
|
|
|
|
Your configuration is therefore consistent, easily accessible, and modifiable.
|
|
|
|
|
|
|
|
|
|
|
|
Not to mention the always up-to-date documentation and the information you provide to your users regarding changes to variables.
|
2026-06-03 22:41:08 +02:00
|
|
|
|
|
|
|
|
|
|
What kind of configuration manager?
|
|
|
|
|
|
---------------------------------------------
|
2025-11-06 11:46:31 +01:00
|
|
|
|
|
2026-06-04 11:26:47 +02:00
|
|
|
|
At the time of the design of Rougail, there were structuring choices
|
|
|
|
|
|
that defined the functioning of the tool.
|
2025-11-06 11:46:31 +01:00
|
|
|
|
|
2026-06-04 11:26:47 +02:00
|
|
|
|
The steps in Rougail can be explained as follows:
|
2025-11-06 11:46:31 +01:00
|
|
|
|
|
2026-06-08 18:48:12 +02:00
|
|
|
|
- loading the variable's :term:`structured data`
|
|
|
|
|
|
- loading the :term:`user data`
|
2026-06-04 11:26:47 +02:00
|
|
|
|
- reading, validating, exporting, documenting (and so on...) the data
|
2025-11-06 11:46:31 +01:00
|
|
|
|
|
2026-06-04 08:27:11 +02:00
|
|
|
|
Structured data
|
|
|
|
|
|
~~~~~~~~~~~~~~~~~
|
|
|
|
|
|
|
2026-06-04 11:26:47 +02:00
|
|
|
|
Structured data is also called the Rougail format.
|
2025-11-06 11:46:31 +01:00
|
|
|
|
|
2026-06-03 22:41:08 +02:00
|
|
|
|
.. glossary::
|
|
|
|
|
|
|
2026-06-04 08:27:11 +02:00
|
|
|
|
structured data
|
|
|
|
|
|
|
2026-06-06 08:12:07 +02:00
|
|
|
|
A variable-first :term:`DSL` (Domain-Specific Language) designed for describing variables, consistency
|
2026-06-04 08:27:11 +02:00
|
|
|
|
and describe the relationships between variables in a declarative style.
|
|
|
|
|
|
|
2026-06-06 08:12:07 +02:00
|
|
|
|
The language is a mix of YAML and Jinja Templating.
|
2025-11-06 11:46:31 +01:00
|
|
|
|
|
2026-06-08 18:48:12 +02:00
|
|
|
|
It goes beyond traditional schema languages (like `JSON Schema <https://json-schema.org/>`_,
|
|
|
|
|
|
`OpenAPI <https://www.openapis.org/>`_, `Cuelang <https://cuelang.org/>`_)
|
2026-06-04 08:27:11 +02:00
|
|
|
|
by combinig type systems, powerful validation, consistency of the configuration and documentation.
|
2025-11-06 11:46:31 +01:00
|
|
|
|
|
2026-06-04 11:26:47 +02:00
|
|
|
|
Structured data are commonly placed in :term:`structure files <structure file>`.
|
2025-11-06 11:46:31 +01:00
|
|
|
|
|
2026-06-03 22:41:08 +02:00
|
|
|
|
User data
|
2026-06-04 08:27:11 +02:00
|
|
|
|
~~~~~~~~~~
|
2025-11-06 11:46:31 +01:00
|
|
|
|
|
|
|
|
|
|
.. glossary::
|
|
|
|
|
|
|
2026-06-03 22:41:08 +02:00
|
|
|
|
user data
|
|
|
|
|
|
|
2026-06-06 20:28:11 +02:00
|
|
|
|
User data, as opposed to structured data, are data that only concern the assignment of values
|
2026-06-03 22:41:08 +02:00
|
|
|
|
and not the consistency of the variables between them.
|
|
|
|
|
|
|
|
|
|
|
|
The variable's values are also called **user values**.
|
2026-06-04 08:27:11 +02:00
|
|
|
|
|
2026-06-03 22:41:08 +02:00
|
|
|
|
The consistency field is outside of the user data scope.
|
2026-06-06 20:28:11 +02:00
|
|
|
|
The consistency is handled in the :term:`structured data <structured data>`\ 's scope.
|
2026-06-03 22:41:08 +02:00
|
|
|
|
|
|
|
|
|
|
Here a some user data examples:
|
|
|
|
|
|
|
|
|
|
|
|
- configuration files
|
|
|
|
|
|
- environment variables
|
|
|
|
|
|
- external sources
|
|
|
|
|
|
- command-line options
|
|
|
|
|
|
- a form
|
|
|
|
|
|
|
|
|
|
|
|
Output
|
|
|
|
|
|
~~~~~~~
|
|
|
|
|
|
|
2026-06-06 23:22:00 +02:00
|
|
|
|
.. glossary::
|
|
|
|
|
|
|
|
|
|
|
|
output
|
2026-06-04 08:27:11 +02:00
|
|
|
|
|
2026-06-06 23:22:00 +02:00
|
|
|
|
Structured and user data form a coherent configuration useful for different purposes.
|
|
|
|
|
|
|
|
|
|
|
|
Output is here to define what kind of data we want.
|
2026-06-04 08:27:11 +02:00
|
|
|
|
|
2026-06-04 11:26:47 +02:00
|
|
|
|
Here are some output examples:
|
2026-06-03 22:41:08 +02:00
|
|
|
|
|
2026-06-04 12:18:04 +02:00
|
|
|
|
- :term:`Tiramisu` object
|
2026-06-04 11:26:47 +02:00
|
|
|
|
- JSON extraction
|
|
|
|
|
|
- Ansible inventory extraction
|
2026-06-04 08:27:11 +02:00
|
|
|
|
- documentation
|
|
|
|
|
|
- custom table views
|
2026-06-03 22:41:08 +02:00
|
|
|
|
|
2026-06-04 13:32:12 +02:00
|
|
|
|
.. list-table::
|
|
|
|
|
|
:header-rows: 1
|
2026-06-03 22:41:08 +02:00
|
|
|
|
|
2026-06-04 20:43:51 +02:00
|
|
|
|
* - **Step**
|
2026-06-04 13:32:12 +02:00
|
|
|
|
|
2026-06-04 20:43:51 +02:00
|
|
|
|
* - **Structured data**
|
2026-06-04 13:32:12 +02:00
|
|
|
|
|
2026-06-04 20:43:51 +02:00
|
|
|
|
* - **User data**
|
2026-06-04 13:32:12 +02:00
|
|
|
|
|
2026-06-04 20:43:51 +02:00
|
|
|
|
* - **Output**
|
2026-06-03 22:41:08 +02:00
|
|
|
|
|
|
|
|
|
|
What kind of actor?
|
|
|
|
|
|
---------------------
|
|
|
|
|
|
|
|
|
|
|
|
It's clear that Rougail can be used in many contexts.
|
|
|
|
|
|
|
2026-06-04 08:27:11 +02:00
|
|
|
|
Here we'll define actor names. Obviously, these aren't the only possible actors.
|
2026-06-03 22:41:08 +02:00
|
|
|
|
|
2026-06-04 11:26:47 +02:00
|
|
|
|
We're just defining the actors within the Rougail context.
|
|
|
|
|
|
Choice your own actor name if you wish to personnalize in your specific context.
|
2026-06-03 22:41:08 +02:00
|
|
|
|
|
|
|
|
|
|
.. glossary::
|
|
|
|
|
|
|
|
|
|
|
|
integrator
|
|
|
|
|
|
|
2026-06-04 13:32:12 +02:00
|
|
|
|
An integrator in the Rougail field is the person who writes the :term:`structured <structured data>`\ .
|
2026-06-03 22:41:08 +02:00
|
|
|
|
He has the responsibility of the integration process, that is,
|
|
|
|
|
|
he defines the variables and the relationship between them, the variables that are allowed
|
|
|
|
|
|
(or not) to be set, and so on. His responsabilites are the **structuration** and the **consistency**
|
|
|
|
|
|
of the organisation of the variables between them.
|
|
|
|
|
|
|
|
|
|
|
|
.. glossary::
|
|
|
|
|
|
|
|
|
|
|
|
operator
|
|
|
|
|
|
|
|
|
|
|
|
An operator in the Rougail field is the person who assigns :term:`value`\ s to the pre-defined variables,
|
|
|
|
|
|
his responsabilities are to set variable values correctly.
|
|
|
|
|
|
|
2026-06-08 18:48:12 +02:00
|
|
|
|
The user :term:`value`\ s, that is the values that have been set by the :term:`operator`, are of course type validated.
|
2026-06-03 22:41:08 +02:00
|
|
|
|
The type validation is driven by the definitions in the :term:`structure file <structure file>`.
|
|
|
|
|
|
|
2026-06-04 13:32:12 +02:00
|
|
|
|
Here is a reminder of the different steps:
|
|
|
|
|
|
|
2026-06-06 12:11:48 +02:00
|
|
|
|
- the :term:`integrator` defines the structure
|
|
|
|
|
|
- the :term:`operator` sets the value
|
|
|
|
|
|
- the :term:`integrator` and/or the :term:`operator` use the output
|
2026-06-04 13:32:12 +02:00
|
|
|
|
|
2026-06-04 08:27:11 +02:00
|
|
|
|
.. list-table::
|
|
|
|
|
|
:header-rows: 1
|
|
|
|
|
|
|
2026-06-04 20:43:51 +02:00
|
|
|
|
* - **Step**
|
2026-06-04 08:27:11 +02:00
|
|
|
|
- Actor
|
|
|
|
|
|
|
2026-06-04 20:43:51 +02:00
|
|
|
|
* - **Structured data**
|
2026-06-04 08:27:11 +02:00
|
|
|
|
- Integrator
|
|
|
|
|
|
|
2026-06-04 20:43:51 +02:00
|
|
|
|
* - **User data**
|
2026-06-04 08:27:11 +02:00
|
|
|
|
- Operator
|
|
|
|
|
|
|
2026-06-04 20:43:51 +02:00
|
|
|
|
* - **Output**
|
2026-06-04 13:32:12 +02:00
|
|
|
|
- - Operator
|
|
|
|
|
|
- Integrator
|
2026-06-04 08:27:11 +02:00
|
|
|
|
|
2026-06-07 21:08:47 +02:00
|
|
|
|
Variable lifecyle
|
2026-06-03 22:41:08 +02:00
|
|
|
|
----------------------
|
|
|
|
|
|
|
2026-06-04 11:26:47 +02:00
|
|
|
|
Rougail's a configuration language and data validation tool is designed
|
|
|
|
|
|
to simplify defining, validating, and generating structured configuration and data.
|
2026-06-03 22:41:08 +02:00
|
|
|
|
|
2026-06-04 11:26:47 +02:00
|
|
|
|
Rougail aims at defining variables.
|
2026-06-03 22:41:08 +02:00
|
|
|
|
|
2026-06-07 21:08:47 +02:00
|
|
|
|
Here we are talking about the variable lifecyle.
|
2026-06-03 22:41:08 +02:00
|
|
|
|
|
2026-06-07 21:08:47 +02:00
|
|
|
|
The variable’s lifecyle is the period between its creation and its destruction.
|
2026-06-03 22:41:08 +02:00
|
|
|
|
|
2026-06-04 20:43:51 +02:00
|
|
|
|
The lifecycle of a variable includes the generic stages (like, in the C language):
|
2026-06-03 22:41:08 +02:00
|
|
|
|
|
2026-06-04 20:43:51 +02:00
|
|
|
|
- Creation: variables are assigned a name and a type
|
2026-06-07 21:08:47 +02:00
|
|
|
|
- Initialization: they are assigned their first value (we call it :term:`default value`)
|
2026-06-04 20:43:51 +02:00
|
|
|
|
- Assignment: the variable's value is modified
|
|
|
|
|
|
- Reading: the variable's value is used
|
|
|
|
|
|
- Destruction: the variable terminates upon the destruction of the object
|
2026-06-03 22:41:08 +02:00
|
|
|
|
|
|
|
|
|
|
But other concepts are included in the lifecycle:
|
|
|
|
|
|
|
2026-06-04 20:43:51 +02:00
|
|
|
|
- Permission: properties describe access constraints
|
|
|
|
|
|
- Documentation: informations for variable documentation like description or help. Those informations are used to build documentation, changelog, ...
|
|
|
|
|
|
- Specialization: define usage, selection,...
|
2026-06-03 22:41:08 +02:00
|
|
|
|
|
|
|
|
|
|
.. list-table::
|
|
|
|
|
|
:header-rows: 1
|
|
|
|
|
|
|
2026-06-04 20:43:51 +02:00
|
|
|
|
* - **Step**
|
2026-06-03 22:41:08 +02:00
|
|
|
|
- Actor
|
2026-06-07 21:08:47 +02:00
|
|
|
|
- Lifecyle
|
2026-06-03 22:41:08 +02:00
|
|
|
|
|
2026-06-04 20:43:51 +02:00
|
|
|
|
* - **Structured data**
|
2026-06-03 22:41:08 +02:00
|
|
|
|
- Integrator
|
2026-06-04 20:43:51 +02:00
|
|
|
|
- - Creation
|
|
|
|
|
|
- Initialization
|
2026-06-03 22:41:08 +02:00
|
|
|
|
|
2026-06-04 20:43:51 +02:00
|
|
|
|
* - **User data**
|
2026-06-03 22:41:08 +02:00
|
|
|
|
- Operator
|
2026-06-04 13:32:12 +02:00
|
|
|
|
- - Assignment
|
|
|
|
|
|
- Permission
|
2026-06-03 22:41:08 +02:00
|
|
|
|
|
2026-06-04 20:43:51 +02:00
|
|
|
|
* - **Output**
|
2026-06-04 13:32:12 +02:00
|
|
|
|
- - Operator
|
|
|
|
|
|
- Integrator
|
|
|
|
|
|
- - Reading
|
|
|
|
|
|
- Permission
|
|
|
|
|
|
- Documentation
|
|
|
|
|
|
- Specialization
|
2026-06-03 22:41:08 +02:00
|
|
|
|
|
2026-06-06 23:22:00 +02:00
|
|
|
|
.. _variable_mutability:
|
|
|
|
|
|
|
2026-06-04 08:27:11 +02:00
|
|
|
|
Variable mutability
|
|
|
|
|
|
---------------------
|
2026-06-03 22:41:08 +02:00
|
|
|
|
|
2026-06-04 08:27:11 +02:00
|
|
|
|
Structured data
|
|
|
|
|
|
~~~~~~~~~~~~~~~~
|
2026-06-03 22:41:08 +02:00
|
|
|
|
|
2026-06-06 12:11:48 +02:00
|
|
|
|
When the :term:`integrator` defines the structure, variables are mutable.
|
2026-06-03 22:41:08 +02:00
|
|
|
|
|
2026-06-04 11:26:47 +02:00
|
|
|
|
Even if the default behavior is inconsistent, like when there is a conflict between multiple declarations for the same variable,
|
2026-06-03 22:41:08 +02:00
|
|
|
|
|
2026-06-04 11:26:47 +02:00
|
|
|
|
it's possible to explicitly allow to unify (combine) multiple variables declarations.
|
2026-06-03 22:41:08 +02:00
|
|
|
|
|
|
|
|
|
|
User data
|
|
|
|
|
|
~~~~~~~~~~
|
|
|
|
|
|
|
2026-06-04 11:26:47 +02:00
|
|
|
|
At the user data level, it's no more possible to modify any variable definition.
|
|
|
|
|
|
Here we are just talking about variable's values.
|
2026-06-03 22:41:08 +02:00
|
|
|
|
|
|
|
|
|
|
Output
|
|
|
|
|
|
~~~~~~~
|
|
|
|
|
|
|
2026-06-04 08:27:11 +02:00
|
|
|
|
Variable definition settings are immutable.
|
2026-06-03 22:41:08 +02:00
|
|
|
|
|
|
|
|
|
|
.. list-table::
|
|
|
|
|
|
:header-rows: 1
|
|
|
|
|
|
|
2026-06-04 20:43:51 +02:00
|
|
|
|
* - **Step**
|
2026-06-03 22:41:08 +02:00
|
|
|
|
- Actor
|
2026-06-07 21:08:47 +02:00
|
|
|
|
- Lifecyle
|
2026-06-04 13:32:12 +02:00
|
|
|
|
- Mutability
|
2026-06-03 22:41:08 +02:00
|
|
|
|
|
2026-06-04 20:43:51 +02:00
|
|
|
|
* - **Structured data**
|
2026-06-03 22:41:08 +02:00
|
|
|
|
- Integrator
|
2026-06-04 13:32:12 +02:00
|
|
|
|
- - Creation
|
2026-06-04 20:43:51 +02:00
|
|
|
|
- Initialization
|
2026-06-03 22:41:08 +02:00
|
|
|
|
- Mutable
|
|
|
|
|
|
|
2026-06-04 20:43:51 +02:00
|
|
|
|
* - **User data**
|
2026-06-03 22:41:08 +02:00
|
|
|
|
- Operator
|
2026-06-04 13:32:12 +02:00
|
|
|
|
- - Assignment
|
|
|
|
|
|
- Permission
|
2026-06-03 22:41:08 +02:00
|
|
|
|
- Immutable
|
|
|
|
|
|
|
2026-06-04 20:43:51 +02:00
|
|
|
|
* - **Output**
|
2026-06-04 13:32:12 +02:00
|
|
|
|
- - Operator
|
|
|
|
|
|
- Integrator
|
|
|
|
|
|
- - Reading
|
|
|
|
|
|
- Permission
|
|
|
|
|
|
- Documentation
|
|
|
|
|
|
- Specialization
|
2026-06-03 22:41:08 +02:00
|
|
|
|
- Immutable
|
|
|
|
|
|
|
2026-06-04 08:27:11 +02:00
|
|
|
|
Value access
|
|
|
|
|
|
-------------
|
|
|
|
|
|
|
2026-06-04 11:26:47 +02:00
|
|
|
|
In the :term:`structured data` step, there is no value, strictly speaking.
|
|
|
|
|
|
The values set are default values.
|
|
|
|
|
|
Like other parameters, the default value is explicitly mutable.
|
2026-06-04 08:27:11 +02:00
|
|
|
|
|
|
|
|
|
|
In the `user data` step, we can modify the values. That's precisely the purpose of this step.
|
2026-06-04 11:26:47 +02:00
|
|
|
|
The configuration is said to be in :term:`read write mode`.
|
2026-06-04 08:27:11 +02:00
|
|
|
|
|
|
|
|
|
|
But at the `output` step, it is obviously no longer possible to modify the value.
|
2026-06-04 11:26:47 +02:00
|
|
|
|
The configuration is said to be in :term:`read only mode`.
|
2026-06-04 08:27:11 +02:00
|
|
|
|
|
|
|
|
|
|
.. attention::
|
|
|
|
|
|
It is important not to confuse `value` and `calculated value`.
|
|
|
|
|
|
The result of a calculation can change over time.
|
|
|
|
|
|
In this case, the value does indeed correspond to the result of the calculation.
|
2026-06-03 22:41:08 +02:00
|
|
|
|
|
|
|
|
|
|
.. list-table::
|
|
|
|
|
|
:header-rows: 1
|
|
|
|
|
|
|
2026-06-04 20:43:51 +02:00
|
|
|
|
* - **Step**
|
2026-06-03 22:41:08 +02:00
|
|
|
|
- Actor
|
2026-06-07 21:08:47 +02:00
|
|
|
|
- Lifecyle
|
2026-06-04 13:32:12 +02:00
|
|
|
|
- Mutability
|
2026-06-04 08:27:11 +02:00
|
|
|
|
- Value
|
2026-06-03 22:41:08 +02:00
|
|
|
|
|
2026-06-04 20:43:51 +02:00
|
|
|
|
* - **Structured data**
|
2026-06-03 22:41:08 +02:00
|
|
|
|
- Integrator
|
2026-06-04 13:32:12 +02:00
|
|
|
|
- - Creation
|
2026-06-04 20:43:51 +02:00
|
|
|
|
- Initialization
|
2026-06-03 22:41:08 +02:00
|
|
|
|
- Mutable
|
2026-06-04 08:27:11 +02:00
|
|
|
|
- Mutable default value
|
2026-06-03 22:41:08 +02:00
|
|
|
|
|
2026-06-04 20:43:51 +02:00
|
|
|
|
* - **User data**
|
2026-06-03 22:41:08 +02:00
|
|
|
|
- Operator
|
2026-06-04 13:32:12 +02:00
|
|
|
|
- - Assignment
|
|
|
|
|
|
- Permission
|
2026-06-03 22:41:08 +02:00
|
|
|
|
- Immutable
|
|
|
|
|
|
- Read write
|
|
|
|
|
|
|
2026-06-04 20:43:51 +02:00
|
|
|
|
* - **Output**
|
2026-06-04 13:32:12 +02:00
|
|
|
|
- - Operator
|
|
|
|
|
|
- Integrator
|
|
|
|
|
|
- - Reading
|
|
|
|
|
|
- Permission
|
|
|
|
|
|
- Documentation
|
|
|
|
|
|
- Specialization
|
2026-06-03 22:41:08 +02:00
|
|
|
|
- Immutable
|
|
|
|
|
|
- Read only
|
|
|
|
|
|
|
|
|
|
|
|
Access control
|
|
|
|
|
|
-----------------
|
2025-11-06 11:46:31 +01:00
|
|
|
|
|
2026-06-04 08:27:11 +02:00
|
|
|
|
.. FIXME: duplicate from tutorial/properties.rst
|
|
|
|
|
|
|
|
|
|
|
|
Access control is achieved through `properties`.
|
|
|
|
|
|
|
|
|
|
|
|
.. glossary::
|
|
|
|
|
|
|
|
|
|
|
|
property
|
|
|
|
|
|
|
|
|
|
|
|
A property is a state (`disabled`, `mandatory`, `frozen`, `hidden`...)
|
|
|
|
|
|
of a family or a variable.
|
|
|
|
|
|
These properties change the usual behavior of a variable or family.
|
|
|
|
|
|
|
|
|
|
|
|
The properties can be defined permanently or according to the result of a calculation.
|
|
|
|
|
|
|
2026-06-06 09:34:05 +02:00
|
|
|
|
There are two main properties.
|
2026-06-04 08:27:11 +02:00
|
|
|
|
|
2026-06-06 19:22:36 +02:00
|
|
|
|
.. _hidden:
|
|
|
|
|
|
|
2026-06-04 08:27:11 +02:00
|
|
|
|
Hidden variable
|
|
|
|
|
|
~~~~~~~~~~~~~~~
|
|
|
|
|
|
|
2026-06-08 18:48:12 +02:00
|
|
|
|
A `hidden` variable is a variable whose value cannot be modified by the :term:`operator`.
|
2026-06-04 08:27:11 +02:00
|
|
|
|
|
2026-06-06 12:11:48 +02:00
|
|
|
|
This could be an internal variable used by the :term:`integrator` that is not supposed to change.
|
2026-06-04 08:27:11 +02:00
|
|
|
|
|
|
|
|
|
|
Or a variable that only makes sense in a particular context. Therefore, this variable can be hidden and then unhidden depending on the context.
|
|
|
|
|
|
|
2026-06-06 19:22:36 +02:00
|
|
|
|
.. _disabled:
|
|
|
|
|
|
|
2026-06-04 08:27:11 +02:00
|
|
|
|
Disabled variable
|
|
|
|
|
|
~~~~~~~~~~~~~~~~~
|
|
|
|
|
|
|
2026-06-08 18:48:12 +02:00
|
|
|
|
A `disabled` variable is a variable that will not be accessible to any of the actors (:term:`integrator` and :term:`operator`).
|
2026-06-04 08:27:11 +02:00
|
|
|
|
|
|
|
|
|
|
This property is generally used dynamically to remove access to the variable depending on the context.
|
|
|
|
|
|
|
2026-06-06 08:12:07 +02:00
|
|
|
|
A picture is worth a thousand words:
|
|
|
|
|
|
|
|
|
|
|
|
.. image:: images/dessin.png
|
|
|
|
|
|
|
2026-06-03 22:41:08 +02:00
|
|
|
|
.. list-table::
|
|
|
|
|
|
:header-rows: 1
|
2025-11-06 11:46:31 +01:00
|
|
|
|
|
2026-06-04 20:43:51 +02:00
|
|
|
|
* - **Step**
|
2026-06-03 22:41:08 +02:00
|
|
|
|
- Actor
|
2026-06-07 21:08:47 +02:00
|
|
|
|
- Lifecyle
|
2026-06-04 13:32:12 +02:00
|
|
|
|
- Mutability
|
2026-06-04 08:27:11 +02:00
|
|
|
|
- Value
|
2026-06-03 22:41:08 +02:00
|
|
|
|
- Access control
|
2025-11-06 11:46:31 +01:00
|
|
|
|
|
2026-06-04 20:43:51 +02:00
|
|
|
|
* - **Structured data**
|
2026-06-03 22:41:08 +02:00
|
|
|
|
- Integrator
|
2026-06-04 13:32:12 +02:00
|
|
|
|
- - Creation
|
2026-06-04 20:43:51 +02:00
|
|
|
|
- Initialization
|
2026-06-03 22:41:08 +02:00
|
|
|
|
- Mutable
|
2026-06-04 08:27:11 +02:00
|
|
|
|
- Mutable default value
|
2026-06-03 22:41:08 +02:00
|
|
|
|
- N/A
|
2025-11-06 11:46:31 +01:00
|
|
|
|
|
2026-06-04 20:43:51 +02:00
|
|
|
|
* - **User data**
|
2026-06-03 22:41:08 +02:00
|
|
|
|
- Operator
|
2026-06-04 13:32:12 +02:00
|
|
|
|
- - Assignment
|
|
|
|
|
|
- Permission
|
2026-06-03 22:41:08 +02:00
|
|
|
|
- Immutable
|
|
|
|
|
|
- Read write
|
2026-06-04 13:32:12 +02:00
|
|
|
|
- - hidden
|
|
|
|
|
|
- disabled
|
2025-11-06 11:46:31 +01:00
|
|
|
|
|
2026-06-04 20:43:51 +02:00
|
|
|
|
* - **Output**
|
2026-06-04 13:32:12 +02:00
|
|
|
|
- - Operator
|
|
|
|
|
|
- Integrator
|
|
|
|
|
|
- - Reading
|
|
|
|
|
|
- Permission
|
|
|
|
|
|
- Documentation
|
|
|
|
|
|
- Specialization
|
2026-06-03 22:41:08 +02:00
|
|
|
|
- Immutable
|
|
|
|
|
|
- Read only
|
2026-06-04 13:32:12 +02:00
|
|
|
|
- - disabled
|
|
|
|
|
|
- mandatory
|
2026-06-05 15:19:18 +02:00
|
|
|
|
|