Модель данных¶
Единицей маршрутизации в системе EDI.Контур являются ящики (box). Когда пользователь системы хочет отправить EDI-документ своему контрагенту, он формирует документ в своем ящике (назовем его ящиком отправителя), а система выполняет доставку путем формирования соответствующего документа в ящике контрагента (ящике получателя). Ящик может быть настроен таким образом, что после появления документа в нем происходит его физическая отправка по какому-либо протоколу (пример: FTP, AS2).
Каждый ящик в системе EDI.Контур относится к некоторой организации (юридическое лицо или индивидуальный предприниматель). Ящики в системе закрепляются за организациями таким образом, что каждый ящик принадлежит одной и только одной организации.
Пользователи системы EDI.Контур могут аутентифицироваться в системе по паре логин/пароль. Разграничение доступа аутентифицированных пользователей производится на уровне ящиков. К одному ящику могут получить доступ несколько пользователей и, наоборот, один пользователь может получить доступ сразу к нескольким ящикам. Доступ пользователя к ящику подразумевает возможность просматривать имеющиеся в нем документы и отправлять из него документы в ящики контрагентов.
Обмен документами производится в системе EDI.Контур в виде сообщений. Ящик представляет собой логический контейнер для хранения всех сообщений как отправленных из этого ящика, так и полученных в этот ящик. Для просмотра всех сообщений внутри ящика, а также для отслеживания их статусов, используется механизм событий. Ящик можно представлять как непрерывный поток событий, каждое из которых привязано к некоторому сообщению. Приведем список основных типов событий:
- в ящик доставлено новое входящее сообщение;
- из ящика отправлено новое исходящее сообщение;
- исходящее сообщение доставлено в ящик контрагента;
- исходящее сообщение не доставлено в ящик контрагента (по причине какой-то ошибки);
- исходящее сообщение прочитано контрагентом;
- исходящее сообщение прошло проверку на стороне получателя;
- исходящее сообщение не прошло проверку на стороне получателя;
- на основании исходящего сообщения Invoic сформированы черновики счета-фактуры, ТОРГ-12 в Диадоке;
- черновики счета-фактуры, ТОРГ-12, сформированные на основании исходящего Invoic, подписаны и отправлены через Диадок;
- черновики исходящих счета-фактуры, ТОРГ-12, сформированные на основании исходящего сообщения Invoic, удалены в Диадоке;
- счет-фактура, ТОРГ-12, сформированные на основании входящего сообщения Invoic, подписаны отправителем и доставлены через Диадок;
- в счете-фактуре, ТОРГ-12, сформированных на основании исходящего Invoic, были обнаружены ошибки на стороне получателя;
- счет-фактура, ТОРГ-12 аннулированы.
Таким образом, для интеграции с системой необходимо постоянно запрашивать информацию о новых событиях в ящике и реагировать на них (например, формировать ответные сообщения на входящие или отображать состояния отправленных сообщений).