Проектирование и разработка системы обработки данных, получаемых ФГУП "Почта России" от ОАО "Ростелеком"

Описание формата и структуры входных и выходных файлов. Выбор языка программирования и Perl модуля для генерации документов в формате pdf. Валидация почтового адреса. Процесс создания алгоритма обработки данных. Структура штрихкодового идентификатора.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 04.11.2015
Размер файла 1,6 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Постановка задачи

Мировой опыт показывает, что, несмотря на развитие высоких технологий и активное использование электронной почты, большинство людей предпочитает получать официальные документы не только в электронном, но и в бумажном виде. Это относится и к телефонным счетам, квитанциям по оплате коммунальных услуг и многому другому.

Многим компаниям, имеющим большую клиентскую базу, требуются услуги подготовки, печати и отправки почтовых отправлений своим клиентам.

Целью настоящей дипломной работы является проектирование и разработка системы обработки данных, получаемых ФГУП «Почта России» от ОАО «Ростелеком».

Данная система предназначена для:

· Формирования почтовых отправлений по макету заказчика.

· Определения одного из цехов для производства почтовых отправлений.

· Создания сопроводительной документации, содержащей: акт приема-передачи данных, списки по ф. 103, отчет для клиента.

· Автоматизации труда операторов связи в цехах производства.

· Получения уведомлений об ошибках в работе программы, посредством протокла XMPP.

Для достижения поставленной задачи необходимо выполнить следующие задачи:

· Провести обзор и оценить возможности современных систем обработки данных и формирования почтовых отправлений.

· Изучить руководящие технические материалы «Почты России».

· Провести обзор языков программирования высокого уровня для разработки системы формирования почтовых отправлений.

· Произвести выбор общедоступных модулей для работы с файлами формата pdf, Microsoft Excel, для работы скачивания и загрузки файлов на ФТП сервер.

· Спроектировать общую схему работы системы.

· Разработать основные модули для выполнения функционала программы.

· Спроектировать структуру базу данных системы и выбрать систему управления базой данных.

· Разработать документацию к системе - руководство пользователя, текст программы.

· Изучить вредное влияние ПК на человека и провести анализ механизмов утилизации ПК в России и на Западе.

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

· Протестировать скорость работы системы и оценить узкие места в программе.

Введение

Обработкой и печатью партионных отправлений занимается ЦГП - филиал ФГУП «Почта России». Одним из клиентов филиала ЦГП (Центры гибридной почты) является компания ОАО «Ростелеком». ОАО «Ростелеком» рассылает коды активации учетных записей с сайта. Код активации отправляется заказным письмом, которое является регистрируемым почтовым отправлением с нанесением на отправление штрихкодового почтового идентификатора (ШПИ) для отслеживания сроков прохождения почтового отправления. Обработкой отправлений занимается аутсорсинговая компания. Работа со сторонней компанией влечет риск утечки персональных данных, а также накладывает дополнительные финансовые расходы на филиал ЦГП. Обработка и формирование отправлений силами филиала позволит сократить сроки обработки и отправки писем, разгрузит операторов печати в цехе от неэффективной работы по ручному созданию отчетов, а также уменьшит затраты на производство.

Разрабатываемая система позволит самостоятельно формировать почтовые отправления по заданному макету, а также создавать отчетную документацию, электронные списки для ПО «Партионная почта», отчет для клиента о количестве отправленных писем и присвоенных им кодах ШПИ (штриховой почтовый идентификатор).

1. Аналитический обзор аналогичных программных продуктов

Среди компьютерного программного обеспечения есть большое количество программных продуктов, предназначенных для обработки файлов и формирования отправления, на основе макета. В компании имеется два типа печатающих устройств: листовые машины и рулонные. Печать большого количества отправлений обычно осуществляют на рулонной машине, т.к. скорость печати на ней выше, а себестоимость одного отпечатка ниже. В компании установлены рулонные печатающие устройства фирмы IBM. Данные устройства принимают на вход файлы только в формате afp. Это специальный потоковый формат печати, разработанный компанией IBM. Поэтому для обработки почтовых отправлений, необходимо ПО, которое может создавать файлы в формате Advanced Function Presentation (afp).

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

1. DocBridge Mill от компании Compart [1]. Программное обеспечение состоит из нескольких компонентов:

· DocBridge Mill WorkBench. Графическая среда для создания схем преобразования данных. Используется для отрисовки схем, по которым будет производиться преобразование данных, упаковки этих схем в формат mia для последующего использования в продукте DocBridge Mill Server.

· DocBridge Mill Server. Программное обеспечение, устанавливаемое в системе в качестве демона (программа, работающая в фоновом режиме). В данном продукте возможно реализовать «горячие папки», в одну папку складываются исходные файлы, а в другой папке после обработки появляются готовые файлы. Для настройки горячей папки, в ПО загружается схема преобразования данных, созданная с помощью DocBridge Mill WorkBench, а также указываются пути к папкам для входных и выходных файлов. Доступ к настройкам ПО осуществляется через web интерфейс.

· Cpmcopy. Консольная утилита, предназначенная в основном для конвертации файлов из одного формата в другой.

Продукт заявлен как универсальный обработчик документов. Предназначен он для обработки данных и создания на основе шаблона, готовых отправлений. В качестве входных форматов может принимать как xml, xsl-fo, pdf, data-file, csv, так и множество других форматов, на выходе получаются файлы формата afp, pdf, csv. ПО было куплено в компании и использовалось для формирования отправлений некоторых клиентов. В основном, ПО использовалось для простой конвертации pdf файлов в формат afp. Возможные форматы, а также количество используемых для обработки ядер процессора, лицензируется и покупается отдельно. В компании была приобретена лицензия на 1 ядро, входные форматы: pdf, xsl-fo; выходной формат: afp. Главными недостатками Docbridge Mill являются:

· Невозможность создания отчетной документации, электронных списков для прогрузки в ПО «Партионная почта».

· Невозможность нанесения на отправления специальных меток реза (OMR метки, DataMatrix).

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

· Невозможность работы с данными в формате xml.

· Невозможность сортировки почтовых отправлений по индексам во время обработки.

2. Bta Print Machine от компании ITS Neopost [2]. Программное обеспечение от Neopost специально предназначено для обработки почтовых отправлений. ПО легко интегрируется в корпоративную сеть, автоматически принимает исходные данные из различных баз данных. Для написания программ, в Bta Print Machine используется язык, похожий на Visual Basic. В качестве форматов исходных данных можно использовать: xml, текстовые файлы, csv. На выходе получаются форматы: PCL, PDF, PS, TIFF, AFP. Программный продукт может создавать отчетную документацию, имеет возможность рассылки отчетов на E-Mail, факс; может наносить на отправления бар-коды, OMR метки для реза, автоматически распределять задания между печатающими машинами, сортировать и группировать отправления по разным признакам, архивировать обработанные данные. Основным недостатком продукта является его высокая цена, а также необходимость интеграции всех цехов и печатающих устройств в единую сеть и закупку на все станции данного ПО. В данный момент объединение всех печатающих устройств и рабочих станций, используемых для печати отправлений, невозможно по соображениям информационной безопасности.

3. Комплексное решение от компании GMC [3]. Компания GMC занимается разработкой программного обеспечения, предназначенного для обработки персонифицированных данных. GMC предлагет множество программных продуктов, таких как:

· Inspire Designer. Обладает многофункциональным интерфейсом для создания высококачественных, персонализированных документов прямого маркетинга, деловой документации и документов по требованию. Выполняется ввод данных, импортирование проектов, подготовка данных, проектирование и многосложный графический макет страниц.

· Inspire Print Output. Осуществляет всеобъемлющую поддержку потока данных печати документов, включая Advanced Function Presentation™ (AFP™), PostScript, PCL, Metacode, XML и PDF.

· Inspire Automator. Осуществляет выполнение разнообразных операций, таких как отправка документов по email, верификация данных посредством web-сервера, загрузка данных с/на ФТП сервер, в автоматическом режиме.

Для выполнения требуемого функционала по подготовке писем и отчетной документации для нашей компании, потребуется приобрести два программных продукта: Inspire Designer и Inspire Automator. Система имеет возможность расширения, за счет покупки дополнительных модулей. Есть возможность написания дополнительных модулей/функций на языке Java. Главным недостатком данной системы является ее высокая стоимость (ок. 1 млн. евро).

Сравнительная характеристика продуктов представлена в таблице 1.

Таблица 11 - Сравнение различных продуктов для формирования почтовых отправлений

Название системы

Возможность получения формата afp на выходе

Возможность создания отчетной документации

Стоимость системы

Простота в использовании

Возможность валидации адреса, используя запросы к web-сервису

DocBridge Mill

+

-

-

+

-

BTA PrintMachine

+

+

-

+

-

GMC Inspire

+

+

-

+

+

На рынке ПО для печати и подготовки почтовых отправлений нет большого количества программных продуктов. Многие компании заказывают разработку программного продукта «под себя». Как видно, из таблицы 1, основным недостатком готовых программных решений для обработки данных является их стоимость, а также в некоторых случаях негибкость системы, невозможность настройки под определенные задачи.

Среди рассмотренных систем, только система GMC Inspire имеет возможность удовлетворить все требования к функционалу системы. Главным недостатком данной системы является ее высокая цена, а также необходимость объединения всех цехов в единую сеть. На данном этапе развития филиала ЦГП, нет технической возможности реализовать объединение всех цехов компании в единую сеть. Без объединения в единую сеть, система может обрабатывать данные локально на каждом ПК, но тогда встает проблема синхронизации данных, создания единых отчетов, подсчета затрат на печать.

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

2. Формирование требований к системе

2.1 Описание формата и структуры входных файлов

2.1.1 Дизайн-макет отправления

Клиент предоставляет дизайн-макет почтового отправления. Для передачи дизайн-макетов используются композитные PDF файлы, соответствующие стандарту PDF/x-1a.

Требования к макету

· Размер документа должен соответствовать обрезному формату издания.

· Во избежание появления муара и зубчатости все изображения должны быть заверстаны в 100%-м масштабе.

· Все шрифты должны быть представлены в формате TrueType или PostScript Type 1.

· Разрешение изображений 600-1200 dpi.

· Все элементы дизайн - макета документов должны быть выполнены в цветовых пространствах CMYK или Grayscale.

· Значащие элементы дизайн - макета документов должны быть расположены не ближе 5 мм относительно линий реза, фальцовки и перфорации.

· Размер макета: А4 (210х297мм).

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

В макете несколько полей персонализации:

· Фамилия, имя, отчество клиента.

· Код активации.

· Адресный блок.

· Код ШПИ.

· Поле служебной информации (содержит имя файла, дату отправки, порядковый номер отправления в файле).

Внешний вид дизайн - макета документа представлен в приложении А.

2.1.2 Формат файла данных

Клиент передает нам файл, зашифрованный при помощи ПО Верба. Основным каналом обмена данными предполагается обмен данными по телекоммуникационным каналам по протоколу FTP/FTPS. Расшифровкой файла занимаются администраторы в цехе, расположенном в Подольском АСЦ (автоматический сортировочный центр). После расшифровки, получается архив формата zip, внутри которого располагаются файлы в формате xml. Один файл содержит не более 500 клиентов, при количестве отправлений более 500, данные размещаются в нескольких файлах. Кодировка файла: UTF-8.

Файл имеет древовидную структуру. Примерный вид файла:

<mails>

<mail>

<userid>*****</userid>

<lastname>Жерлицин</lastname>

<firstname>Александр</firstname>

<middlename>Сергеевич</middlename>

<code>********</code>

<zip>101000</zip>

<region></region>

<district></district>

<city********></city>

<street></street>

<bulding1>17</bulding1>

<bulding2></bulding2>

<bulding3></bulding3>

<apartment>65</apartment>

</mail>

<mail>

……

</mail>

</mails>

Корневым элементом документа является элемент с именем <mails>. Данные клиентов располагаются в элементах <mail>.

userid - код клиента

lastname - фамилия

firstname - имя

middlename - отчетство

code - код активации (наносится в теле почтового сообщения)

zip - почтовый индекс

region - название региона

district - область

city - город

street - улица

bulding1 - дом

bulding2 - строение

bulding3 - корпус

apartment - квартира

Данные в элементах region, district, city, street закодированы в HTML Entities. Каждому символу слова соответствует соответствующий цифровой код, который записывается в виде сущности &#<Цифровой код символа>;. Например буква 'Ю', закодированная в HTML Entities будет выглядеть как &#x42E;, причем кодируются не все символы, а только символы со 128-255 номера из таблицы ASCII. Все перечисленные сущности должны присутствовать в исходном документе, даже если адрес не содержит квартиры, то элемент apartment должна быть в документе.

Формат именования файла

XXXFILYYMMDDNNNN.ZIP,

где XXX - код клиента (любая трехбуквенная последовательность из латинских букв). Для клиента ОАО «Ростелеком» принимает значение RTK.

FIL - код филиала/подразделения предприятия (например MOS)

YYMMDD - дата в формате последние две цифры года, номер месяца и число из двух цифр (если значение месяца или числа содержит менее двух цифр, требуется дополнить их ведущими нулями до нужного количества символов)

NNN - порядковый номер файла в день

.ZIP - признак архивного файла

Для обмена данными используется внутренний ftp сервер ФГУП «Почта России». Клиент заблаговременно предупреждает о размещении файлов на ftp. Пример уведомления:

ОАО «Ростелеком»

Подтверждение успешной приемки.

Имя файла: RTKMOS1502060000.zip

Идентификатор: 001-000-245

Дата приемки: 21.03.2015 09:15:43 UTC

2.2 Описание формата и структуры выходных файлов

На выходе программа должна формировать следующие файлы:

1. Файлы для печати почтовых отправлений

2. Списки для загрузки данных в ПО Партионная почта

3. Акт приема-передачи данных

4. Список соответствия id клиента и присвоенного ему ШПИ

5. Печатные списки формы 103

2.2.1 Файлы для печати почтовых отправлений

Формат файла: afp

Количество документов в файле: не более 500

Формат имени файла: ymmddnn.afp, где

ymmdd - дата формирования файла

nn - порядковый номер файла за текущий день

Необходимо сформировать спул печатных файлов для передачи непосредственно в печатный цех. Получить файлы в формате afp можно при помощи ПО DocBridgeMill, путем конвертации из формата pdf. При конвертации необходимо указать Form Definition в параметрах программы.

Form Definition - это правило раскладки полученного файла на печатном рулоне. При помощи него определяется формат отпечатка, его ориентация, формат печати (односторонний, двухсторонний), расположение отпечатка на бумаге. Используя таблицу соответствия (Form Definitions and Page Definitions Supplied with Infoprint), получим название требуемого Form Definition: F1N20010[4].

2.2.2 Списки для загрузки данных в ПО Партионная почта

Формат файла: ini, txt

Формат имени файла: Соответствует формату имени файла для печати почтовых отправлений, только имеет формат zip

Списки представляют из себя два файла, упакованные в архив формата zip. Оба файла имеют одинаковое имя, за исключением того, что в конце имени файла формата ini пишется буква 'h'.

Первый файл формата ini содержит в себе общую информацию об отправлениях: категория отправления, ИНН клиента, количество отправлений, общий вес отправлений, цена отправлений.

Примерное содержимое файла:

[Main]

Inn=7707049388

SendCtg=3

SendDate=20140905

ListNum=13

MailType=2

MailCtg=1

[Summary]

MailCount=62

MassSum=1240

MassRateSum=202120

Описание основных полей представлено в таблице 2.

Таблица 22 - Описание полей ini файла списков для ПО Партионная почта

Имя поля

Описание

Inn

ИНН клиента

SendCtg

Код категории отправителя (население-1, бюджетная организация-2, хозрасчетная организация-3)

SendDate

Дата сдачи партионной почты объекту почтовой связи в формате yyyymmdd

ListNum

Уникальный номер списка партионной почты в день сдачи списка (в числовом формате, начиная с 1, максимальная длина 3 символа)

MailType

Вид почтового отправления (письмо-2, бандероль-3, посылка-4, мелкий пакет-5 и т.д…)

MailCtg

Код категории почтового отправления (простое-0, заказное-1, с объявленной ценностью-2)

MailCount

Общее количество отправлений в списке партионной почты

MassSum

Общий вес отправлений в списке партионной почты

MassRateSum

Общая сумма платы за пересылку всех отправлений в списке (не включая НДС)

Категории писем определяются в соответствии с руководящим техническим материалом (РТМ) 0002.11.14 [5].

Второй файл имеет формат txt. Кодировка файла cp866. В нем расположена основная информация об отправлении (код ШПИ, индекс, город, вес отправления). Файл содержит текстовые строки, в конце которых располагается управляющий символ «возврат каретки», новая строка (ASCII код 13 и 10). Разделителем элементов данных в строке является символ: | (ASCII код 124). Первая строка файла данных с разделителями содержит наименование элементов данных, последующие строки содержат данные, позиционно соответствующие элементам данных.

Файл содержит следующие поля:

· BARCODE - ШПИ код отправления

· MASS - вес отправления в граммах

· MASSRATE - сумма платы за пересылку в копейках

· PAYMENT - сумма наложенного платежа в копейках

· VALUE - сумма объявленной ценности в копейках

· INSRRATE - сумма платы за объявленную ценность в копейках

· AIRRATE - выделенная сумма платы за пересылку воздушным транспортом в копейках

· INDEXTO - почтовый индекс адресата

· REGION - регион

· AREA - район

· CITY - город

· STREET - улица

· ADDRESSEE - адресат

· COMMENT - служебные данные. Разделителем служебных данных является ';'

· MAILDIRECT - код страны места назначения почтового отправления (для России - 643)

Примерный вид файла:

BARCODE|MASS|MASSRATE|PAYMENT|VALUE|INSRRATE|AIRRATE|INDEXTO|REGION|AREA|CITY|STREET|ADDRESSEE|COMMENT|MAILDIRECT|ALTERDELIV|TELADDRESS

14083878225815|20|3260|0|0|0|0|109147|г.Москва ул.Абельмановская|||, 11, 42|ОАО "Ростелеком"||643|0|

14083878225822|20|3260|0|0|0|0|121596|Москва Город|||Запорожская Улица, 6, 115|ОАО "Ростелеком"||643|0|

2.2.3 Акт приема-передачи данных

Формат файла: xls

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

2.2.4 Список соответствия id клиента и присвоенного ему ШПИ

Формат файла: xml

Кодировка файла: utf8

Файл представляет собой структуру xml. Корневым элементом является элемент с именем CodeSHPI, имеющим 5 атрибутов:

· TimeShtamp - время в формате dd/mm/yyyy

· FileNum - номер файла за текущую дату

· All - общее количество отправлений, по которым предоставлена информация в файле

· AllGood - количество валидных отправлений

· AllBad - количество невалидных отправлений

Корневой элемент содержит 2 элемента: <Good> и <Bad>, внутри которых расположены данные об отправлениях. Данные располагаются в элементах <Code>, которые содержат 7 элементов:

· USERID - уникальный код клиента

· SHPI/ERROR - присвоенный клиенту код ШПИ, в случае валидного отправления. В случае невалидного отправления, элемент имеет имя ERROR и внутри него содержится описание ошибки

· PostDate - дата и время отправления письма (05.09.2014 15:32:01)

· PostName - имя файла с данными, в котором располагался данный клиент

· Surname - фамилия клиента

· Name - имя клиента

· MiddleName - отчетсво клиента

Примерный вид файла:

<?xml version="1.0" encoding="Cp1251" standalone="yes"?>

<CodeSHPI TimeShtamp="9/5/2014" FileNum="01" All="6066" AllGood="6062" AllBad="4">

<Good>

<Code>

<USERID>20767931</USERID>

<SHPI>14083878165814</SHPI>

<PostDate>05.09.2014 15:32:01</PostDate>

<PostName>20140901000001.xml</PostName>

<Surname>Иштуганова</Surname>

<Name>Гульнара</Name>

<MiddleName>Радмировна</MiddleName>

</Code>

</Good>

<Bad>

<Code>

<USERID>20773730</USERID>

<PostDate>05.09.2014 15:32:01</PostDate>

<PostName>20140901000005.xml</PostName>

<Surname>Мальцев</Surname>

<Name>Олег</Name>

<MiddleName>Станиславович</MiddleName>

<Error>Неверно указан адрес</Error>

</Code>

</Bad>

</CodeSHPI>

2.3 Служебные файлы

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

· Журнал работы программы

· Журнал ошибок. В этом файле регистрируются все ошибки, возникающие при работе программы

· Конфигурационный файл

2.3.1 Журнал работы программы

Формат файла: txt

Имя файла: log.txt

В этом файле регистрируется время и выполняемая в текущий момент операция. Файл предназначен для анализа и разбора действий, в случае возникновения проблем. Структура файла:

hh:mm:ss DD/MM/YYYY <text>,

где hh:mm:ss - время сообщения

DD/MM/YYYY - дата сообщения

<text> текст сообщения

Записи отделяются друг от друга символом '\n'.

2.3.2 Журнал ошибок

Формат файла: txt

Имя файла: error.txt

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

2.3.4 Конфигурационный файл

Формат файла: ini

Имя файла: config.ini

Файл содержит настройки программы. Настройки в файле разделены на несколько групп:

· [main] В этой группе расположены настройки, относящиеся к работе всей программы

· [NOVOSIB], [PITER], [MOSCOW] В этих группах расположены настройки, относящиеся к определенному региону, в котором производится печать и конвертование отправлений

Описание основных полей представлено в таблице 3.

Таблица 33 - Описание полей конфигурационного файла

Группа

Имя поля

Описание

[main]

cpus

Количество потоков для обработки данных. Обычно равно колисеству ядер процессора в системе

short_company_name

Краткое название компании

input_dir

Папка на ФТП сервере, содержащая входные файлы (/ftp/ftp-shared/CGPSPB/RTK_in)

company

Полное название компании-клиента (ОАО "Ростелеком" )

xml_filenum

Номер выходного xml файла за текущий день. Хранится дата обработки и номер файла в формате yyyymmdd;nn (20150415;01)

inn

ИНН компании-клиента (7707079388)

ftp_server

Ip адрес ФТП сервера (172.24.161.186)

flock

Имя файла, хранящего PID (Process IDentifier) текущего процесса программы. Предназначен для предотвращения одновременного запуска нескольких копий программы (rostelecom_pid.pid)

lists_num

Номер последнего акта приема-передачи. Предназначен для сохранения сквозной нумерации актов приема-передачи

spool_size

Максимальное количество отправлений в одном файле

error_file

Имя файла для записи ошибок программы (rtk_error.txt)

log_file

Имя файла журнала (log.txt)

output_dir

Путь к папке на ФТП сервере, куда буду загружаться файлы

[NOVOSIB], [PITER], [MOSCOW]

f103_rcpt

Электронная почта получателей списка по ф.103 для каждого региона. Несколько получателей разделяются символом ';' (103f@ascpost.ru)

app_rcpt

Электронная почта получателей акта приема-передачи данных в каждом регионе. Несколько получателей разделяются символом ';' (k.baranov@cgppost.ru;o.mamonov@cgppost.ru)

ops

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

3. Предварительная схема работы системы

1. Администраторы загружают исходные файлы в папку на ФТП сервере.

2. Программа в автоматическом режиме проверяет наличие новых файлов с расширением .zip на ФТП сервере.

3. При обнаружении файлов происходит их загрузка с ФТП сервера в папку XML.

4. Программа производит извлечение файлов из архива и сохраняет имена файлов формата xml.

5. Данные из каждого файла считываются в структуру типа хэш массивов хэшей.

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

7. Асинхронно формируется отправление для каждого клиента.

8. Когда количество отправлений становится равным размеру спула или если нет больше клиентов в массиве, печатные файлы собираются в один, в формате pdf. Одновременно формируется печатный список ф. 103 и вставляется в конец файла, а также происходит формирование электронных списков ф. 103 и их сохранение на диске.

9. После формирования файлов, происходит конвертирование pdf файлов в afp.

10. Создание акта приема-передачи и отправка его по электронной почте

11. Отправка списков ф.103 по электронной почте для прогрузки в ПО Партионная почта.

12. Загрузка печатных файлов формата afp на ФТП сервер.

Разрабатываемая система должна работать в операционной системе Linux с 32-х или 64-х битной архитектурой. Программировать систему целесообразно на языке высокого уровня. Выбор подходящего языка программирования для решения задачи, необходимо произвести с помощью системы поддержки принятия решений.

Печать производится на ролевой машине IBM InfoPrint 4100 (Рис. 1).

Рисунок 11 - Внешний вид IBM InfoPrint 4100

Ширина бумаги: 430 мм. Отправления имеют ширину 210 мм., поэтому надо располагать их по 2 шт в ряд. Отпечатанный ролик разрезается на отдельные отправления. Отдельные отправления складываются Z-фальцем и упаковываются в конверт стандарта С65 (114х229мм) с прозрачным окном. Резка отправлений и упаковка в конверты осуществляется на конвертовальном оборудовании Kern 3500 (Рисунок 2).

Внешний вид брендированного конверта стандарта С65 с прозрачным адресным окном представлен в приложении Г.

Соответствие почтового индекса региону будем хранить в СУБД MySql.

MySQL - это быстрая, надежная, открыто распространяемая СУБД, как и многие другие СУБД, функционирует по модели "клиент/сервер". Под этим подразумевается сетевая архитектура, в которой компьютеры играют роли клиентов либо серверов. [6].

Рисунок 22 - Конвертовальная система Kern 3500

СУБД MySql имеет следующие преимущества:

· простота установки;

· наличие web-интерфейса в виде утилиты phpmyadmin (PHPMyAdmin -- веб-приложение с открытым кодом, написанное на языке PHP и представляющее собой веб-интерфейс для администрирования СУБД MySQL [7]);

· свободное распространение.

3.1 Выбор языка программирования

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

Структуризация задачи в виде иерархической структуры с несколькими уровнями (цели-критерии-альтернативы).

Попарное сравнение лицом принимающим решения (далее - ЛПР) элементов каждого уровня. Результаты переводятся в числа с помощью специальной таблицы.

Вычисление коэффициентов важности для элементов каждого уровня. При этом проверяется согласованность суждений ЛПР.

Подсчет количественного индикатора качества каждой альтернативы и определение наилучшей альтернативы.

Цель: Выбрать оптимальный язык программирования, наиболее полно соответствующий перечисленным критериям.

Критерии:

· лицензия, под которой распространяется язык программирования (далее - ЯП);

· платформонезависимость (возможность работы программ, написанных на данном ЯП, на разных ОС);

· наличие и количество модулей для работы с pdf файлами;

· сложность освоения;

· уровень знания данного ЯП у ЛПР;

· наличие IDE для разработки;

· наличие русскоязычной литературы по данному ЯП;

· поддержка и развитое сообщество;

· скорость работы программ на данном ЯП;

· работа на сервере без GUI

Альтернативы

· Java

· C++

· Perl

· Phyton

· C#

· php

Таблица 44 - Шкала словесных определений уровней важности

Уровень важности

Количественное значение

Равная важность

1

Умеренное превосходство

3

Существенное или сильное превосходство

5

Значительное (большое) превосходство

7

Очень большое превосходство

9

При сравнении элементов, которые принадлежат одному уровню иерархии, ЛПР выражает свое мнение, используя одно из определений, приведенных в таблице. В матрицу заносится соответствующее число. Сравнение критериев приведено в таблице 5.

Таблица 55 - Сравнение критериев выбора ЯП

Критерии

Платформо независимость

Модули для работы с pdf

Cложность освоения

Уровень знания данного ЯП у ЛПР

Наличие IDE для разработки

Наличие русскоязычной литературы по ЯП

Поддержка и развитое сообщество

Скорость работы программ на данном ЯП

Работа на сервере без GUI

лицензия, под которой распространяется ЯП

Собственный вектор

Вес критерия

Платформонезависимость

1,00

0,30

0,14

0,10

3,00

0,20

0,30

0,14

0,20

1,00

0,714377

0,06934227

Модули для работы с pdf

3,00

1,00

0,20

0,14

7,00

3,00

3,00

3,00

5,00

5,00

1,205615

0,11702518

Cложность освоения

7,00

5,00

1,00

1,00

7,00

5,00

5,00

3,00

1,00

7,00

1,44433

0,14019643

Уровень знания данного ЯП у ЛПР

9,00

7,00

1,00

1,00

9,00

5,00

7,00

3,00

3,00

9,00

1,562938

0,15170933

Наличие IDE для разработки

0,30

0,14

0,14

0,10

1,00

0,30

0,30

0,14

0,20

1,00

0,657411

0,06381273

Наличие русскоязычной литературы по ЯП

5,00

0,30

0,30

0,20

0,14

1,00

1,00

0,20

0,14

1,00

0,780028

0,07571481

Поддержка и развитое сообщество

3,00

0,30

0,20

0,14

3,00

1,00

1,00

0,30

1,00

5,00

0,934236

0,09068328

Скорость работы программ на данном ЯП

7,00

0,30

0,30

0,30

7,00

5,00

3,00

1,00

0,30

5,00

1,111871

0,10792573

Работа на сервере без GUI

5,00

0,20

1,00

0,30

5,00

7,00

1,00

3,00

1,00

7,00

1,183672

0,11489525

лицензия, под которой распространяется ЯП

1,00

0,20

0,14

0,10

1,00

1,00

0,20

0,20

0,14

1,00

0,707709

0,068695

Платформо независимость

Альтернатива

Perl

Phython

Java

C#

Php

C++

Собственный вектор

Вес критерия

Perl

1

3

3

9

1

3

1,987013346

0,296573977

Phython

0,3

1

3

7

1

3

1,443968521

0,215521193

Java

0,3

0,3

1

3

1

1

0,849024984

0,126722207

C#

0,1

0,14

0,3

1

0,3

0,3

0,373410456

0,05573381

Php

1

1

1

3

1

3

1,316074013

0,19643215

C++

0,3

0,3

1

3

0,3

1

0,730399769

0,109016663

Модули для работы с pdf

Perl

1

1

3

3

5

9

2,118028882

0,295898969

Phython

1

1

3

3

5

7

2,052526719

0,286747997

Java

0,3

0,3

1

3

3

7

1,242218184

0,173543941

C#

0,3

0,3

0,3

1

3

3

0,83791658

0,117061035

Php

0,2

0,2

0,3

0,3

1

3

0,567777227

0,079321249

C++

0,1

0,14

0,14

0,3

0,3

1

0,339478538

0,047426808

Cложность освоения

Perl

1

1

5

3

1

7

1,789157867

0,264396383

Phython

1

1

3

1

1

5

1,402850552

0,207309046

Java

0,2

0,3

1

0,3

0,3

3

0,597295684

0,088266564

C#

0,3

1

3

1

1

5

1,206845191

0,178343962

Php

1

1

3

1

1

5

1,402850552

0,207309046

C++

0,14

0,2

0,3

0,2

0,2

1

0,367953052

0,054374998

Уровень знания данного ЯП у ЛПР

Perl

1

1

5

3

1

5

1,715468145

0,265709983

Phython

0,3

1

3

3

1

5

1,38449605

0,214445499

Java

0,2

0,3

1

3

0,2

1

0,659990695

0,102226391

C#

0,3

0,3

0,3

1

1

3

0,730399769

0,113132098

Php

1

1

5

1

1

5

1,495348781

0,231615551

C++

0,2

0,2

1

0,3

0,2

1

0,470464009

0,072870478

Наличие IDE для разработки

Perl

1

0,3

0,14

0,14

1

0,3

0,452701906

0,060871792

Phython

3

1

0,2

0,14

3

0,3

0,724127806

0,097368614

Java

7

5

1

1

5

3

2,187861938

0,294187135

C#

7

7

1

1

7

5

2,53678123

0,341103975

Php

1

0,3

0,2

0,14

1

0,3

0,473342028

0,063647131

C++

3

3

0,3

0,2

3

1

1,062158617

0,142821352

Наличие русскоязычной литературы по ЯП

Perl

1

0,3

0,2

0,2

0,3

0,2

0,404731086

0,060356855

Phython

3

1

0,3

0,3

1

0,3

0,730399769

0,108923269

Java

5

3

1

1

3

0,3

1,38449605

0,20646753

C#

5

3

1

1

3

1

1,609353928

0,240000201

Php

3

1

0,3

0,3

1

0,3

0,730399769

0,108923269

C++

5

3

3

1

3

1

1,846255156

0,275328876

Поддержка и развитое сообщество

Perl

1

1

0,3

0,3

0,2

3

0,694303285

0,102698791

Phython

1

1

0,3

0,3

1

3

0,849024984

0,125584656

Java

3

3

1

1

3

5

1,846255156

0,273091279

C#

3

3

1

1

3

7

1,92556297

0,2848222

Php

5

1

0,3

0,3

1

3

1,038225571

0,153570512

C++

0,3

0,3

0,2

0,14

0,3

1

0,40720699

0,060232562

Скорость работы программ на данном ЯП

Perl

1

1

0,3

3

3

0,2

0,925868311

0,127160352

Phython

1

1

0,3

3

3

0,2

0,925868311

0,127160352

Java

3

3

1

5

3

0,3

1,588297594

0,218139533

C#

0,3

0,3

0,2

1

0,3

0,1

0,390435429

0,053623076

Php

0,3

0,3

0,3

3

1

0,14

0,571250551

0,078456537

C++

5

5

3

9

7

1

2,87938824

0,395460151

Работа на сервере без GUI

Perl

1

1

3

7

1

1

1,46311146

0,215737856

Phython

1

1

3

7

1

1

1,46311146

0,215737856

Java

0,3

0,3

1

5

0,3

0,3

0,669779542

0,098759942

C#

0,14

0,14

0,2

1

0,2

0,14

0,319930402

0,047174191

Php

1

1

3

5

1

1

1,402850552

0,2068523

C++

1

1

3

7

1

1

1,46311146

0,215737856

лицензия, под которой распространяется ЯП

Perl

1

1

3

5

1

1

1,402850552

0,212349183

Phython

1

1

3

5

1

1

1,402850552

0,212349183

Java

0,3

0,3

1

1

0,3

0,3

0,547722558

0,082908644

C#

0,2

0,2

1

1

0,2

0,2

0,447213595

0,067694625

Php

1

1

3

5

1

1

1,402850552

0,212349183

C++

1

1

3

5

1

1

1,402850552

0,212349183

Таблица 66 - Сравнение ЯП по весам критериев

wi - важность i-го критерия

Vji - важность j-й альтернативы по i-му критерию

N - количество альтернатив

Платформонезависим ость

Модули для работы с pdf

Cложность освоения

Уровень знания данного ЯП у ЛПР

Наличие IDE для разработки

Наличие русскоязычной литературы по ЯП

Поддержка и развитое сообщество

Скорость работы программ на данном ЯП

Работа на сервере без GUI

лицензия, под которой распространяется ЯП

Ценность

Perl

0,0206

0,0346

0,0371

0,0403

0,0039

0,0046

0,0093

0,0137

0,0248

0,0146

0,2034

Phython

0,0149

0,0336

0,0291

0,0325

0,0062

0,0082

0,0114

0,0137

0,0248

0,0146

0,189

Java

0,0088

0,0203

0,0124

0,0155

0,0188

0,0156

0,0248

0,0235

0,0113

0,0057

0,1567

C#

0,0039

0,0137

0,025

0,0172

0,0218

0,0182

0,0258

0,0058

0,0054

0,0047

0,1414

Php

0,0136

0,0093

0,0291

0,0351

0,0041

0,0082

0,0139

0,0085

0,0238

0,0146

0,1602

C++

0,0076

0,0056

0,0076

0,0111

0,0091

0,0208

0,0055

0,0427

0,0248

0,0146

0,1493

Из таблицы 6 видно, что наибольшее значение V=0.2 у ЯП Perl.

Исследования показали, что выбор языка программирования несколькими способами влияет на производительность труда программиста и качество создаваемого им кода. Если язык хорошо знаком программистам, они работают более производительно. Данные, полученные при помощи оценки Cocomo2, показывают, что программисты, использующие язык с которым они работали 3 года и более, примерно на 30% более продуктивные, чем программисты, имеющие аналогичный опыт, но для которых язык является новым [8].

Perl -- высокоуровневый интерпретируемый динамический язык программирования общего назначения, созданный Ларри Уоллом, лингвистом по образованию. Название языка представляет собой аббревиатуру, которая расшифровывается как Practical Extraction and Report Language -- «практический язык для извлечения данных и составления отчётов» [9]. В настоящее время большинство поставщиков операционных систем включают Perl в качестве стандартной составляющей своей системы [10]. Perl имеет развитое сообщество и большое количество модулей. Имеются модули для работы с базой данных, обращения к web страницам, составления отчетов, разбора xml файлов, создания и редактирования pdf файлов. Благодаря возможности разработки отдельных модулей на Perl, мы можем разработать основные модули, которые в дальнейшем можно использовать для обработки данных от любых клиентов.

Perl относится к языкам очень высокого уровня. Это означает, что программный код получается весьма компактным; программа, написанная на Perl, занимает от одной до трех четвертей объема аналогичной программы на C. Программы Perl быстрее пишутся, быстрее читаются, быстрее отлаживаются, а их сопровождение занимает меньше времени [11].

По состоянию на 01.04.2015 последней стабильной версией Perl является версия 5.20.2, ее и будем использовать. Дистрибутив для установки можно загрузить с официального сайта сообщества Perl http://www.perl.org/

На Perl, используя модуль для работы с pdf файлами, сформируем отправления в формате pdf, после чего будем производить конвертирование в формат afp, с помощью купленного в компании ПО Docbridge Mill cpmcopy. В компании была куплена только версия для Windows систем, для работы в системе Linux будем использовать утилиту wine.

Wine -- свободное программное обеспечение, позволяющее пользователям UNIX-подобных систем архитектуры x86 (и других архитектур, при наличии совместимости, например, AMD64) исполнять 16-, 32- и 64- битные приложения Microsoft Windows (64-битные приложения находятся в стадии ранней реализации)[12].

3.2 Выбор Perl модуля для генерации документов в формате pdf

Perl имеет множество расширений (модулей) для выполнения различных задач. Модули хранятся в базе CPAN (Comprehensive Perl Archive Network). По состоянию на 01.04.2015 хранилище содержало 146,249 модулей. Для генерации почтовых отправлений в формате PDF выберем несколько наиболее популярных модулей из хранилища CPAN и протестируем их на наличие необходимого функционала.

PDF

Модуль PDF версии 1.11, не обновлялся с 14.02.2000 года. Модуль позволяет только прочитать системную информацию из документа pdf, получить его версию, количество страниц в документе. Модуль не покрывает требуемый для данного проекта функционал и не умеет создавать документы в формате pdf.

CAM::PDF

CAM::PDF - PDF manipulation library [13]. Модуль поддерживается, текущая версия модуля 1.60, последнее обновление 15.08.2013. Модуль позволяет манипулировать документами в формате pdf, копировать страницы, собирать несколько документов в один, извлекать изображения из документов, вставлять метки, добавлять шрифты. Данный модуль также не позволяет добавлять в документ pdf пользовательский текст.

PDF::API2

PDF::API2 - Facilitates the creation and modification of PDF files [14]. Широко распространенный и известный модуль для создания и модификации документов в формате pdf. Модуль активно поддерживается, и постоянно обновляется. В работе модуля не зафиксировано каких-либо серьезных ошибок. Текущая версия модуля - 2.0.23 (по состоянию на 01.04.2015). Работа с модулем описана во многих статьях в интернете, например в журнале «Системный администратор» №3 от 2006г. Модуль позволяет создавать документы в формате pdf, манипулировать страницами в документе (перемещать, копировать, вставлять из других документов), наносить пользовательский текст на шаблоны, вставлять бар-коды, вставлять картинки. Одним из недостатков модуля PDF::API2 является его относительно невысокая скорость работа, но данный недостаток перекрывается его широким функционалом.

PDF::Reuse

PDF::Reuse - Reuse and mass produce PDF documents [15]. Второй по популярности модуль для работы с документами pdf в Perl. Модуль активно поддерживается разработчиком и постоянно обновляется. Текущая версия модуля 0.36 (по состоянию на 01.04.2015). Модуль позволяет манипулировать страницами документа (создавать, менять местами, копировать из других документов), добавлять текст в документ, шрифты. Модуль имеет высокую скорость работы, благодаря работе с документом pdf на «низком» уровне, но в нем нет возможности добавлять бар-коды в документ.

Проанализировав основные модули для работы с pdf в Perl, остановим свой выбор на PDF::API2. Данный модуль хоть и не отличается высокой скоростью работы, зато его функционала достаточно для поставленной задачи.

3.3 Валидация почтового адреса

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

· КЛАДР (классификатор адресов Российской Федерации) -- ведомственный классификатор ФНС России, созданный для распределения территорий между налоговыми инспекциями и автоматизированной рассылки корреспонденции [16].

· ФИАС - Федеральная информационная адресная система

Оба справочника распростряняются бесплатно, но справочник КЛАДР является устаревшим, поэтому использовать мы будем справочник ФИАС. Справочник ФИАС поставляется в виде набора файлов в формате DBF со следующей структурой:

· KLADR - содержит объекты c 1-го по 4-й уровень классификации (регионы; районы (улусы); города, поселки городского типа, сельсоветы; сельские населенные пункты);

· STREET - содержит объекты 5-го уровня классификации (улицы городов и населенных пунктов);

· DOMA - содержит объекты 6-го уровня классификации (номера домов улиц городов и населенных пунктов);

· FLAT - содержит объекты 7-го уровня классификации (номера квартир домов);

· SOCRBASE - содержит объекты с краткими наименованиями типов адресных объектов;

· ALTNAMES - содержит сведения о соответствии кодов записей со старыми и новыми наименованиями адресных объектов, а также сведения о соответствии кодов адресных объектов до и после их переподчинения.

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

В компании ФГУП «Почта России» имеется сетевой сервис, который принимает на вход адресную строку, а возвращает код состояния, показывающий корректность адреса, а также разобранную на составляющие части адресную строку.

Для обращения к сервису необходимо отправить POST запрос по протоколу https (протокол http с шифрованием). Для обмена данными с сервером используется протокол SOAP (Simple Object Access Protocol -- простой протокол доступа к объектам).

Пример SOAP запроса к серверу

<soapenv:Envelope xmlns:soapenv="https://schemas.xmlsoap.org/soap/envelope/"

xmlns:cle="https://clean.soap.cleaner.hflabs.ru">

<soapenv:Header/>

<soapenv:Body>

<cle:doCleanRequest>

<data>WORK</data>

<data>москва озерковская д. 50 стр1 оф 201</data>

<mapping>cdi-address-clean</mapping>

</cle:doCleanRequest>

</soapenv:Body>

</soapenv:Envelope>

Ответ от сервера:

<soapenv:Envelope xmlns:soapenv="https://schemas.xmlsoap.org/soap/envelope/">

<soapenv:Body>

<ns2:doCleanResponse xmlns:ns2="https://clean.soap.cleaner.hflabs.ru">

<data>WORK</data>

<data>115054</data>

<data>115054</data>

<data>РОССИЯ</data>

<data>Г</data>

<data>МОСКВА</data>

<data/>

<data/>

<data>Г</data>

<data>МОСКВА</data>

<data/>

<data/>

<data>НАБ</data>

<data>ОЗЕРКОВСКАЯ</data>

<data>50</data>

<data/>

<data/>

<data/>

<data>1</data>

<data/>

<data/>

<data/>

<data/>

<data/>

<data/>

<data/>

<data>201</data>

<data/>

<data/>

<data/>

<data/>

<data>7700000000021080002</data>

<data>45286560000</data>

<data>GOOD</data>

<data>VALIDATED</data>

<data/>

<data>ЦЕНТРАЛЬНЫЙ</data>

<data>07.11.2013</data>

</ns2:doCleanResponse>

</soapenv:Body>

</soapenv:Envelope>

Система возвращает разобранный адрес, а также код проверки и код полноты адреса, которые расположены в полях data[29] и data[30]. Отправлять запросы к системе будем посредством функционала Perl модуля Mojo::UserAgent.

4. Процесс создания алгоритма обработки данных

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

Основные функциональные модули программы перечислены в табл. 7.

Таблица 77 - Основные функциональные модули системы обработки данных

Название модуля

Описание

F103.pm

Модуль включает в себя 2 функции: generate_ini. Функция для создания электронных списков по ф. 103. На выходе генерирует два файла (ini и txt) и архивирует их в формат zip. generate_f103. Функция для генерации печатных списков по ф.103. Модуль генерирует список в формате pdf и сохраняет его под именем sp_$lists_num_f103.pdf, где $lists_num - номер списка.

AddressInfo.pm

Модуль для валидации адреса. В качестве параметра модуль получает в строке адрес для валидации. Возращает модуль статус валидации (0 - невалидный адрес, 1- валидация прошла успешно) и разобранный на составные части адрес (индекс, город, район, регион и т.д…)

ScpUpload.pm

Модуль для загрузки файлов на сервер по защищенному протоколу ssh. Авторизация на сервере осуществляется по ключу.

App.pm

Модуль для генерации Акта приема-передачи. На вход подаются данные о файлах (наименование, количество отправлений, количество листов, формат), название компании, директория для записи файла. На выходе гененрирует файл формата Microsoft Excel 2003 (.xls) с именем APP_$short_company_name_$app_num_$data.xls, где $short_company_name - краткое наименование компании-клиента, например RTK

$app_num - номер акта приема-передачи

$data - дата создания акта в формате (ДДММГГГГ)

SendMail.pm

Модуль для отправки электронной почты. На вход принимает адрес получателя письма, тему письма, тело письма, вложения. Возвращает 1 - в случае успешной отправки или 0 - в случае ошибки при отправке.

Pdf2Afp.pm

Модуль для конвертирования файлов из формата PDF/XSL-Fo в формат AFP. Работает в многопоточном режиме. Можно задать formdef в параметрах и количество потоков для конвертации. Возвращает 1 - в случае успешного выполнения или 0 - в случае ошибки.

PDF_Features.pm

Модуль содержит основные функции для работы с pdf файлами:

collect - функция для объединения нескольких pdf файлов в один

draw_address_block - функция для вывода адресного блока на странице pdf файла в определенных координатах

draw_barcode - функция для вывода ШПИ кода по стандартам Почты России на странице pdf файла в определенных координатах.

Rostelecom.pm

Модуль содержит основные функции, относящиеся только к обработке данных от клиента ОАО «Ростелеком»

Первым делом была написана функция для чтения данных из XML файла во внутреннюю структуру. Perl не имеет типа данных struct. Основынми типами данных для хранения списка данных являются массивы и хэши. В массивах доступ к объекту осуществляется посредством указания имени массива и номера элемента. Хэши - это ассоциативные массивы. Каждый элемент хэша имеет свой уникальный ключ. Доступ к данным хэша осуществляется путем указания имени хэша и имени ключа. Сложные структуры в Perl хранятся в виде ссылок на массивы и хэши. В хэше мы будем хранить данные клиента, получившиеся хэши будем хранить в массиве, который в свою очередь будет храниться в хэше, ключами которого будет название региона. Получившаяся структура будет иметь вид

$data -> {

MOSCOW =>

[

{

userid => 12223,

lastname => 'Иванов',

firstname => 'Федор',

code => 45634445,

……..

},

{

userid => 4545445,

lastname => 'Козлов',

firstname => 'Николай',

code => 8776474,

……..

},

……..

]

PITER =>

[

…..

]

}

Далее была написана функция create_pdf, создающая pdf файл для одного клиента. В функцию передаются данные клиента, имя файла. Функция создает pdf файл во временной директории. Когда количество файлов становится равным размеру спула или все данные обработаны, файлы собираются в один при помощи функции collect, находящейся в модуле PDF_Features. Основной функционал системы расположен в модулях, описание которых приведено в разделе «Описание основных модулей системы». При проведении тестирования, оказалось, что скорость генерации одного отправления составляет 0.5 сек. После чего еще требовалось собрать файлы в один и конвертировать их в формат afp. За час получалось обработать около 4 тыс. отправлений. Скорость генерации ниже, чем необходимая скорость в 10 тысяч отправлений/час, указанная в техническом задании. Для увеличения скорости обработки было решено задачи генерации pdf файлов и конвертирование файлов из формата pdf в формат afp осуществлять в многопоточном режиме.

Общая структурная схема системы представлена на рисунке 3.

Рисунок 33 - Общая структурная схема системы обработки данных

4.1 Структура штрихкодового почтового идентификатора (ШПИ)

Штрихкодовый идентификатор необходим для однозначного определения каждого почтового отправления. Структура штрихкодовой идентификации почтовых отправлений описывается в руководящем техническом материале (РТМ) 0001.01-99.

Используется следующая структура штрихкодового идентификатора:

· штрихкод стандарта Interleaved 2 of 5

· длина идентификатора 14 символов

Структура блока показана в таблице 8:

Таблица 88 - Структура ШПИ

Позиции

Формат данных

Содержание

Пример

1-6

N6

Индекс отделения почтовой связи места приема

143185

7-8

N2

Порядковый номер месяца при печати штрихкодового идентификатора, начиная с 01.2000 (значение 01)

83

9-13

N5

Номер почтового отправления

00774

14

N1

Контрольный разряд

5

Позиции 7-8 в структуре штрихкодового почтового идентификатора должны гарантировать уникальность идентификатора в сети почтовой связи на протяжении, по крайней мере, восьми лет. Порядковый номер месяца печати идентификатора для предприятий связи с небольшими объемами регистрируемой почты (не более 99999 в месяц) не означает необходимость привязки его к конкретному календарному номеру месяца и фактически является порядковым номером партии предварительно напечатанных идентификаторов. Предприятиям с большими объемами почты, предусматривается выделение дополнительных почтовых индексов, включаемых в структуру идентификатора для обеспечения уникальности отправлений. В таких случаях клиенту, периодически сдающему партионную почту и самостоятельно готовящему сопроводительную документацию выделяется индексный и номерной диапазон для обеспечения уникальности почтовых отправлений. В этом случае клиент вносит в позицию 7-8 фактический порядковый номер месяца, начиная с 01.2000 г. Значение января 2000г. равно 01. Если номер в позиции 7-8 меньше 10, то обязательно дополнение лидирующими нулями [17].

Клиентом, осуществляющим отправку большого количества отправлений в месяц, является и ОАО «Ростелеком». Для него выделяется 250 тыс. ШПИ в месяц. Один индекс может содержать не более 99999 ШПИ, поэтому для ОАО «Ростелеком» выделяется три индекса: 140811, 140812, 140813. Вид диапазона ШПИ представлен в таблице 9.

Таблица 99 - Диапазон ШПИ для ОАО "Ростелеком"

Индекс

Срок действия

Номер месяца

Номер

С

По

140811

Апрель 2015

85

00 001

99 999

140812

Апрель 2015

85

00 001

99 999

140813

Апрель 2015

85

00 001

50 000

Контрольный разряд (позиция №14 вычисляется клиентом самостоятельно) используя следующий алгоритм:

1. Сумма символов, расположенных в нечетных позициях числа умножается на 3


Подобные документы

  • Проектирование программного модуля: сбор исходных материалов; описание входных и выходных данных; выбор программного обеспечения. Описание типов данных и реализация интерфейса программы. Тестирование программного модуля и разработка справочной системы.

    курсовая работа [81,7 K], добавлен 18.08.2014

  • Проектирование структуры базы данных. Технология обработки данных. Порядок установки и запуска программы. Описание объектов приложения и структура данных. Ввод и изменение исходных данных. Получение выходных документов и тестирование программы.

    отчет по практике [2,3 M], добавлен 22.07.2012

  • Сущность языка программирования, идентификатора, структуры данных. Хранение информации, алгоритмы их обработки и особенности запоминающих устройств. Классификация структур данных и алгоритмов. Операции над структурами данных и технология программирования.

    контрольная работа [19,6 K], добавлен 11.12.2011

  • Обоснование выбора языка программирования. Анализ входных и выходных документов. Логическая структура базы данных. Разработка алгоритма работы программы. Написание программного кода. Тестирование программного продукта. Стоимость программного продукта.

    дипломная работа [1008,9 K], добавлен 13.10.2013

  • Создание программы в среде LabVIEW 7.1 для аудиометра – прибора для исследования чувствительности слуха. Определение входных и выходных данных системы, алгоритма обработки данных. Схемы и диаграммы, необходимые для разработки программного продукта.

    курсовая работа [2,6 M], добавлен 03.04.2012

  • Основные свойства информационно-справочной системы для обработки результатов сдачи сессии, ее функциональное назначение и логическая структура. Выбор языка и среды программирования. Описание алгоритмов сортировки и поиска, входных и выходных данных.

    курсовая работа [742,8 K], добавлен 23.01.2014

  • Выбор технологии, языка и среды программирования. Анализ процесса обработки информации и выбор структур данных для ее хранения, разработка основных алгоритмов. Проектирование интерфейса пользователя. Выбор стратегии тестирования и разработка тестов.

    курсовая работа [332,3 K], добавлен 09.12.2014

  • Разработка программы обработки типизированных файлов с кодом на языке Object Pascal, с использованием компонентов Delphi для ввода и вывода данных. Разработка экранных форм и алгоритма программы. Описание программных модулей и инструкция оператору.

    курсовая работа [1,5 M], добавлен 08.02.2011

  • Проектирование структуры и архитектуры программного продукта. Реализация программы конвертера файлов баз данных. Описание пользовательского интерфейса. Выбор порядка конвертации dbf файлов. Создание и исполнение шаблонов. Расчет себестоимости продукта.

    дипломная работа [2,2 M], добавлен 21.06.2013

  • Создание программы для обработки и хранения информации о пациентах, сделанных им назначениях и их выписке из больницы. Описание структуры и определение формы представления входных и выходных данных. Разработка системы средствами C++ и Builder 6.0.

    курсовая работа [552,0 K], добавлен 19.02.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.