Документация
ОС Аврора 5.1.5

Унифицированная настройка приложений

Сервис managed-configuration предоставляет функциональность унифицированной настройки и конфигурации приложений.

Приложениям, использующим унифицированную настройку, необходимо указать разрешение ManagedConfiguration. Это разрешение позволяет приложению отправлять D-Bus вызовы объекту, соответствующему названию приложения, с интерфейсом ru.omp.ManagedConfiguration.Application1. Кроме того, данное разрешение предоставит приложению доступ к использованию библиотеки для работы с конфигурацией.

Для MDM-приложений будет доступно разрешение ManagedConfigurationAdmin, позволяющее отправлять D-Bus вызовы интерфейсу ru.omp.ManagedConfiguration.Admin1.

MDM-приложения могут работать с функциональностью унифицированной настройки, используя классы ManagedConfiguration, ManagedConfigurationManager, и ManagedConfigurationValue.

Формат файла конфигурационных параметров

Файл конфигурационных параметров — это договорённость о параметрах конфигурации и их типах между приложением и сервисом managed-configuration. При условии, что файл конфигурационных параметров соответствует заявленной грамматике, сервис managed-configuration гарантирует, что это соглашение будет соблюдаться. Все попытки установить значение, нарушающее грамматику, будут завершаться неудачей. В качестве формата для описания манифеста между сервисом и приложением используется XSD (XML Schema Definition).

Допустимый формат файла конфигурационных параметров

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
    targetNamespace="http://auroraos.ru/configuration-format.xsd"
    xmlns:aurora="http://auroraos.ru/configuration-format.xsd"
    elementFormDefault="qualified" attributeFormDefault="unqualified">

    <xs:simpleType name="keyType">
        <xs:restriction base="xs:string">
            <xs:pattern value="[a-zA-z_][a-zA-z0-9_]*"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="configurationType">
        <xs:restriction base="xs:string">
            <xs:enumeration value="Admin"/>
            <xs:enumeration value="User"/>
            <xs:enumeration value="Both"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:complexType name="baseConfigurationType">
        <xs:attribute name="key" type="aurora:keyType" use="required"/>
        <xs:attribute name="title" type="xs:string" use="required"/>
        <xs:attribute name="description" type="xs:string" use="required"/>
    </xs:complexType>

    <xs:complexType name="editableConfigurationType">
        <xs:complexContent>
            <xs:extension base="aurora:baseConfigurationType">
                <xs:attribute name="configurableBy" type="aurora:configurationType" use="required"/>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>

    <xs:complexType name="stringArrayType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="element" type="xs:string"/>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="integerArrayType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="element" type="xs:integer"/>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="boolArrayType">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="element" type="xs:boolean"/>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="optionType">
        <xs:attribute name="value" type="xs:string" use="required"/>
        <xs:attribute name="description" type="xs:string" use="required"/>
    </xs:complexType>

    <xs:complexType name="integerConfigurationType">
        <xs:complexContent>
            <xs:extension base="aurora:editableConfigurationType">
                <xs:sequence minOccurs="0" maxOccurs="1">
                    <xs:element name="defaultValue" type="xs:integer"/>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>

    <xs:complexType name="boolConfigurationType">
        <xs:complexContent>
            <xs:extension base="aurora:editableConfigurationType">
                <xs:sequence minOccurs="0" maxOccurs="1">
                    <xs:element name="defaultValue" type="xs:boolean" minOccurs="0" maxOccurs="1"/>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>

    <xs:complexType name="stringConfigurationType">
        <xs:complexContent>
            <xs:extension base="aurora:editableConfigurationType">
                <xs:sequence minOccurs="0" maxOccurs="1">
                    <xs:element name="defaultValue" type="xs:string" minOccurs="0" maxOccurs="1"/>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>

    <xs:complexType name="integerArrayConfigurationType">
        <xs:complexContent>
            <xs:extension base="aurora:editableConfigurationType">
                <xs:sequence minOccurs="0" maxOccurs="1">
                    <xs:element name="defaultValue" type="aurora:integerArrayType"/>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>

    <xs:complexType name="stringArrayConfigurationType">
        <xs:complexContent>
            <xs:extension base="aurora:editableConfigurationType">
                <xs:sequence minOccurs="0" maxOccurs="1">
                    <xs:element name="defaultValue" type="aurora:stringArrayType"/>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>

    <xs:complexType name="boolArrayConfigurationType">
        <xs:complexContent>
            <xs:extension base="aurora:editableConfigurationType">
                <xs:sequence minOccurs="0" maxOccurs="1">
                    <xs:element name="defaultValue" type="aurora:boolArrayType"/>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>

    <xs:complexType name="selectConfigurationType">
        <xs:complexContent>
            <xs:extension base="aurora:editableConfigurationType">
                <xs:sequence>
                    <xs:element name="option" type="aurora:optionType" minOccurs="1" maxOccurs="unbounded"/>
                    <xs:element name="defaultValue" type="xs:string" minOccurs="0" maxOccurs="1"/>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>

    <xs:complexType name="multiSelectConfigurationType">
        <xs:complexContent>
            <xs:extension base="aurora:editableConfigurationType">
                <xs:sequence>
                    <xs:element name="option" type="aurora:optionType" minOccurs="1" maxOccurs="unbounded"/>
                    <xs:element name="defaultValue" type="aurora:stringArrayType" minOccurs="0" maxOccurs="1"/>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>

    <xs:element name="integer" type="aurora:integerConfigurationType"/>
    <xs:element name="string" type="aurora:stringConfigurationType"/>
    <xs:element name="bool" type="aurora:boolConfigurationType"/>
    <xs:element name="integerArray" type="aurora:integerArrayConfigurationType"/>
    <xs:element name="stringArray" type="aurora:stringArrayConfigurationType"/>
    <xs:element name="boolArray" type="aurora:boolArrayConfigurationType"/>
    <xs:element name="select" type="aurora:selectConfigurationType"/>
    <xs:element name="multiSelect" type="aurora:multiSelectConfigurationType"/>

    <xs:group name="structureElements">
        <xs:sequence>
            <xs:choice>
                <xs:element ref="aurora:integer"/>
                <xs:element ref="aurora:string"/>
                <xs:element ref="aurora:bool"/>
                <xs:element ref="aurora:integerArray"/>
                <xs:element ref="aurora:stringArray"/>
                <xs:element ref="aurora:boolArray"/>
                <xs:element ref="aurora:select"/>
                <xs:element ref="aurora:multiSelect"/>
                <xs:element ref="aurora:structure"/>
            </xs:choice>
        </xs:sequence>
    </xs:group>

    <xs:complexType name="structureConfigurationType">
        <xs:complexContent>
            <xs:extension base="aurora:baseConfigurationType">
                <xs:group ref="aurora:structureElements" minOccurs="1" maxOccurs="unbounded"/>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>

    <xs:element name="structure" type="aurora:structureConfigurationType"/>

    <xs:complexType name="mainConfigurationType">
        <xs:group ref="aurora:structureElements" minOccurs="1" maxOccurs="unbounded"/>
    </xs:complexType>

    <xs:element name="configuration" type="aurora:mainConfigurationType"/>
</xs:schema>

Пример валидного файла конфигурационных параметров

<?xml version="1.0" encoding="UTF-8"?>
<configuration xmlns="http://auroraos.ru/configuration-format.xsd">
 
    <structure key="User" title="User Parameters"
        description="Parameters that can be changed by user">
<structure key="WithDefaultValue" title="Parameters With Default Value"
        description="Parameters with default value">
        <string key="StringParameter" title="String Parameter"
            description="String parameter" configurableBy="User">
            <defaultValue>DefaultString</defaultValue>
        </string>
        <integer key="IntegerParameter" title="Integer Parameter"
            description="Integer parameter" configurableBy="User">
            <defaultValue>42</defaultValue>
        </integer>
        <bool key="BoolParameter" title="Bool Parameter"
            description="Bool parameter" configurableBy="User">
            <defaultValue>true</defaultValue>
        </bool>
        <stringArray key="StringArrayParameter" title="String Array Parameter"
            description="String Array Parameter" configurableBy="User">
            <defaultValue>
                <element>Default</element>
                <element>String</element>
                <element>Array</element>
            </defaultValue>
        </stringArray>
        <integerArray key="IntegerArrayParameter" title="Integer Array Parameter"
            description="Integer array parameter" configurableBy="User">
            <defaultValue>
                <element>0</element>
                <element>1</element>
                <element>2</element>
            </defaultValue>
        </integerArray>
        <boolArray key="BoolArrayParameter" title="Bool Array Parameter"
            description="Bool Array Parameter" configurableBy="User">
            <defaultValue>
                <element>false</element>
                <element>false</element>
                <element>false</element>
            </defaultValue>
        </boolArray>
        <select key="SelectParameter" title="Select Parameter"
            description="Select parameter" configurableBy="User">
            <option value="Select1" description="First Select"/>
            <option value="Select2" description="Second Select"/>
            <option value="Select3" description="Third Select"/>
            <defaultValue>Select1</defaultValue>
        </select>
        <multiSelect key="MultiSelectParameter" title="Multi Select Parameter"
            description="Multi select parameter" configurableBy="User">
            <option value="MultiSelect1" description="First MultiSelect"/>
            <option value="MultiSelect2" description="Second MultiSelect"/>
            <option value="MultiSelect3" description="Third MultiSelect"/>
            <defaultValue>
                <element>MultiSelect1</element>
                <element>MultiSelect2</element>
                <element>MultiSelect3</element>
            </defaultValue>
        </multiSelect>
</structure>
</structure>
</configuration>

Библиотека для работы с конфигурацией

ОС Aurora предоставляет разработчикам приложений библиотеку Managed Configuration для управления конфигурацией приложения:

  • получение текущей конфигурации приложения;
  • изменение конфигурации приложения;
  • получение информации об изменениях конфигурации.

Все классы и функции, определённые в библиотеке, находятся в пространстве имён Aurora::Application::ManagedConfiguration.

Приложениям, использующим данную библиотеку, необходимо указать разрешение ManagedConfiguration.

Классы:

D-Bus-интерфейсы

Для взаимодействия EMM-решений и приложения имеется D-Bus служба ru.omp.ManagedConfiguration. Она обеспечивает взаимодействие между всеми сущностями, участвующими в унифицированной настройке приложения. Интерфейсы:

  • Admin1 для получения списка приложений, поддерживающих унифицированную настройку, получения текущей конфигурации конкретного приложения и формата его параметров.
  • Application1 для получения информации о текущих конфигурационных параметрах и отслеживания сигналов об изменении конфигурации во время исполнения.

Мы используем cookies для персонализации сайта и его более удобного использования. Вы можете запретить cookies в настройках браузера.

Пожалуйста ознакомьтесь с политикой использования cookies.