Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?xml version="1.0" encoding="UTF-8"?>
- <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:noNamespaceSchemaLocation="../../../../../../target/classes/advimport/schema1.xsd"
- save-log="true" threads-number="1">
- <mode>CREATE</mode>
- <mode>UPDATE</mode>
- <!-- Параметры подключения AD. Необходимо заполнить перед использованием конфигурации -->
- <!-- Указывается код подключения к LDAP -->
- <parameter name="connectionCode">ldap</parameter>
- <parameter name="ldapDomain">filuet.local</parameter>
- <!-- Задает код отдела являющегося корневым отделом импорта -->
- <parameter name="rootDN">OU=Organization,OU=Users,OU=Root,DC=Filuet,DC=local</parameter>
- <!-- Параметры импорта -->
- <!-- Указываем uuid компании, чтобы заархивировались все отделы и сотрудники с непустым idHolder, не участвовавшие в импорте -->
- <parameter name="importRootUUID">root$101</parameter>
- <!-- Задает метакласс импортируемых отделов -->
- <parameter name="ouMetaClass">ou$ou</parameter>
- <!-- Задает код атрибута отделов в котором хранится внешний идентификатор -->
- <parameter name="ouIdHolder">idHolder</parameter>
- <!-- Задает метакласс импортируемых сотрудников -->
- <parameter name="employeeMetaClass">employee$employee</parameter>
- <!-- Задает код атрибута сотрудников в котором хранится внешний идентификатор -->
- <parameter name="employeeIdHolder">idHolder</parameter>
- <!-- Задает DN, который будет проигнорирован (он и все вложенные объекты не будут проимпортированы). -->
- <!-- <parameter name="ignoredOU01"></parameter> -->
- <!-- Импорт отделов -->
- <class name="ou" threads-number="1">
- <parameter name="metaClass">${ouMetaClass}</parameter>
- <parameter name="idHolder">${ouIdHolder}</parameter>
- <ldap-data-source domain="${ldapDomain}" id-column="id" check-user-disabled="true" full-domain="true" import-root="false">
- <column name="id" src-key="objectGUID" />
- <column name="parent" src-key="parent" />
- <column name="name" src-key="name" />
- <connection-code>${connectionCode}</connection-code>
- <root-element>${rootDN}</root-element>
- <import-tag>ou</import-tag>
- <import-tag>dc</import-tag>
- <!-- Пример использования ignored-postfix -->
- <!-- Не будут импортированы все объекты чей distingushedName заканчивается такой строкой -->
- <!-- <ignored-postfix>${ignoredOU01}</ignored-postfix> -->
- </ldap-data-source>
- <hierarchical-filter parent-column="parent"/>
- <!-- <column-notempty-filter column="ipPhone" /> -->
- <constant-metaclass-resolver />
- <object-searcher attr="${ouIdHolder}" />
- <attr name="${ouIdHolder}" column="id" />
- <attr name="title" column="name" />
- <attr name="parent" column="parent">
- <object-converter attr="${ouIdHolder}" required="false"/>
- </attr>
- <attr name="removed" default-value="false" />
- <remove-customizer attr="${ouIdHolder}" hierarchy-root="${importRootUUID}" metaclass="${ouMetaClass}" />
- </class>
- <!-- Импорт сотрудников -->
- <class name="employee" threads-number="1">
- <parameter name="metaClass">${employeeMetaClass}</parameter>
- <parameter name="idHolder">${employeeIdHolder}</parameter>
- <ldap-data-source domain="${ldapDomain}" id-column="id" check-user-disabled="true" full-domain="true" import-root="false">
- <column name="id" src-key="objectGUID" />
- <column name="parent" src-key="parent" />
- <column name="displayName" src-key="displayName"/>
- <column name="firstName" src-key="givenName" />
- <column name="lastName" src-key="sn" />
- <column name="middleName" src-key="initials" />
- <column name="post" src-key="title" />
- <column name="post2" src-key="description" />
- <column name="email" src-key="mail" />
- <column name="userAccountControl" src-key="userAccountControl" />
- <column name="login" src-key="sAMAccountName" />
- <column name="ipPhone" src-key="ipPhone" />
- <column name="mobilePhoneNumber" src-key="mobile" />
- <column name="homePhone" src-key="homePhone" />
- <column name="cityPhoneNumber" src-key="telephoneNumber" />
- <column name="thumbnailPhoto" src-key="thumbnailPhoto" />
- <column name="agreement_column_name" src-key="ldap_agreement_attribute_name" />
- <column name="language" src-key="language" />
- <connection-code>${connectionCode}</connection-code>
- <root-element>${rootDN}</root-element>
- <import-tag>cn</import-tag>
- <import-tag>dn</import-tag>
- <!-- Поскольку отдел OU1 и все вложенные отделы не были импортированы, не нужно импортировать и сотрудников вложенных в них -->
- <!-- <ignored-postfix>${ignoredOU01}</ignored-postfix> -->
- </ldap-data-source>
- <hierarchical-filter parent-column="parent" />
- <constant-metaclass-resolver />
- <object-searcher attr="${employeeIdHolder}" />
- <attr name="${employeeIdHolder}" column="id" />
- <attr name="parent" column="parent">
- <object-converter attr="${employeeIdHolder}" metaclass="${ouMetaClass}" required="true" />
- </attr>
- <!-- Скрипты-конвертеры для извлефения фамилии, имени и отчества из поля displayName -->
- <!-- Извлекает из атрибута displayName (ФИО) фамилию. Она всегда должна быть первым словом. -->
- <attr name="lastName" column="displayName">
- <script-converter>
- <![CDATA[
- try {
- value.split('\\s')[0]
- } catch (ArrayIndexOutOfBoundsException e) {
- throw new Exception('Фамилия сотрудника должна быть первым словом атрибута displayName')
- }
- ]]>
- </script-converter>
- </attr>
- <!-- Извлекает из атрибута displayName (ФИО) имя сотрудника. Оно всегда должно быть вторым словом. -->
- <attr name="firstName" column="displayName">
- <script-converter>
- <![CDATA[
- try {
- value.split('\\s')[1]
- } catch (ArrayIndexOutOfBoundsException e) {
- ''
- }
- ]]>
- </script-converter>
- </attr>
- <!-- Извлекает из атрибута displayName (ФИО) отчество сотрудника. Оно всегда должно быть третьим словом, но может и не присутствовать. -->
- <attr name="middleName" column="displayName">
- <script-converter>
- <![CDATA[
- try {
- value.split('\\s')[2]
- } catch (ArrayIndexOutOfBoundsException e) {
- ''
- }
- ]]>
- </script-converter>
- </attr>
- <!-- Если указанные выше скрипты-конвертеры не используются, то требуется разкомментировать следующие три строки -->
- <!-- <attr name="firstName" column="firstName" />
- <attr name="lastName" column="lastName" />
- <attr name="middleName" column="middleName" /> -->
- <attr name="image" column="thumbnailPhoto">
- <script-converter>
- <![CDATA[
- import ru.naumen.metainfo.server.spi.store.FileDto;
- if(null!=value)
- {
- FileDto dto = new FileDto();
- dto.setTitle("thumbnailPhoto.jpg");
- dto.getContent().setValue(org.apache.commons.codec.binary.Hex.decodeHex(value.replace("\\", "").toCharArray()));
- dto.setMimeType("image/jpg");
- return java.util.Collections.singleton(dto);
- }
- ]]>
- </script-converter>
- </attr>
- <attr name="post" column="post">
- <script-converter>
- <![CDATA[
- return value ?: item.properties.post2
- ]]>
- </script-converter>
- </attr>
- <attr name="email" column="email" />
- <attr name="mobilePhoneNumber" column="mobilePhoneNumber" />
- <attr name="internalPhoneNumber" column="ipPhone" />
- <attr name="homePhoneNumber" column="homePhone" />
- <attr name="cityPhoneNumber" column="cityPhoneNumber" />
- <attr name="login" column="login">
- <script-converter>
- <![CDATA[
- try {
- value.split('\\@')[0]
- } catch (ArrayIndexOutOfBoundsException e) { }
- ]]>
- </script-converter>
- </attr>
- <attr name="removed" default-value="false" />
- <script-customizer>
- <after-process>
- <![CDATA[
- def language = item.properties.language
- if (language){
- api.employee.setLocale(subject, language);
- }
- ]]>
- </after-process>
- </script-customizer>
- <!--remove-customizer attr="${employeeIdHolder}" hierarchy-root="${importRootUUID}" metaclass="${employeeMetaClass}" /-->
- </class>
- <!-- Назначение сотрудников руководителями отделов -->
- </config>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement