DFEX (DocFlow EXchange) - модуль изначально был разработан для интеграции канцелярии с системой документооборота «Эвридок», так же на данный момент он используется для обмена документами между канцеляриями, расположенными на одном или нескольких экземплярах ARTA Synergy.
Организация — это структурное подразделение, ведущее собственную канцелярию. В орг. структуре одного экземпляра ARTA Synergy может быть одна или несколько организаций. Предполагается, что если на одном сервере должно присутствовать несколько организаций, то для каждой из них настраиваются журналы входящих и исходящих документов и на эти журналы даются права сотрудникам канцелярии соответствующих организаций.
Группа организаций — это именованное объединение нескольких организаций, находящихся на одном и/или разных серверах ARTA Synergy.
Получателем документа может выступать как организация, так и группа организаций, отправителем — одна организация.
Обмен документами происходит через почту. После регистрации
документа отправителем df-ex
формирует
почтовое сообщение и отправляет его на почтовые адреса
получателей.
Почтовое сообщение содержит во вложениях XML файл с полями карточки документа отправителя. Эти поля необходимы для интеграции с «Эвридок». В случае, если получателем документа является организация ARTA Synergy, из этих полей будет взято только поле Subject
, значение которого будет записано в краткое содержание документа получателя.
Вложения документа ARTA Synergy добавляются в почтовое сообщение так же как вложения. Если размер файла вложения превышает 10МБ, то он бьется на части по 10МБ и каждая часть отправляется отдельным письмом.
Требования к форме карточки документа:
Обязательно должно присутствовать поле
To
, ссылающееся на значения справочника
ExtDtiOrganization
.
Может содержать поле Subject
, значение
которого будет записано в краткое содержание входящего
документа получателя.
Участники обмена документами (организации и группы
организаций) хранятся в Synergy в справочнике с кодом
ExtDtiOrganization
.
Данный справочник содержит следующие поля, характеризующие участника:
Код поля справочника | Название | Описание |
---|---|---|
|
Идентификатор участника |
Строка, должна быть уникальна |
|
Код |
Не имеет значения |
|
Название |
Должно иметь переводы и они должны быть заполнены |
|
|
Почтовый адрес участника.Для организаций находящихся на одном экземпляре AS почтовый адрес должен совпадать. |
|
Код типа документа |
Строка, соответствующая типу входящего документа организации-получателя. Значение может отсутствовать двух случаях:
|
|
Группа |
переключатель «является ли группой» - если данный параметр имеет значение 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
В результате установки пакетов создаются файлы:
/opt/synergy/jboss/standalone/configuration/arta/dfex/dti.xml
/opt/synergy/jboss/standalone/deployments/Synergy.ear/dt-int-model.jar
/opt/synergy/jboss/standalone/deployments/Synergy.ear/df-ex-ejb.jar
/opt/synergy/jboss/standalone/deployments/Synergy.ear/df-ex-web.war
Так же автоматически вносятся следующие изменения для каждого участника интеграции:
Автоматически создается очередь в файле
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>
Автоматически добавляется модуль в файл
/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>
В файл
/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>
Заходим в «SynergyAdmin»:
даем права «Сотрудник канцелярии» и «Методолог»
пользователю Admin
создаем группу в «Хранилище» и добавляем в нее
пользователя Admin
Заходим в «Configurator»:
Даем «Полный доступ» для группы пользователя
Admin
в «Хранилище» - «Папки»
Заходим в «Synergy»:
Выкладываем формы в «Хранилище»
Возвращаемся в «SynergyAdmin»:
Перейти в модуль «Формы» (Хранилище → Формы) и напротив этих форм в таблице выставить чекбокс в столбце «Опубликовано» и сохранить изменения нажав на кнопку «Сохранить» под таблицей.
Переходим в «Configurator»:
Создаем «Счетчики» для входящих и исходящих.
Создаем «Шаблон номера» с созданным «счетчиками».
Создаем «Журналы». Для каждой организации создаем журнал
«Входящих писем» с типом журнала «входящий» и журнал
«Исходящих писем» с типом журнала «исходящий». Для всех
журналов выбираем «шаблон номера» созданный ранее. Даем
все права для пользователя Admin
, для
других пользователей согласно требованиям организации.
Для каждого Журнала создаем «Тип документа». В поле
Код
вводим текст
ExtDtiInDocInc
-
идентификатор_организации для журналов «Входящих писем»
и ExtDtiOutDocInc
-
идентификатор_организации для журналов «Исходящих
писем». Выбираем соответствующий «Журнал» и «Форму
документа», даем «Доступ».
>Примечание: > >Тип документа должен быть идентичным в «SynergyAdmin» - «Документооборот» - >«Типы документов» - поле Код
и server:5000
— поле DocTypeCode
.
Переходим в консоль сервера. Необходимо настроить
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>
Для настройки пользователя, от имени которого будут выполняться различные запросы, например:
на получение типа документа;
на получение печатного представления;
на запись лога в ход выполнения;
и т.п.
отредактируйте файл:
nano /opt/synergy/jboss/standalone/configuration/arta/dfex/dt-int.json
По умолчанию, файл содержит:
{ "url": "http://127.0.0.1:8080/Synergy", "username": "1", "password": "1" }
Необходимо ввести логин и пароль пользователя.
dtint-control
- дополнительный интерфейс
для централизованной рассылки справочников участникам
обмена.
Для установки dtint-control
могут
понадобиться дополнительные пакеты
aptitude install supervisor aptitude install python-pip aptitude install python-virtualenv
Для установки dtint-control
введите
команду
aptitude install arta-synergy-dtint-control
Для настройки почты отредактируйте файл:
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
Перезагрузите сервер.
Далее переходим в браузер, набираем адрес
http://<ip server>:5000
и
настраиваем организации обмена документами:
удаляем все имеющиеся записи.
добавляем новую запись (Организации — Добавить).
поле Id
-
идентификатор_организации, должно
быть идентично полю
<organization-id>
из файла
dti.xml
.
поле DocTypeCode
- идентичным в
«SynergyAdmin» - «Документооборот» - «Типы документов»
- поле Код
===
ExtDtiInDocInc
-
идентификатор_организации.
поля Name ...
- заполняются
названием организации.
поле Email
- должно соответствовать
данным из файла dti.xml
.
нажимаем «Добавить».
если у нас несколько организаций, то повторяем пункты
с 2 по 7, при этом учитывая ID
заведенные на других серверах.
Примечание
Для простоты понимания всех
ID
предлагаем использовать единый идентификатор_организации для кода типа документа из/SynergyAdmin
, для<organization-id>
из файлаdti.xml
и для поляId
из настроек организации вhttp://<ip server>:5000
.
после окончания ввода всех организаций нажимаем кнопку
«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