Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Проектирование реализации операций бизнес-процесса «Управление документооборотом» (Описание программных модулей)

Содержание:

ВВЕДЕНИЕ

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

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

В данной работе будет рассматриваться процесс автоматизации документооборота НИТИ им. А. П. Александрова.

Цель работы – спроектировать автоматизированную систему для управления документооборотом.

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

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

1. АНАЛИТИЧЕСКАЯ ЧАСТЬ

1.1. Выбор комплекса задач автоматизации

Научно-исследовательский технологический институт им. А. П. Александрова (НИТИ), созданный изначально как Государственная испытательная станция, в текущее время является единственным научно-технологическим центром комплексных испытаний корабельных ЯЭУ, доведения их на стендах-прототипах до требуемого уровня надежности и безопасности. Особенностью института является всеобъемлющей охват концевых технологий создания корабельных ЯЭУ, концентрирующих в себе результаты работы многих научных и конструкторских коллективов.

НИТИ им. А. П. Александрова имеет обширные связи со многими российскими и зарубежными научными и конструкторскими организациями и готов к расширению сотрудничества в создании перспективных объектов ядерной энергетики.

К основной деятельности Института относится комплексная отработка и испытания новых конструкторских, технологических и технических решений перспективных судовых ЯЭУ, АЭС и других объектов атомной энергетики (ОАЭ), их частей и систем. 

Осуществление указанной деятельности реализуется по следующим научно-техническим направлениям:

  • эксплуатация и проведение комплексных испытаний стендовых ЯЭУ;
  • выработка решений и рекомендаций по созданию новых ЯЭУ, модернизации ЯЭУ и установок-прототипов по результатам их испытаний;
  • комплексное расчетно-экспериментальное обоснование безопасности АЭС;
  • проектирование, создание и эксплуатация автоматизированных систем научных исследований (АСНИ) ЯЭУ, обеспечивающих сбор, анализ и хранение экспериментальной информации;
  • проектирование и создание автоматизированных систем управления технологическими процессами и информационной поддержки, расчетно-моделирующих комплексов и тренажерных систем для подготовки персонала и исследования эксплуатационных и аварийных режимов установок ядерной энергетики и других производств;
  • расчетно-экспериментальные исследования по нейтронной физике, теплофизике, нестационарным и аварийным процессам;
  • проведение научных, опытно-конструкторских и экспериментальных исследований по химии и радиохимии, водно-химическим и газовым режимам технологических сред, дозиметрии и радиационной защите, дезактивации оборудования ЯЭУ и других объектов атомной энергетики;
  • проектирование и создание программно-технических средств химического, радиационного, радиохимического контроля технологических сред, газоаэрозольных выбросов и водных сбросов ОАЭ;
  • проектирование и разработка гибких химических и радиохимических технологий, воднохимического и газового режимов проектируемых, действующих и реконструируемых АЭС и других объектов атомной энергетики, создание и использование технологий обращения с радиоактивными отходами;
  • конструирование измерительных преобразователей (первичных и промежуточных) и приборов теплоэнергетических, механических и электрических параметров для систем контроля, управления и диагностирования ОАЭ, а также технических средств и методов метрологического обеспечения испытаний, аттестации, калибровки, поверки и наладки измерительных каналов систем ОАЭ;
  • разработка методов, технологии и средств проведения диагностики и контроля ТВЭЛ, других элементов активных зон, их хранения и перегрузки;
  • отработка навыков управления персоналом объектов ядерной энергетики на стендах-прототипах, тренажерах и моделирующих комплексах.

Структура института включает в себя:

  • дирекцию НИТИ;
  • комплекс экспериментальных энергетических реакторов;
  • научно-промышленный центр атомной энергетики;
  • отделение динамических исследований;
  • отдел нейтронно-физических исследований;
  • отдел теплофизических исследований;
  • отдел химико-технологических и материаловедческих исследований;
  • отдел экспериментальных исследований методов и средств измерений;
  • отделы ядерной и радиационной безопасности;
  • отдел Главного конструктора СКУ АЭС;
  • конструкторский отдел.

Численный состав работающих - 2174 человек, в том числе имеющих ученую степень доктора наук - 6 человек, кандидата наук - 61 человек. Средний возраст работающих - 45 лет, в том числе ученых (кандидаты и доктора наук) - 52 года, специалистов - 45 лет.

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

  • основные;
  • обеспечивающие;
  • бизнес-процессы управления.

Основные бизнес-процессы — это те, которые приносят учреждению прибыль. Это комплексная отработка и испытания новых конструкторских, технологических и технических решений перспективных судовых ЯЭУ, АЭС и других объектов атомной энергетики (ОАЭ), их частей и систем.

Обеспечивающие бизнес-процессы – этовспомогательные процессы, которые обеспечивают стабильную деятельность, но не приносят прибыль.

  • Административно-хозяйственное обеспечение.
  • Обеспечение безопасности.
  • Юридическое обеспечение.
  • ИТ-обеспечение и связь.
  • Внутренний контроль.
  • Бухгалтерский учет и отчетность.
  • Другие (более 10).

Бизнес-процессы управления — вспомогательные процессы, с помощью которых осуществляется управление деятельностью общества и основными объектами:

  • Стратегическое управление.
  • Управление маркетингом.
  • Управление рисками.
  • Управление персоналом.
  • Управление бизнес-процессами и развитием.
  • Региональное управление.
  • Другие (более 10).

К основным процессам также относят:

  • Стратегическое управление
  • Управление персоналом
  • Управление маркетингом
  • Управление финансами
  • Управление бизнес-процессами
  • Эмиссия ценных бумаг
  • Продажа жилой недвижимости
  • Реализация девелоперского проекта
  • Возврат инвестиций
  • ИТ-обеспечение и связь
  • Административно-хозяйственное обеспечение
  • Внутренний контроль и аудит
  • Технический надзор
  • Выполнение функций заказчика
  • Юридическое обеспечение
  • Обеспечение безопасности

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

1.2. Характеристика существующих бизнес-процессов

Цель работы заключается в разработке системы автоматизации документооборота для НИТИ им. А. П. Александрова. В настоящее время этот процесс осуществляется на предприятии следующим образом.

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

На полученном документе в правом нижнем углу лицевой стороны проставляется регистрационный штамп, содержащий учетный номер и дату поступления. Документы с грифом «лично» специалистом не вскрываются и передаются адресату. Документация, поступающая на имя директора, передается его секретарю.

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

Предварительное рассмотрение документов проводится с целью распределения поступивших документов на требующие рассмотрения руководством и остальных, которые направляются исполнителям.

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

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

После рассмотрения документов директор наносит резолюцию – распределяет поручения между заместителями... Если документ требует контроля исполнения, то секретарь ставит его на контроль и вносит данные в «Учетно-контрольный реестр документов, требующих исполнения и ответа».

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

Задачи регистрации не исчерпываются только учетом документов. Так как в регистрационные формы вносятся главные сведения о документах, создается база данных всех зарегистрированных документов. Для работы с массивом документов создается информационно-поисковая система по всем документам предприятия, которая используется для контроля за исполнением документов и справочно-аналитических задач.

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

Таким образом, необходимость создания автоматизированной системы делопроизводства, объясняется:

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

Функциональная диаграмма процесса учета и регистрации документов, требующих исполнения и ответа представлена на рисунках 1.1-1.9.

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

C:\Users\1\Desktop\заказы 2016\Скриншот 09-11-2016 134908.png

Рисунок 1.1. Контекстный уровень диаграммы IDEF0

Рис. 1.2. Функциональная диаграмма обработки документов

Используются следующие активные объекты (механизмы)

  • ответственный за делопроизводство (получатель);
  • руководитель;
  • исполнители.

Рис. 1.3. Декомпозиция функции «Прием и первичная обработка поступивших документов»

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

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

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

Рис. 1.4. Декомпозиция функции «Предварительное рассмотрение

документов»

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

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

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

Процесс исполнения документов состоит в выполнении требований резолюции и докладе (отчете) об исполнении документа.

Рис. 1.5. Декомпозиция функции «Обработка входящей корреспонденции»

Рис. 1.6. Декомпозиция функции «Обработка исходящей корреспонденции»

Рис. 1.7. Занесение документа в реестр

Рис. 1.8. Исполнение документов

Рис. 1.9. Обработка исполненных документов

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

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

  • ведение «Реестра документов, требующих исполнения и ответа»;
  • ведение журналов входящей и исходящей корреспонденции;
  • создание контрольно-регистрационных карточек, с указанием необходимых атрибутов и краткого содержания документа;
  • формирование отчета «Просроченные документы»;
  • поиск документа по его реквизитам;
  • вывод на печать «Учетно-контрольного реестра документов, требующих исполнения и ответа» и отчетов;
  • вывод на печать журналов входящей и исходящей корреспонденции.

1.3. Характеристика документооборота, возникающего при решении задачи

Схема документооборота вышеперечисленных документов приведена на рисунке 1.10.

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

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

Таблица 1.1

Временные и стоимостные затрат при существующем варианте

Наименование операции

Количество, в рабочий день

Затрачиваемое время на одну, мин

Итого в рабочий день, минут

Стоимостная оценка, рублей

Внесение записи в журнал

8

40

320

793,6

Поиск данных по конкретному документу

4

30

120

297,6

Подготовка отчета по движению документа

4

10

40

99,2

Формирование реестра документов, требующих исполнения

4

15

60

148,8

Итого:

540

1339,2

Рисунок 1.10. Схема документооборота

Таблица 1.2

Временные и стоимостные затрат при планируемом варианте

Наименование операции

Количество, в рабочий день

Затрачиваемое время на одну, мин

Итого в рабочий день, минут

Стоимостная оценка, рублей

Внесение записи в журнал

4

1

4

9,92

Поиск данных по конкретному документу

4

1

4

9,92

Подготовка отчета по движению документа

4

10

40

99,2

Формирование реестра документов, требующих исполнения

4

10

40

99,2

Итого:

88

218,24

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

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

При этом временные затраты должны сократиться на 540-88=452 минуты=7, 5 часов и 1339-218=1121 рубль в сутки. Следовательно, внедрение такой системы является однозначно выгодным с точки зрения оптимизации расхода трудовых и стоимостных ресурсов.

Разрабатываемая система должна удовлетворять следующим требованиям:

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

1.4. Обоснование проектных решений по информационному обеспечению

Информационное обеспечение (ИО) системы управления персоналом представляет собой информационную модель работы сотрудников предприятия.

Информационное обеспечение включает в себя: систему классификации и кодирования; систему унифицированной документации, используемой в ИО, информационную базу, т.е. информацию из всех информационных массивов.

К информационному обеспечению в рамках данного проекта относятся:

  • база данных;
  • экранные формы для ввода первичных данных в ЭВМ;
  • экранные формы для вывода результирующей информации.

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

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

Условно-постоянная информация будет храниться в справочниках. В системе потребуются следующие справочники:

  • отделы;
  • роли пользователей;
  • пользователи;
  • виды документов;
  • номенклатура;
  • папки.

Для ввода первичной информации понадобятся следующие формы:

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

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

  • трудовая книжка;
  • штатное расписание;
  • документ.

Результатной информацией для задачи автоматизации делопроизводства являются следующие документы:

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

В системе мы используем три классификатора, которые были разработаны ранее и используются в корпоративной ИС:

  • Клиенты;
  • Сотрудники;
  • Отделы.

Классификатор клиентов.

Данный классификатор был введён для идентификации клиентов.

1. система кодирования – порядковая

2. количество признаков классификации – 1

3. объекты кодирования: клиенты

4. структурная формула классификатора

Классификатор сотрудников

Данный классификатор вводится для идентификации сотрудников

1. система кодирования – порядковая

2. количество признаков классификации – 1

3. объекты кодирования: сотрудники

4. структурная формула классификатора

Классификатор отделов

Данный классификатор вводится для идентификации отделов

1.система кодирования – порядковая, 2. количество признаков классификации – 1, 3. объекты кодирования: отделы

4. структурная формула классификатора

В таблице 1.3 приведены кодируемые множества

Таблица 1.3

Кодируемые множества

Наименование

Значность кода

Система кодирования

Сотрудники

4

порядковая

Клиенты

2

порядковая

Отделы

2

порядковая

В таблице 1.4 представлен классификатор «Сотрудники»

Таблица 1.4

Классификатор «Сотрудники»

Сотрудники

Код

Сотрудник 1

1001

………

Сотрудник N

100N

………….

В таблице 1.5 представлен классификатор «Отделы»

Таблица 1.5

Классификатор «Отделы»

Отделы

Код

Отделы

01-48

Отдел 1

01

………

Отдел N

0N

……………………….

В таблице 1.6 представлен классификатор «Клиенты»

Таблица 1.6

Классификатор «Клиенты»

Клиенты

Код

Клиенты

1001-9900

Клиент 1

1001

………

Клиент N

100N

………………………

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

1.5. Обоснование проектных решений по программному обеспечению

В НИТИ на рабочих станциях пользователей системы установлена ОС линейки Microsoft Windows: Windows 7, WindowsXP. На серверах установлена MicrosoftWindows 2008 Server. На приобретаемый сервер с целью совместимости всех компонентов системы рекомендуется установить последнюю версию серверной операционной системы Microsoft Windows 2008 Server.

Далее выберем СУБД. Рассмотрим такие продукты, как MSSQLServer и MySQL.

  1. MSSQLServer – очень распространенная, достаточно надежная, быстрая клиент-серверная СУБД. Часто используется для промышленных систем автоматизации. Версия MS SQL Server Express распространяется бесплатно, но имеет некоторые технические ограничения (максимальный размер базы не должен превышать 4 Гб, поддерживается только 1 процессор, адресуемая память составляет 1 Гб, и т.п.). Такие ограничения делают её непригодной для развертывания больших баз данных, но она вполне годится для ведения программных комплексов в масштабах небольшой компании.
  2. MySQL – свободно распространяемая клиент-серверная СУБД, высокопроизводительная, обеспечивающая высокий уровень защиты данных. Доступ к серверу MySQL можно осуществить в интерактивном режиме с помощью различных интерфейсов, позволяющих вводить запросы и просматривать полученные результаты. Имеются программные интерфейсы для таких языков, как С, Perl, Java, PHP и Python.

При создании веб-ориентированных систем, основанных на динамических страницах, есть несколько альтернатив в выборе интерпретатора языка программирования: ASP, JSP, Perl, PHP, Ruby, Python. Все представленные варианты предоставляют возможности, необходимые для реализации приложения.

Однако, ASP – технология Microsoft, которая, прежде всего, ориентирована на взаимодействие с другими продуктами Microsoft, а, кроме того, является коммерческой технологией. Недостатки JSP, Ruby и Python – небольшая распространенность в России, и, как следствие, отсутствие квалифицированных специалистов на рынке труда. Perl уступает PHP по доле проектов и занимает область классических скриптовых языков ОС семейства Unix.

PHP – скриптовый язык программирования, созданный для генерации HTML-страниц на веб-сервере и работы с базами данных. Группа разработчиков PHP состоит из множества людей, добровольно работающих над ядром и расширениями PHP и смежными проектами, такими как PEAR или документация языка. В настоящее время PHP поддерживается подавляющим большинством представителей хостинга и входит в LAMP — «стандартный» набор для создания веб-сайтов (Linux, Apache, MySQL, PHP). [7]

В области программирования для сети PHP — один из популярнейших скриптовых языков (наряду с JSP, Perl и языками, используемыми в ASP) благодаря своей простоте, скорости выполнения, богатой функциональности и распространению исходных кодов на основе лицензии PHP.

PHP отличается наличием ядра и подключаемых модулей, «расширений»: для работы с базами данных, сокетами, динамической графикой, криптографическими библиотеками, документами формата PDF. Синтаксис PHP подобен синтаксису языка Си. Некоторые элементы, такие как ассоциативные массивы и цикл foreach, заимствованы из Perl.

Программирование в рамках данного проекта осуществляется на языке PHP. Основные критерии выбора – распространенность (заменимость разработчиков), высокое качество документирования функций, отсутствие необходимости устанавливать на веб-сервер дополнительное программное обеспечение.

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

Веб-сервером называют как программное обеспечение, выполняющее функции веб-сервера, так и компьютер, на котором это программное обеспечение работает.

Существует два наиболее распространенных веб-сервера:

  • Apache –– веб-сервер с открытым исходным кодом, наиболее часто используется в Unix-подобных ОС;
  • IIS –– веб-сервер от компании Microsoft, как правило, используется на ОС семейства Microsoft Windows.

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

Достоинством IIS является интеграция с другими продуктами компании Microsoft. К существенному недостатку IIS можно отнести сложность интеграции сервера с интерпретатором PHP, что в свою очередь усложняет настройку и использования этого сервера.

В соответствии с принятыми решениями для обеспечения функционирования разрабатываемой системы необходима установка веб-сервера Apache. Кроме того, обязательна поддержка языка программирования PHP. Также дополнительно устанавливается СУБД MySQL. В таком виде информационная система учреждения полностью готова к внедрению разрабатываемой системы.

2. ПРОЕКТНАЯ ЧАСТЬ

2.1. Информационная модель и её описание

Информационная модель представляет собой схему движения входных, промежуточных и результативных потоков и функций предметной области. Кроме того, она объясняет, на основе каких входных документов и какой нормативно-справочной информации происходит выполнение функций по обработке данных и формирование конкретных выходных документов. Информационная модель представлена на рис. 2.1.

Информационная система работает со справочниками Отделы, Сотрудники, Контрагенты, Типы и Категории документов, Клиенты, экранными формами ввода документов. Информационная система формирует выборки по типам и категориям документов.

В соответствии с приведенной информационной моделью, работа системы осуществляется следующим образом.

Администратор системы регистрирует сотрудников, изменяя содержимое таблицы «Сотрудники». Также он изменяет содержимое данной таблицы, редактируя данные для доступа к системе каждого сотрудника.

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

ИМ.jpg

Рис.2.1. Информационная модель

2.2. Характеристика нормативно-справочной, входной и оперативной информации

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

- трудовая книжка;

- штатное расписание;

- документ.

Трудовая книжка сотрудника используется при регистрации его в системе. Источником получения данного документа является отдел кадров. При этом из нее используются следующие реквизиты:

- фамилия, имя, отчество;

- дата рождения;

- наименование должности;

- наименование отдела.

Частота возникновения данного документа – по мере регистрации новых сотрудников, объем – около 10 строк.

Штатное расписание используется при формировании справочника Отделы, при этом используется только такой реквизит, как наименование отдела. Источником получения данного документа также является отдел кадров, объем – 15 строк.

Документ является основным входным документом. При регистрации документа в системе задействуются следующие реквизиты:

- наименование;

- тип документа;

- дата подготовки или поступления;

- количество страниц;

- описание документа;

- электронная копия документа.

Источниками получения документов являются как другие организации, так и отделы самого общества. Объем документов колеблется в очень широком диапазоне.

В системе используются справочники, приведенные в таблице 2.1.

Таблица 2.1

Перечень используемых справочников

№ пп

Название справочника

Ответственный за ведение

Средний объём справочника в записях

Средняя частота актуализации

Средний объем актуализации, %

1

Отделы

Администратор

45

1 раз в месяц

10

2

Документы

Администратор

10

1 раз в год

10

3

Клиенты

Администратор

2000

1 раз в год

10

4

Типы документов

Администратор

50

1 раз в месяц

25

5

Категории документов

Администратор

20

1 раз в месяц

25

6

Контрагенты

Администратор

20

1 раз в год

10

7

Сотрудники

Администратор

20

1 раз в месяц

25

Справочник Отделы имеет следующие реквизиты:

- код отдела;

- полное наименование отдела;

- сокращенное наименование отдела.

Справочник Сотрудники имеет следующие реквизиты:

  • фамилия;
  • имя;
  • отчество;
  • дата рождения
  • пароль
  • логин
  • дата регистрации

Справочник Клиенты:

  • полное наименование
  • краткое наименование
  • фактический адрес
  • юридический адрес
  • банковские реквизиты;
  • контактное лицо;
  • телефон
  • e-mail;
  • дата регистрации

Справочник Контрагенты:

  • полное наименование;
  • краткое наименование;
  • регион;
  • телефоны;
  • сайт;
  • номер лицензии;
  • статус;
  • активы- нетто;
  • адрес фирмы и филиалов.

Справочник Типы документов включает в себя наименование типа документа и код категории.

Справочник Категории содержит наименования категорий документов.

2.3. Характеристика результатной информации

Результатной информацией для задачи автоматизации делопроизводства являются следующие документы:

- список сотрудников;

-список документов по категориям и типам;

- список контрагентов;

- список клиентов.

В списке сотрудников имеются следующие реквизиты:

- фамилия, имя, отчество сотрудников;

- дата регистрации;

- должность;

- отдел;

- дата рождения;

- логин и пароль для доступа в систему.

Данный документ формируется на основе справочников Отделы и Сотрудники.

Списки документов имеют следующие реквизиты:

- наименование документа;

- дата регистрации;

- краткое описание;

- количество страниц;

- адресат;

- ссылка на электронную версию документа;

-тип документа;

- категория документа;

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

Список контрагентов содержит перечень контрагентов со всеми реквизитами, так же, как и список клиентов.

2.4. Общие положения (дерево функций и сценарий диалога)

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

В разработанной системе предусмотрено 2 вида пользователей;

  • Делопроизводитель;
  • Администратор.

Дерево функций для каждого из пользователей представлено на рисунках 2.2-2.3.

ДФ1.jpg

Рис. 2.2 Дерево функций системы для пользователя

Рис. 2.3 Дерево функций системы для администратора

Сценарии диалога для соответствующих пользователей системы приведены на рисунках 2.4-2.5.

СД1.jpg

Рис. 2.4 Сценарий диалога для пользователя

Сд2.jpg

Рис. 2.5 Сценарий диалога для администратора системы

2.5. Характеристика базы данных

ER-модель отображает состав и взаимосвязи таблиц, отражающих содержание информационной модели в терминах конкретной СУБД. Перечень сущностей и их соответствие информационной модели приведено в таблице 2.2.

Таблица 2.2

Перечень сущностей и их соответствие информационной модели

Название сущности в информационной модели

Идентификатор таблицы

Справочник «Отделы»

Otdel

Справочник «Сотрудники»

Sotr

Справочник «Клиенты»

Klient

Справочник «Типы документов»

Tipi

Справочник «Категории документов»

Kategorii

Справочник «Контрагенты»

Kontragent

Таблица «Документы»

Dok

ER-диаграмма базы данных представлена на рисунке 2.6.

Характеристика каждой таблицы базы данных приведена ниже, в таблицах 2.3-2.9.

Таблица 2.3

Таблица Документы

Идентификатор

Тип данных

Примечание

 idd 

int(11)

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

 ids 

int(5)

Код сотрудника

 named 

varchar(45)

Наименование

 idkd 

int(5)

Код типа

 datepod 

varchar(45)

Дата подготовки

 datez 

timestamp

Дата и время регистрации

 kolvostr 

varchar(45)

Количество страниц

 prim 

varchar(45)

Примечание

 otkuda 

varchar(45)

Адресат

 link 

text

Ссылка на документ

 status 

int(1)

Статус

 archiv 

int(1)

Флаг помещения в архив

 rnp 

int(1)

Флаг резолюции начальника отдела

БД.png

Рис. 2.6ER-диаграмма базы данных

Таблица 2.4

Таблица Отделы

Идентификатор

Тип данных

Примечание

 idOtd 

int(11)

Код отдела

 nameOtd 

varchar(100)

Наименование отдела

 KrNameOtd 

varchar(10)

Краткое наименование отдела

Таблица 2.5

Таблица Сотрудники

Идентификатор

Тип данных

Примечание

 idsotr 

int(11)

Код сотрудника

 name 

varchar(45)

Фамилия

 dolg 

int(2)

Код должности

 login 

varchar(10)

Логин

 parol 

varchar(10)

Пароль

 dates 

timestamp

Дата регистрации

 surname 

varchar(45)

Имя и отчество

 datebor 

varchar(14)

Дата рождения

 udal 

int(1)

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

Таблица 2.6

Таблица Типы документов

Идентификатор

Тип данных

Примечание

idtip 

int(11)

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

 namet 

varchar(10)

Наименование типа документа

idkat_tip

int(11)

Код категории документов

Таблица 2.7

Таблица Клиенты

Идентификатор

Тип данных

Примечание

 idKlient 

Код клиента

Код клиента

 namekl 

Наименование

Наименование

 krnamekl 

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

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

 adresskl 

Фактический адрес

Фактический адрес

 uradrkl 

Юридический адрес

Юридический адрес

 banrekKl 

Реквизиты

Реквизиты

 kontlizoKl 

Контактное лицо

Контактное лицо

 tlfKl 

Телефон

Телефон

 emailKl 

Адрес электронной почты

Адрес электронной почты

 dateregKl 

Дата регистрации

Дата регистрации

 udalKl 

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

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

Таблица 2.8

Таблица Контрагенты

Идентификатор

Тип данных

Примечание

idb

int(11)

Код

nameb

text

Наименование

fullnameb

text

Полное наименование

region

text

Регион

telefon

varchar(255)

Телефоны

site

varchar(100)

Сайт

number_liz

varchar(10)

Номер лицензии

status_uch_vkl

text

Статус участника системы страхования вкладов

activi

text

Размер активов

adres

text

Адрес

Таблица 2.9

Таблица Категории документов

Идентификатор

Тип данных

Примечание

idkat

int(11)

Код категории документа

namekat

text

Наименование категории документа

2.6. Структурная схема пакета (дерево вызова программных модулей)

Структурная схема пакета представлена на рисунке 2.7.

Рис.2.7. Структурная схема пакета

2.7. Описание программных модулей

Описание программных модулей приведено в таблице 2.10.

Таблица 2.10

Описание функций модулей

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

Функции модуля

Модуль безопасности

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

Модуль инициализации программы

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

Модуль взаимодействия с базой данных

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

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

Содержит процедуры и функции, необходимые для отображения справочной информации

Модуль главного меню

Содержит главное меню, из которого осуществляется вызов остальных экранных форм

Модуль «Отчеты»

Содержит процедуры и функции для ввода параметров запроса, просмотра и печати отчетов

Модуль «Справочники»

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

Модуль «Пользователи»

Содержит процедуры функции, позволяющие управлять списками пользователей (если позволяют права доступа)

Модуль «Регистрация»

Содержит процедуры и функции, позволяющие регистрировать документы

2.8. Контрольный пример реализации проекта и его описание

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

Рисунок 2.8. Регистрация должностей

Рисунок 2.9. Форма учета отделов

После заполнения Справочника Должности следует заполнить Справочник Сотрудники (рисунок 2.10).

Рисунок 2.10. Справочник Сотрудники

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

Рисунок 2.11. Выбор категории документа

После чего можно перейти к регистрации документа:

Мотив - admin - stroitexsnab.png

Рисунок 2.12. Форма регистрации первичного документа

Администратор в панели управления может редактировать как фомы регистрации документа, так и карточки документов:

Рисунок 2.13. Редактирование карточки внутренних документов

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

После регистрации сотрудник может получить список документов по категориям:

Рисунок 2.14. Форма для получения списков документов

Рисунок 2.15. Список документов

Листинг основных программных модулей приведен в Приложении.

ЗАКЛЮЧЕНИЕ

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

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

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

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

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

А если учесть, что с каждым годом объем обрабатываемой информации будет только возрастать, становится очевидным, что внедрение автоматизированной системы электронного документооборота является ключом к эффективной работе и в будущем.

СПИСОК ЛИТЕРАТУРЫ

  1. ГОСТ 34.602-89 «Техническое задание на создание автоматизированной системы»
  2. Белов Е.Б, Лось В.П. и др. Основы информационной безопасности. - М.: Горячая линя - Телеком, 2010. – 544 с.
  3. Вигерс К. Разработка требований к программному обеспечению, пер, с англ. - Москва.: «Русская Редакция», 2010. – 576 с.
  4. Гвоздева Т.В. Проектирование информационных систем. – Ростов-на-Дону: Феникс, 2009. – 512 с.
  5. Грекул В.И. Проектирование информационных систем. – Москва.: Интуит, 2008. – 304 с.
  6. Диго С.М. Базы данных: проектирование и использование: Учебник. – Москва.: Финансы и статистика, 2007. – 592 с.
  7. Додонова И.В., Кабанова О.В. Автоматизированная обработка банковской информации. – Москва.: КноРус, 2008. – 176 с.
  8. Елиферов В.Г., Репин В.В. Бизнес-процессы. Регламентация и управление. – Москва.: Инфра-М, 2009. – 320 с.
  9. Емельянова Н.З. Проектирование информационных систем. – Москва.: Форум, 2009. – 432 с.
  10. Козлов А.С. Проектирование и исследование бизнес-процессов. – Москва.: Флинта, 2007. – 272 с.
  11. Меняев М.Ф, Информационные технологии управления: Книга 3: Системы управления организацией, Москва.: Омега-Л, 2008. - 464 с.
  12. Мещеряков С.В., Иванов В.М. Эффективные технологии создания информационных систем. – Москва.: Политехника, 2009. – 309 с.
  13. Мишенин А.И. Теория экономических информационных систем. – Москва.: Финансы и статистика, 2010. – 240 с.
  14. Овчинников, В.Г. Методология проектирования автоматизированных информационных систем. Основы системного подхода. – Москва.: Компания Спутник+, 2009. – 286 с.
  15. Орлик С., Булуй Ю, Введение в программную инженерию и управление жизненным циклом ПО Программная инженерия. Программные требования
  16. Пестриков, В. М. Delphi на примерах / В. М. Пестриков, А. Н. Маслобоев. — СПб. : БХВ-Петербург, 2008. — 496 с.
  17. Репин В.В. Бизнес-процессы компании. Построение, анализ, регламентация. – Москва.: Стандарты и качество, 2009. – 240 с.
  18. Титоренко Г.А. Автоматизированные информационные технологии в экономике: Учебник. – Москва.: ЮНИТИ, 2009. – 399с.

Приложение

Листинг программы

<?php

$settings = array(

'baseDir' => '../',

'charSet' => 'utf-8',

'debug' => true,

'gzip' => true,

'compressionLevel' => 9,

'gzipExceptions' => array('gif','jpeg','jpg','png','swf'),

'minify' => true,

'concatenate' => true,

'separator' => ',',

'embed' => true,

'embedMaxSize' => 5120,

'embedExceptions' => array('htc'),

'serverCache' => true,

'serverCacheCheck' => false,

'cacheDir' => 'cache/',

'cachePrefix' => 'so_',

'clientCache' => true,

'clientCacheCheck' => false,

);

//mime types

$mimeTypes = array(

"js" => "text/javascript",

"css" => "text/css",

"htm" => "text/html",

"html" => "text/html",

"xml" => "text/xml",

"txt" => "text/plain",

"jpg" => "image/jpeg",

"jpeg" => "image/jpeg",

"png" => "image/png",

"gif" => "image/gif",

"swf" => "application/x-shockwave-flash",

);

function headerExit($status) {

header("HTTP/1.0 $status");

exit();

}

function headerNoCache() {

// already expired

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");

// always modified

header("Last-Modified: " . gmdatestr());

// HTTP/1.1

header("Cache-Control: no-store, no-cache, must-revalidate");

header("Cache-Control: post-check=0, pre-check=0", false);

header("Cache-Control: max-age=0", false);

// HTTP/1.0

header("Pragma: no-cache");

//generate a unique Etag each time

header('Etag: '.microtime());

}

function headerNeverExpire(){

header("Expires: " . gmdatestr(time() + 315360000));

header("Cache-Control: max-age=315360000");

}

function debugExit($msg){

global $settings;

if (!$settings['debug']) {

headerExit('404 Not Found');

}

headerNoCache();

header('Content-Type: text/html; charset='.$settings['charSet']);

header("Content-Encoding: none");

echo "//<script>\n";

echo "alert('SmartOptimizer Error: ".str_replace("\n", "\\n", addslashes($msg))."');\n";

echo "//</script>\n";

exit();

}

function gmdatestr($time = null) {

if (is_null($time)) $time = time();

return gmdate("D, d M Y H:i:s", $time) . " GMT";

}

function filesmtime() {

global $files, $fileType;

static $filesmtime;

if ($filesmtime) return $filesmtime;

$filesmtime = max(@filemtime("minifiers/$fileType.php"), filemtime('index.php'), filemtime('config.php'));

foreach ($files as $file) {

if (!file_exists($file)) debugExit("File not found ($file).");

$filesmtime = max(filemtime($file), $filesmtime);

}

return $filesmtime;

}

@include('config.php');

list($query) = explode('?', urldecode($_SERVER['QUERY_STRING']));

if (preg_match('/^\/?(.+\/)?(.+)$/', $query, $matchResult)) {

$fileNames = $matchResult[2];

$fileDir = $settings['baseDir'].$matchResult[1];

} else debugExit("Invalid file name ($query)");

if (strpos(realpath($fileDir), realpath($settings['baseDir'])) !== 0) debugExit("File is out of base directory.");

if ($settings['concatenate']) {

$files = explode($settings['separator'], $fileNames);

$settings['concatenate'] = count($files) > 1;

} else $files = array($fileNames);

foreach ($files as $key => $file) {

if (preg_match('/\.([a-z0-9]+)$/i', $file, $matchResult)) {

$fileTypes[] = strtolower($matchResult[1]);

} else debugExit("Unsupported file ($file)");

$files[$key] = $fileDir.$file;

}

if ($settings['concatenate']) {

if (count(array_unique($fileTypes)) > 1) debugExit("Files must be of the same type.");

}

$fileType = $fileTypes[0];

if (!isset($mimeTypes[$fileType])) debugExit("Unsupported file type ($fileType)");

header("Content-Type: {$mimeTypes[$fileType]}; charset=".$settings['charSet']);

$settings['gzip'] =

($settings['gzip'] &&

!in_array($fileType, $settings['gzipExceptions']) &&

in_array('gzip', array_map('trim', explode(',' , @$_SERVER['HTTP_ACCEPT_ENCODING']))) &&

function_exists('gzencode'));

if ($settings['gzip']) header("Content-Encoding: gzip");

$settings['minify'] = $settings['minify'] && file_exists('minifiers/'.$fileType.'.php');

$settings['embed'] = $settings['embed'] && $fileType == 'css' && (!preg_match('/msie/i', $_SERVER['HTTP_USER_AGENT']) || preg_match('/msie 8|opera/i', $_SERVER['HTTP_USER_AGENT']));

$settings['serverCache'] = $settings['serverCache'] && ($settings['minify'] || $settings['gzip'] || $settings['concatenate'] || $settings['embed']);

if ($settings['serverCache']) {

$cachedFile = $settings['cacheDir'].$settings['cachePrefix'].md5($query.($settings['embed']?'1':'0')).'.'.$fileType.($settings['gzip'] ? '.gz' : '');

}

$generateContent = ((!$settings['serverCache'] && (!$settings['clientCache'] || !$settings['clientCacheCheck'] || !isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) || $_SERVER['HTTP_IF_MODIFIED_SINCE'] != gmdatestr(filesmtime()))) ||

($settings['serverCache'] && (!file_exists($cachedFile) || ($settings['serverCacheCheck'] && filesmtime() > filemtime($cachedFile)))));

if ($settings['clientCache'] && $settings['clientCacheCheck']) {

if ($settings['serverCache'] && !$generateContent) $mtime = filemtime($cachedFile);

elseif ($settings['serverCache']) $mtime = time();

else $mtime = filesmtime();

$mtimestr = gmdatestr($mtime);

}

if (!$settings['clientCache'] || !$settings['clientCacheCheck'] || !isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) || $_SERVER['HTTP_IF_MODIFIED_SINCE'] != $mtimestr) {

if ($settings['clientCache'] && $settings['clientCacheCheck']) {

header("Last-Modified: " . $mtimestr);

header("Cache-Control: must-revalidate");

} elseif ($settings['clientCache']) {

headerNeverExpire();

} else headerNoCache();

if ($generateContent) {

if ($settings['minify']) include('minifiers/'.$fileType.'.php');

$content = array();

foreach ($files as $file) (($content[] = @file_get_contents($file)) !== false) || debugExit("File not found ($file).");

$content = implode("\n", $content);

if ($settings['minify']) $content = call_user_func('minify_' . $fileType, $content);

if ($settings['gzip']) $content = gzencode($content, $settings['compressionLevel']);

if ($settings['serverCache']) {

$handle = @fopen($cachedFile, 'w') or debugExit("Could not create cache file($cachedFile).");

fwrite($handle, $content);

fclose($handle);

}

header('Content-Length: ' . strlen($content));

echo $content;

} else {

header('Content-Length: ' . filesize($cachedFile));

readfile($cachedFile);

}

} else headerExit('304 Not Modified');

?>

<?php

/*

* SmartOptimizer CSS Minifier

*/

function convertUrl($url, $count)

{

global $settings, $mimeTypes, $fileDir;

static $baseUrl = '';

$url = trim($url);

if (preg_match('@^[^/]+:@', $url)) return $url;

$fileType = substr(strrchr($url, '.'), 1);

if (isset($mimeTypes[$fileType])) $mimeType = $mimeTypes[$fileType];

elseif (function_exists('mime_content_type')) $mimeType = mime_content_type($url);

else $mimeType = null;

if (!$settings['embed'] ||

!file_exists($fileDir.$url) ||

($settings['embedMaxSize'] > 0 && filesize($fileDir.$url) > $settings['embedMaxSize']) ||

!$fileType ||

in_array($fileType, $settings['embedExceptions']) ||

!$mimeType ||

$count > 1) {

if (strpos($_SERVER['REQUEST_URI'], $_SERVER['SCRIPT_NAME'].'?') === 0 ||

strpos($_SERVER['REQUEST_URI'], rtrim(dirname($_SERVER['SCRIPT_NAME']), '\/').'/?') === 0) {

if (!$baseUrl) return $fileDir . $url;

}

return $baseUrl . $url;

}

$contents = file_get_contents($fileDir.$url);

if ($fileType == 'css') {

$oldFileDir = $fileDir;

$fileDir = rtrim(dirname($fileDir.$url), '\/').'/';

$oldBaseUrl = $baseUrl;

$baseUrl = 'http'.(@$_SERVER['HTTPS']?'s':'').'://'.$_SERVER['HTTP_HOST'].rtrim(dirname($_SERVER['SCRIPT_NAME']), '\/').'/'.$fileDir;

$contents = minify_css($contents);

$fileDir = $oldFileDir;

$baseUrl = $oldBaseUrl;

}

$base64 = base64_encode($contents);

return 'data:' . $mimeType . ';base64,' . $base64;

}

function minify_css($str) {

$res = '';

$i=0;

$inside_block = false;

$current_char = '';

while ($i+1<strlen($str)) {

if ($str[$i]=='"' || $str[$i]=="'") {//quoted string detected

$res .= $quote = $str[$i++];

$url = '';

while ($i<strlen($str) && $str[$i]!=$quote) {

if ($str[$i] == '\\') {

$url .= $str[$i++];

}

$url .= $str[$i++];

}

if (strtolower(substr($res, -5, 4))=='url(' || strtolower(substr($res, -9, 8)) == '@import ') {

$url = convertUrl($url, substr_count($str, $url));

}

$res .= $url;

$res .= $str[$i++];

continue;

} elseif (strtolower(substr($res, -4))=='url(') {//url detected

$url = '';

do {

if ($str[$i] == '\\') {

$url .= $str[$i++];

}

$url .= $str[$i++];

} while ($i<strlen($str) && $str[$i]!=')');

$url = convertUrl($url, substr_count($str, $url));

$res .= $url;

$res .= $str[$i++];

continue;

} elseif ($str[$i].$str[$i+1]=='/*') {//css comment detected

$i+=3;

while ($i<strlen($str) && $str[$i-1].$str[$i]!='*/') $i++;

if ($current_char == "\n") $str[$i] = "\n";

else $str[$i] = ' ';

}

if (strlen($str) <= $i+1) break;

$current_char = $str[$i];

if ($inside_block && $current_char == '}') {

$inside_block = false;

}

if ($current_char == '{') {

$inside_block = true;

}

if (preg_match('/[\n\r\t ]/', $current_char)) $current_char = " ";

if ($current_char == " ") {

$pattern = $inside_block?'/^[^{};,:\n\r\t ]{2}$/':'/^[^{};,>+\n\r\t ]{2}$/';

if (strlen($res) && preg_match($pattern, $res[strlen($res)-1].$str[$i+1]))

$res .= $current_char;

} else $res .= $current_char;

$i++;

}

if ($i<strlen($str) && preg_match('/[^\n\r\t ]/', $str[$i])) $res .= $str[$i];

return $res;

}

?>