Унифицированная настройка приложений
Сервис 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
.
Классы:
Configuration
— конфигурация приложения.ConfigurationManager
— управление конфигурацией приложения.
D-Bus-интерфейсы
Для взаимодействия EMM-решений и приложения имеется D-Bus служба ru.omp.ManagedConfiguration
.
Она обеспечивает взаимодействие между всеми сущностями, участвующими в унифицированной
настройке приложения.
Интерфейсы:
- Admin1 для получения списка приложений, поддерживающих унифицированную настройку, получения текущей конфигурации конкретного приложения и формата его параметров.
- Application1 для получения информации о текущих конфигурационных параметрах и отслеживания сигналов об изменении конфигурации во время исполнения.