Guest User

Untitled

a guest
Jan 23rd, 2019
193
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