Инструкция по настройке df-ex

Описание

DFEX (DocFlow EXchange) - модуль изначально был разработан для интеграции канцелярии с системой документооборота Эвридок, так же на данный момент он используется для обмена документами между канцеляриями, расположенными на одном или нескольких экземплярах ARTA Synergy.

Определения

Организация — это структурное подразделение, ведущее собственную канцелярию. В орг. структуре одного экземпляра ARTA Synergy может быть одна или несколько организаций. Предполагается, что если на одном сервере должно присутствовать несколько организаций, то для каждой из них настраиваются журналы входящих и исходящих документов и на эти журналы даются права сотрудникам канцелярии соответствующих организаций.

Группа организаций — это именованное объединение нескольких организаций, находящихся на одном и/или разных серверах ARTA Synergy.

Получателем документа может выступать как организация, так и группа организаций, отправителем — одна организация.

Обмен документами

Обмен документами происходит через почту. После регистрации документа отправителем df-ex формирует почтовое сообщение и отправляет его на почтовые адреса получателей.

Figure 5.1. Рисунок 1

Рисунок 1

Почтовое сообщение содержит во вложениях XML файл с полями карточки документа отправителя. Эти поля необходимы для интеграции с «Эвридок». В случае, если получателем документа является организация ARTA Synergy, из этих полей будет взято только поле Subject, значение которого будет записано в краткое содержание документа получателя.

Вложения документа ARTA Synergy добавляются в почтовое сообщение так же как вложения. Если размер файла вложения превышает 10МБ, то он бьется на части по 10МБ и каждая часть отправляется отдельным письмом.

Требования к форме карточки документа:

  1. Обязательно должно присутствовать поле To, ссылающееся на значения справочника ExtDtiOrganization.

  2. Может содержать поле Subject, значение которого будет записано в краткое содержание входящего документа получателя.

Участники обмена документами

Участники обмена документами (организации и группы организаций) хранятся в Synergy в справочнике с кодом ExtDtiOrganization.

Данный справочник содержит следующие поля, характеризующие участника:

Код поля справочника Название Описание

Id

Идентификатор участника

Строка, должна быть уникальна

DecCode

Код

Не имеет значения

Name

Название

Должно иметь переводы и они должны быть заполнены

DecMail

email

Почтовый адрес участника.Для организаций находящихся на одном экземпляре AS почтовый адрес должен совпадать.

DocTypeCode

Код типа документа

Строка, соответствующая типу входящего документа организации-получателя. Значение может отсутствовать двух случаях:

  • если данный получатель является группой

  • если для данного получателя тип документа зашит в форму (см. ниже подраздел «Код типа документа»)

IsGroup

Группа

переключатель «является ли группой» - если данный параметр имеет значение true, значит данная организация.

Организации объединяются в группы через дополнительный справочник с кодом ExtDtiOrganizationGroup. Данный справочник, должен иметь поля:

  • Id - идентификатор записи в данном справочнике

  • OrgRecordId - идентификатор получателя из справочника ExtDtiOrganization (не группы)

  • GroupId - идентификатор получателя из справочника ExtDtiOrganization (группы)

Идентификаторы получателей справочника ExtDtiOrganization и идентификаторы справочника ExtDtiOrganizationGroup должны быть уникальны.

Код типа документа

Для того чтобы обмен документами работал корректно необходимо правильно настроить журналы входящих и исходящих документов и позаботиться чтобы для этих журналов были созданы типы документов с правильными кодами.

Код типа документов для журнала входящих

Код типа документов для журнала входящих может быть указан двумя способами: как значение поля DocTypeCode справочника организаций или зашит в форму исходящего документа. Рассмотрим подробнее оба случая.

1. Значение кода типа документа в поле DocTypeCode справочника ExtDtiOrganization

Данный способ наиболее прост в использовании. Его необходимо выбрать если есть необходимость существования нескольких организаций на одном сервере либо для каждой организации достаточно наличие одного журнала входящих документов.

При использовании этого способа каждая организация может иметь только один журнал входящих и один журнал исходящих документов (имеются ввиду те, которые будут участвовать в обмене документами. Не участвующих в обмене документами журналов может быть создано неограниченное количество)

2. Значение кода типа документа зашито в форму исходящего документа

Тип документа «зашит в форму» означает, что тип документа, прописан в форме исходящего документа и у любого получателя тип документа с данным кодом должен существовать. Строка, соответствующая коду документа, прописывается в данных формы таким образом:

<DocDataType>DocAnswer</DocDataType>

Значением DocDataType является не сам код типа документа, а его часть. В таблице ниже описано соответствие DocDataType и кода типа документа.

DocDataType

Код типа документа

DocAnswer

ExtDtiInDocAnswer

DocInc

ExtDtiInDocInc

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

В этом случае на каждом экземпляре AS вы должны будете создать типы документов с перечисленными выше кодами и соответствующие им журналы входящих.

Код типа документов для журнала исходящих

Код типа документов для журнала исходящих должен быть выбран исходя из описанных ниже правил, иначе — после регистрации документа, он не будет отправлен получателям.

Если на одном экземпляре ARTA Synergy существует только одна организация-участник обмена документами, то код типа документа должен быть ExtDtiOutDocInc.

Если на одном экземпляре ARTA Synergy существует несколько организаций, то код типа документа должен иметь вид ExtDtiOutDocInc - идентификатор_организации

Установка и конфигурирование

Установка пакета

Этот пакет создает необходимые библиотеки для работы DFEX модуля. Для установки пакета нужно поставить пакет arta-synergy-dfex на серверах всех участниках интеграции.

Устанавливаем пакет dfex:

aptitude install arta-synergy-dfex 

В результате установки пакетов создаются файлы:

  1. /opt/synergy/jboss/standalone/configuration/arta/dfex/dti.xml

  2. /opt/synergy/jboss/standalone/deployments/Synergy.ear/dt-int-model.jar

  3. /opt/synergy/jboss/standalone/deployments/Synergy.ear/df-ex-ejb.jar

  4. /opt/synergy/jboss/standalone/deployments/Synergy.ear/df-ex-web.war

Так же автоматически вносятся следующие изменения для каждого участника интеграции:

  1. Автоматически создается очередь в файле standalone-onesynergy.xml

    <jms-queue name="AS_EXT_DTI_Inbox">
          <entry name="queue/AS_EXT_DTI_Inbox"/>
          <entry name="java:jboss/exported/jms/queue/AS_EXT_DTI_Inbox"/>
         <durable>true</durable>
    </jms-queue>
    <jms-queue name="AS_EXT_DTI_Outbox">
         <entry name="queue/AS_EXT_DTI_Outbox"/>
         <entry name="java:jboss/exported/jms/queue/AS_EXT_DTI_Outbox"/>
         <durable>true</durable>
    </jms-queue>
    
  2. Автоматически добавляется модуль в файл /opt/synergy/jboss/standalone/deployments/Synergy.ear/META-INF/application.xml

    <module>
        <ejb>df-ex-ejb.jar</ejb>
    </module>
    <module>
        <ejb>dt-int-model.jar</ejb>
    </module>
    <module>
        <web>
            <context-root>/df-ex-web</context-root>
            <web-uri>df-ex-web.war</web-uri>
        </web>
    </module>
    
  3. В файл /opt/synergy/jboss/standalone/configuration/arta/docflow-observe-configuration.xml добавляются строчки:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <docflow-observe-configuration>
     <listeners>
      <listener>
        <listenerClass>kz.arta.synergy.ext.dfex.bp.BPListener</listenerClass>
        <sources>df-ex</sources>
      </listener>
      <listener>
       <listenerClass>kz.arta.synergy.ext.dfex.bp.BPOutgoingListener</listenerClass>
        </listener>
      </listeners>
    </docflow-observe-configuration>
    

Настройки на сервере интеграции

Создание формы
  1. Заходим в «SynergyAdmin»:

    1. даем права «Сотрудник канцелярии» и «Методолог» пользователю Admin

    2. создаем группу в «Хранилище» и добавляем в нее пользователя Admin

  2. Заходим в «Configurator»:

    Даем «Полный доступ» для группы пользователя Admin в «Хранилище» - «Папки»

  3. Заходим в «Synergy»:

    Выкладываем формы в «Хранилище»

  4. Возвращаемся в «SynergyAdmin»:

    Перейти в модуль «Формы» (Хранилище → Формы) и напротив этих форм в таблице выставить чекбокс в столбце «Опубликовано» и сохранить изменения нажав на кнопку «Сохранить» под таблицей.

Создание типов документов и журналов

Переходим в «Configurator»:

  1. Создаем «Счетчики» для входящих и исходящих.

  2. Создаем «Шаблон номера» с созданным «счетчиками».

  3. Создаем «Журналы». Для каждой организации создаем журнал «Входящих писем» с типом журнала «входящий» и журнал «Исходящих писем» с типом журнала «исходящий». Для всех журналов выбираем «шаблон номера» созданный ранее. Даем все права для пользователя Admin, для других пользователей согласно требованиям организации.

  4. Для каждого Журнала создаем «Тип документа». В поле Код вводим текст ExtDtiInDocInc - идентификатор_организации для журналов «Входящих писем» и ExtDtiOutDocInc - идентификатор_организации для журналов «Исходящих писем». Выбираем соответствующий «Журнал» и «Форму документа», даем «Доступ».

Figure 5.2. Рисунок 2

Рисунок 2

Figure 5.3. Рисунок 3

Рисунок 3

Примечание:

Тип документа должен быть идентичным в «SynergyAdmin» - «Документооборот» - «Типы документов» - поле Код и server:5000 — поле DocTypeCode.

Настройка dti.xml

Переходим в консоль сервера. Необходимо настроить dti.xml в четком соответствии с настройками почты:

nano /opt/synergy/jboss/standalone/configuration/arta/dfex/dti.xml

Поле <organization-id> заполняется идентификатор_организации. При настройке dtint-control данные этого поля надо будет ввести в поле ID.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<configuration xmlns="http://www.arta.kz/xml/ns/as/ext/dti"
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xsi:schemaLocation="http://www.arta.kz/xml/ns/as/ext/dti dti.xsd">
    <organization-id>идентификатор_организации</organization-id>
    <mail>
        <!-- параметры чтения почты -->
        <inbox>
            <protocol>imap</protocol>
            <host>imap.arta.kz</host>
            <port>143</port>
            <use-ssl>false</use-ssl>
            <connection-timeout>300000</connection-timeout>
            <timeout>300000</timeout>
            <user>почта</user>
            <password>пароль</password>
        </inbox>
        <!-- параметры для отправки почты -->
        <outbox>
            <protocol>smtp</protocol>
            <host>smtp.arta.kz</host>
            <port>25</port>
            <use-ssl>false</use-ssl>
            <connection-timeout>300000</connection-timeout>
            <timeout>300000</timeout>
            <user>почта</user>
            <password>пароль</password>
        </outbox>
        <!-- интервал проверки новых сообщений -->
        <fetch-interval>10000</fetch-interval>
        <!-- оставлять сообщения на сервере (пока не работает)-->
        <remove-from-server>false</remove-from-server>
        <!-- IMAP папка-->
        <imap-folder>INBOX</imap-folder>
        <!-- максимальный размер данных, отправляемых без сжатия-->
        <max-unpacked-size>10485760</max-unpacked-size>
        <!-- размер тома (при архивировании) -->
        <part-size>10485760</part-size>
    </mail>
</configuration>
Настройка dt-int.json

Для настройки пользователя, от имени которого будут выполняться различные запросы, например:

  • на получение типа документа;

  • на получение печатного представления;

  • на запись лога в ход выполнения;

  • и т.п.

отредактируйте файл:

nano /opt/synergy/jboss/standalone/configuration/arta/dfex/dt-int.json

По умолчанию, файл содержит:

{
  "url": "http://127.0.0.1:8080/Synergy",
  "username": "1",
  "password": "1"
}

Необходимо ввести логин и пароль пользователя.

Настройка отправки почты

Для настройки почты отредактируйте файл:

nano /opt/dt-int/app/app/__init__.py
app.config['MAIL_SERVER'] = '192.168.1.223' //почтовый сервер
app.config['MAIL_PORT'] = '25' //порт для отправки smtp
app.config['MAIL_USERNAME'] = 's_int7' //имя пользователя
app.config['MAIL_PASSWORD'] = '1234' //пароль (можно закомментировать, если не нужно)
app.config['MAIL_USE_TLS'] = False //настройки подключения
app.config['MAIL_USE_SSL'] = False //настройки подключения
app.config['MAIL_DEFAULT_SENDER'] = 'admin@arta.pro' //от чьего имени отправлять письма

В данном файле можно редактировать значения только вышеуказанных параметров, остальные параметры изменять не нужно.

Для применения настроек после изменения файла __init__.py :

supervisorctl restart app

Перезагрузите сервер.

Настройка dt-int-control

dtint-control - дополнительный интерфейс для централизованной рассылки справочников участникам обмена.

Для установки dtint-control могут понадобиться дополнительные пакеты

aptitude install supervisor 
aptitude install python-pip 
aptitude install python-virtualenv

Для установки dtint-control введите команду

aptitude install arta-synergy-dtint-control

Переходим в браузер, набираем адрес http://<ip server>:5000 и настраиваем организации обмена документами:

  1. удаляем все имеющиеся записи.

  2. добавляем новую запись (Организации — Добавить).

  3. поле Id - идентификатор_организации, должно быть идентично полю <organization-id> из файла dti.xml.

  4. поле DocTypeCode - идентичным в «SynergyAdmin» - «Документооборот» - «Типы документов» - поле Код === ExtDtiInDocInc- идентификатор_организации.

  5. поля Name ... - заполняются названием организации.

  6. поле Email - должно соответствовать данным из файла dti.xml.

  7. нажимаем «Добавить».

  8. если у нас несколько организаций, то повторяем пункты с 2 по 7, при этом учитывая ID заведенные на других серверах.

    Примечание

    Для простоты понимания всех ID предлагаем использовать единый идентификатор_организации для кода типа документа из /SynergyAdmin, для <organization-id> из файла dti.xml и для поля Id из настроек организации в http://<ip server>:5000.

  9. после окончания ввода всех организаций нажимаем кнопку «Sync» и если все было сделано правильно, то в «Справочниках» (Configurator — Процессы — Справочники) должно добавится три справочника с кодами начинающимися на ExtDti.

Заходим в пользовательскую часть Synergy Переходим в Хранилище — Документы — Журналы и в списке должны быть журналы «Входящей почты» и «Исходящей почты».

Проверяем работу.

Дополнительные настройки. Логирование

Для настройки логирования действий по отправке и получению откройте файл:

nano /opt/synergy/jboss/standalone/configuration/standalone-onesynergy.xml

В элемент subsystem xmlns="urn:jboss:domain:logging:1.1" добавьте следующее:

<periodic-rotating-file-handler name="integration-handler"> 
    <formatter> 
        <pattern-formatter pattern="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/> 
    </formatter> 
    <file relative-to="jboss.server.log.dir" path="integration.log"/> 
    <suffix value=".yyyy-MM-dd"/> 
    <append value="true"/> 
</periodic-rotating-file-handler> 
<logger category="kz.arta.synergy.ext.dfex"> 
    <level name="TRACE"/> 
    <handlers> 
        <handler name="integration-handler"/> 
    </handlers> 
</logger> 

Выполнить следующий запрос:

use synergy;
update sc_application_log_provider set alp_jndi='java:app/df-ex-ejb/DTIApplicationLogProviderEJB!kz.arta.synergy.ejb.log.ApplicationLogProvider' WHERE alp_id='EXT_DFEX';

Чтобы посмотреть логи

tail -f -n 100 /var/log/supervisor/app-stderr---supervisor-….log