daily pastebin goal
34%
SHARE
TWEET

Untitled

a guest Jan 23rd, 2019 191 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3.         xsi:noNamespaceSchemaLocation="../../../../../../target/classes/advimport/schema1.xsd"
  4.         save-log="true" threads-number="1">
  5.  
  6.   <mode>CREATE</mode>
  7.   <mode>UPDATE</mode>
  8.   <!-- Параметры подключения AD. Необходимо заполнить перед использованием конфигурации -->
  9.   <!-- Указывается код подключения к LDAP -->
  10.   <parameter name="connectionCode">ldap</parameter>
  11.   <parameter name="ldapDomain">filuet.local</parameter>
  12.   <!-- Задает код отдела являющегося корневым отделом импорта -->        
  13.   <parameter name="rootDN">OU=Organization,OU=Users,OU=Root,DC=Filuet,DC=local</parameter>
  14.   <!-- Параметры импорта -->
  15.   <!-- Указываем uuid компании, чтобы заархивировались все отделы и сотрудники с непустым idHolder, не участвовавшие в импорте -->
  16.   <parameter name="importRootUUID">root$101</parameter>
  17.   <!-- Задает метакласс импортируемых отделов -->
  18.   <parameter name="ouMetaClass">ou$ou</parameter>
  19.   <!-- Задает код атрибута отделов в котором хранится внешний идентификатор -->
  20.   <parameter name="ouIdHolder">idHolder</parameter>
  21.   <!-- Задает метакласс импортируемых сотрудников -->
  22.   <parameter name="employeeMetaClass">employee$employee</parameter>
  23.   <!-- Задает код атрибута сотрудников в котором хранится внешний идентификатор -->
  24.   <parameter name="employeeIdHolder">idHolder</parameter>
  25.   <!-- Задает DN, который будет проигнорирован (он и все вложенные объекты не будут проимпортированы). -->
  26.   <!-- <parameter name="ignoredOU01"></parameter> -->
  27.   <!-- Импорт отделов -->
  28.   <class name="ou" threads-number="1">
  29.     <parameter name="metaClass">${ouMetaClass}</parameter>
  30.     <parameter name="idHolder">${ouIdHolder}</parameter>
  31.     <ldap-data-source domain="${ldapDomain}" id-column="id" check-user-disabled="true" full-domain="true" import-root="false">
  32.       <column name="id" src-key="objectGUID" />
  33.       <column name="parent" src-key="parent" />
  34.       <column name="name" src-key="name" />
  35.       <connection-code>${connectionCode}</connection-code>
  36.       <root-element>${rootDN}</root-element>
  37.       <import-tag>ou</import-tag>
  38.       <import-tag>dc</import-tag>
  39.       <!-- Пример использования ignored-postfix -->
  40.       <!-- Не будут импортированы все объекты чей distingushedName заканчивается такой строкой -->
  41.       <!-- <ignored-postfix>${ignoredOU01}</ignored-postfix> -->
  42.     </ldap-data-source>
  43.     <hierarchical-filter parent-column="parent"/>
  44.     <!-- <column-notempty-filter column="ipPhone" />  -->
  45.     <constant-metaclass-resolver />
  46.     <object-searcher attr="${ouIdHolder}" />
  47.     <attr name="${ouIdHolder}" column="id" />
  48.     <attr name="title" column="name" />
  49.     <attr name="parent" column="parent">
  50.       <object-converter attr="${ouIdHolder}" required="false"/>
  51.     </attr>
  52.     <attr name="removed" default-value="false" />
  53.     <remove-customizer attr="${ouIdHolder}" hierarchy-root="${importRootUUID}" metaclass="${ouMetaClass}" />
  54.   </class>
  55.   <!-- Импорт сотрудников -->
  56.   <class name="employee" threads-number="1">
  57.     <parameter name="metaClass">${employeeMetaClass}</parameter>
  58.     <parameter name="idHolder">${employeeIdHolder}</parameter>
  59.     <ldap-data-source domain="${ldapDomain}" id-column="id" check-user-disabled="true" full-domain="true" import-root="false">
  60.       <column name="id" src-key="objectGUID" />
  61.       <column name="parent" src-key="parent" />
  62.       <column name="displayName" src-key="displayName"/>
  63.       <column name="firstName" src-key="givenName" />
  64.       <column name="lastName" src-key="sn" />
  65.       <column name="middleName" src-key="initials" />
  66.       <column name="post" src-key="title" />
  67.       <column name="post2" src-key="description" />
  68.       <column name="email" src-key="mail" />
  69.       <column name="userAccountControl" src-key="userAccountControl" />
  70.       <column name="login" src-key="sAMAccountName" />
  71.       <column name="ipPhone" src-key="ipPhone" />
  72.       <column name="mobilePhoneNumber" src-key="mobile" />
  73.       <column name="homePhone" src-key="homePhone" />
  74.       <column name="cityPhoneNumber" src-key="telephoneNumber" />
  75.       <column name="thumbnailPhoto" src-key="thumbnailPhoto" />
  76.       <column name="agreement_column_name" src-key="ldap_agreement_attribute_name" />
  77.       <column name="language" src-key="language" />
  78.       <connection-code>${connectionCode}</connection-code>
  79.       <root-element>${rootDN}</root-element>
  80.       <import-tag>cn</import-tag>
  81.       <import-tag>dn</import-tag>
  82.       <!-- Поскольку отдел OU1 и все вложенные отделы не были импортированы, не нужно импортировать и сотрудников вложенных в них -->
  83.       <!-- <ignored-postfix>${ignoredOU01}</ignored-postfix> -->
  84.     </ldap-data-source>
  85.     <hierarchical-filter parent-column="parent" />
  86.     <constant-metaclass-resolver />
  87.     <object-searcher attr="${employeeIdHolder}" />
  88.     <attr name="${employeeIdHolder}" column="id" />
  89.     <attr name="parent" column="parent">
  90.       <object-converter attr="${employeeIdHolder}" metaclass="${ouMetaClass}" required="true" />
  91.     </attr>
  92.     <!-- Скрипты-конвертеры для извлефения фамилии, имени и отчества из поля displayName -->
  93.     <!-- Извлекает из атрибута displayName (ФИО) фамилию. Она всегда должна быть первым словом. -->
  94.     <attr name="lastName" column="displayName">
  95.       <script-converter>
  96.         <![CDATA[
  97.           try {
  98.             value.split('\\s')[0]
  99.           } catch (ArrayIndexOutOfBoundsException e) {
  100.             throw new Exception('Фамилия сотрудника должна быть первым словом атрибута displayName')
  101.           }
  102.         ]]>
  103.       </script-converter>
  104.     </attr>
  105.     <!-- Извлекает из атрибута displayName (ФИО) имя сотрудника. Оно всегда должно быть вторым словом. -->
  106.     <attr name="firstName" column="displayName">
  107.       <script-converter>
  108.         <![CDATA[
  109.           try {
  110.             value.split('\\s')[1]
  111.           } catch (ArrayIndexOutOfBoundsException e) {
  112.             ''
  113.           }
  114.         ]]>
  115.       </script-converter>
  116.     </attr>
  117.     <!-- Извлекает из атрибута displayName (ФИО) отчество сотрудника. Оно всегда должно быть третьим словом, но может и не присутствовать. -->
  118.     <attr name="middleName" column="displayName">
  119.       <script-converter>
  120.         <![CDATA[
  121.           try {
  122.             value.split('\\s')[2]
  123.           } catch (ArrayIndexOutOfBoundsException e) {
  124.             ''
  125.           }
  126.         ]]>
  127.       </script-converter>
  128.     </attr>
  129.     <!-- Если указанные выше скрипты-конвертеры не используются, то требуется разкомментировать следующие три строки -->
  130.     <!-- <attr name="firstName" column="firstName" />
  131.         <attr name="lastName" column="lastName" />
  132.         <attr name="middleName" column="middleName" /> -->
  133.     <attr name="image" column="thumbnailPhoto">
  134.       <script-converter>
  135.         <![CDATA[
  136.           import ru.naumen.metainfo.server.spi.store.FileDto;
  137.           if(null!=value)
  138.           {
  139.             FileDto dto = new FileDto();
  140.             dto.setTitle("thumbnailPhoto.jpg");
  141.             dto.getContent().setValue(org.apache.commons.codec.binary.Hex.decodeHex(value.replace("\\", "").toCharArray()));        
  142.             dto.setMimeType("image/jpg");
  143.             return java.util.Collections.singleton(dto);
  144.           }
  145.         ]]>
  146.       </script-converter>
  147.     </attr>  
  148.     <attr name="post" column="post">
  149.       <script-converter>
  150.         <![CDATA[
  151.           return value ?: item.properties.post2
  152.         ]]>
  153.       </script-converter>
  154.     </attr>
  155.     <attr name="email" column="email" />
  156.     <attr name="mobilePhoneNumber" column="mobilePhoneNumber" />
  157.     <attr name="internalPhoneNumber" column="ipPhone" />
  158.     <attr name="homePhoneNumber" column="homePhone" />
  159.     <attr name="cityPhoneNumber" column="cityPhoneNumber" />
  160.     <attr name="login" column="login">
  161.       <script-converter>
  162.         <![CDATA[
  163.           try {
  164.             value.split('\\@')[0]
  165.           } catch (ArrayIndexOutOfBoundsException e) { }
  166.         ]]>
  167.       </script-converter>
  168.     </attr>
  169.     <attr name="removed" default-value="false" />
  170.     <script-customizer>
  171.         <after-process>
  172.             <![CDATA[
  173.                 def language = item.properties.language
  174.                 if (language){
  175.                     api.employee.setLocale(subject, language);
  176.                 }
  177.             ]]>
  178.         </after-process>
  179.     </script-customizer>
  180.     <!--remove-customizer attr="${employeeIdHolder}" hierarchy-root="${importRootUUID}" metaclass="${employeeMetaClass}" /-->
  181.   </class>
  182.   <!-- Назначение сотрудников руководителями отделов -->
  183.  
  184. </config>
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top