![](/stc/img/evkova.png)
Проектирование информационной системы по управлению
Содержание:
Введение
На сегодняшний день невозможно представить себе достаточно крупную организацию, функционирующую без использования программных и аппаратных средств, воплощающих в себе современные информационные технологии. Помимо информационно-технического обеспечения технологических процессов непосредственно на производстве, информационные технологии играют важную роль в управлении предприятием.
В сфере управления информационные технологии обеспечивают коммуникацию, анализ, накопление и хранение информации, технологическое обеспечение управленческих бизнес-процессов, автоматизацию решений в сфере документооборота на предприятии. Функции документооборота включают в себя организацию учета, переработки, хранения, анализа всех документов на предприятии, объединения их в единую информационную базу с целью повышения качества работы с документацией всех участников бизнес-процессов, протекающих на предприятии.
Системы электронного документооборота представляют собой комплекс из прикладных инструментов, реализованных как на программном, так и на аппаратном уровне, и позволяющих поднять уровень функционирования отделов и служб делопроизводства на предприятиях на более высокий уровень. Этот эффект достигается благодаря отличительным особенностям систем электронного документооборота, таким как: возможность организации единой информационной базы всей документации предприятия в электронном виде с многокритериальным поиском информации; возможность использования единых, в рамках организации, инструментов выдачи поручений сотрудникам; возможность контроля за исполнением поручений сотрудниками, наличие инструментов для глубокого анализа существующих бизнес-процессов, возможность повышения уровня автоматизации большинства бизнес-процессов, протекающих в организации и т.п.
Все бизнес-процессы на предприятии ООО "Технопарк-центр" были основаны на использовании бумажных оригиналов или копий. Применение различных инструментов препятствовало формированию аналитической отчетности по всему массиву данных, так например, поиск документации по прошлым периодам занимал достаточно продолжительное время. Отсутствовала автоматизированная система контроля за выполнением поручений сотрудниками. Не в полной мере выполнялись корпоративные стандарты в области работы с документацией.
Бизнес-процессы документооборота проходили с превышением установленных сроков. Возникали инциденты утери бумажных документов и превышения сроков исполнения. Сложившаяся ситуация на предприятии не могла быть решена только административными методами, соответственно было принято решение о воплощении комплекса мер по автоматизации части бизнес-процессов документооборота наряду с реорганизацией утвержденного регламента документооборота ООО "Технопарк-центр".
Цель работы – Целью данной работы является автоматизация работы системы документооборота ООО "Технопарк-центр".
Объектом исследования является ООО "Технопарк-центр".
Предмет исследования – процесс документооборота организации.
Для достижения поставленной цели в работе необходимо решить следующие задачи:
- Изучить теоретические аспекты автоматизации документооборота.
- Рассмотреть технико-экономическую характеристику предметной области и предприятия;
- Охарактеризовать задачи и обосновать необходимость их автоматизации;
- Проанализировать существующие разработки и стратегию развития;
- Обосновать проектные решения;
- Разработать проект автоматизации.
При написании курсовой были применены такие методы научного исследования, как изучение научной литературы по теме исследования, нормативно-правовой базы, аналитический и сравнительный методы.
Глава 1. Теоретические основы информационной системы управления документооборотом
Сущность автоматизации документооборота
Автоматизация документооборота является в наше время неотъемлемой частью работы с информацией, позволяет контролировать процесс работы и осуществлять его качественно. Рынок систем электронного документооборота активно развивается, объективной основой этого процесса является широкое повсеместное использование персональных компьютеров и постоянно растущие требования к организации бизнеса и оптимизации бизнес-процессов.
Автоматизация документооборота предполагает использование специального программного обеспечения для работы с документами и участие электронных документов в системе информационного обмена. В условиях электронного документооборота требуется гораздо меньше затрат на настройку документооборота при изменении внешних условий, например, требований по изменению формы отчетности. Внедрение системы автоматизации делопроизводства и электронного документооборота сопровождается оптимизацией всего процесса управления, который становится более простым и логичным. Улучшается качество принимаемых решений, эффективнее ведется контроль над исполнением управленческих решений, снижаются прямые и косвенные общественные издержки, связанные с содержанием аппарата управления.
Документы пересылаются с помощью автоматизированной системы документооборота, которая содержит единые для всей организации базы классификаторов, словарей и нормативов. Маршрутизация документов обычно определяется в зависимости от вида документа и сложившихся правил работы (правда, данная функция поддерживается не всеми системами). Обмен документами с внешними организациями при наличии договоренностей с ними обеспечивается с помощью корпоративного информационного портала.
Изучение принципов работы электронного документооборота, позволяет определить основные достоинства системы:
– однократная регистрация, позволяющая однозначно идентифицировать документ;
– параллельность выполнения операций, что позволяет сократить период документооборота и повысить оперативность принятия решений;
– непрерывность движения документа, позволяющая четко идентифицировать ответственного за исполнение конкретной задачи;
– единая база информации, позволяющая исключить возможность дублирования документов и эффективность системы организации поиска документа.
Традиционно ключевым потребителем систем электронного документооборота остается государственный сектор. По данным экспертов, порядка 30 % проектов по внедрению технологий электронного документооборота приходится на государственные учреждения. Электронный документооборот был назван ключевым элементом концепции «электронного правительства», реализация которой должна способствовать устранению бюрократии при взаимодействии государства, населения и бизнеса, а также снижению коррупции.
Используемые системы автоматизации документооборота (САД) не лишены недостатков, а именно, необходимость реформирования всей сложившейся системы документооборота на предприятии; дополнительные затраты на покупку программного обеспечения и обновление компьютерной техники; возможность несанкционированного доступа к информации; возникновение потребности в затратах средств и времени на обучение персонала и пр.
При внедрении системы автоматизации документооборота неизбежно возникает проблема оптимизации бизнес-процессов на предприятии и разработки соответствующих организационно-распорядительных и нормативных документов.
Оптимизация бизнес-процессов – частичное совершенствование существующих бизнес-процессов на предприятии, которое происходит путем избавления от явных недостатков, таких как информационные петли, дублирование функций и т. п. Оптимизация бизнес-процессов применяется в тех случаях, когда предприятию необходимо улучшить свою работу: снизить затраты, сократить производственный цикл, уменьшить количество управленческих ошибок, принять неотложные меры по выходу из кризиса и т. п. При оптимизации бизнес-процессов зачастую происходит изменение организационной структуры предприятия, осуществляется перераспределение функций подразделений.
Таким образом, в результате оптимизации бизнес-процессов улучшается взаимодействие между подразделениями, повышается эффективность деятельности и конкурентоспособность предприятия.
Получить достоверную информацию о том, как ставятся управленческие задачи в разных отделах, насколько своевременно они выполняются, какие пожелания и претензии поступают от клиентов, возможно при соблюдении следующих условий:
– обеспечение возможности доступа с любого компьютера, подключенного к сети Интернет, что позволяет эффективно использовать программу для фиксирования текущих управленческих задач, взаимодействия сотрудников, сроков выполнения работ, отзывов клиентов и пр.;
– обеспечение доступа и возможность изменения управленческой информации со стороны руководящих структур.
В результате внедрения подобных систем через некоторое время накапливается необходимый объем информации, позволяющий достаточно четко определить особенности, преимущества и недостатки существующих на предприятии бизнес-процессов, а также способы решения данных проблем.
Таким образом, оптимизация бизнес-процессов на предприятии посредством внедрения САД способствует обеспечению более высокого уровня качества и скорости решения задач поставленных задач.
Анализ существующих разработок для автоматизации документооборота
В качестве возможных видов программных продуктов, которые могут подойти для автоматизации документооборота рассмотрим информационные системы для организации электронного документооборота (СЭД).
Первый программный продукт – система Directum от одноименной компании. Система электронного документооборота DIRECTUM обладает расширенным функционалом, позволяющим автоматизировать работу канцелярии и закрыть более 20 прикладных задач коммерческих и государственных заказчиков. Сегодня 100% документов в офисе создается в электронном виде, но до сих пор более 80% документов распечатывается (для согласования, ознакомления, запуска в работу). Это априори неэффективный формат взаимодействия с контентом.
СЭД Directum - современная система, позволяющая значительно повысить эффективность работы всех подразделений организации как в своей области, так и в рамках совместной деятельности. Система управления Directum полностью обеспечивает электронное управление документами, органично взаимодействуя с традиционным «бумажным» делопроизводством.
Внедрение Directum в жизнедеятельность любого предприятия проходит легко и быстро благодаря возможностям системы:
- Управление электронными данными
Создавать, искать и хранить неструктурированные документы MicrosoftWord, MicrosoftExcel, MicrosoftVisio, CorelDraw легко. Информацию можно структурировать по папкам, открывать или ограничивать доступ к ней, отслеживать работу с документами.
- Управление производством
Система позволяет «выдавать» электронные поручения, контролировать их исполнение, обеспечивая легкость взаимодействия между различными отделами и сотрудниками.
- Управление договорами
СЭД Directum упрощает процессы поиска, анализа, редактирования, согласования и контроля договоров.
- Управление совещаниями
С помощью системы упрощается процедура подготовки и проведения рабочих встреч. Легко согласовываются место и время совещания, состав участников, формируются протоколы, отслеживается процесс исполнения решений.
- Работа с Заказчиками
Directum облегчает ведение единой клиентской базы, позволяет сохранять историю встреч, переписки с партнерами, цены предыдущих контрактов, с указанием стоимости единицы товара/услуги. Система помогает планировать маркетинговые мероприятия, анализировать эффективность маркетинговых воздействий.
- Канцелярия
СЭД незаменима при регистрации документов, ведении номенклатуры дел, для контроля над местонахождением бумажных документов, организации обмена электронными данными.
- Входящая документация
Система упрощает и систематизирует работу крупных предприятий и государственных учреждений со входящей документацией от частных лиц в рамках ФЗ № 59 «О порядке рассмотрения обращений граждан Российской Федерации».
- Управление показателями эффективности
Информационная система Directum позволяет обеспечивать оперативный контроль над бизнес-процессами по заложенным показателям эффективности.
В настоящее время на базе системы управления Directum разработано более 60 решений для предприятий. Каждое из них представляет собой продукт, подготовленный для быстрого внедрения. Платформа позволяет доработать любое решение под потребности конкретного заказчика.
Негативные стороны этой СЭД: отсутствие постраничного вывода объектов в опись документов и результатов поиска, недоступность применения дополнительных стилей в описи документа.
Пример интерфейса системы Directium приведен на рисунке 1.
Рисунок 1. Скриншот интерфейса системы Diectium
Следующий программный продукт – система ELMA.
ELMA ECM+ — это решение для построения электронного документооборота в организации на BPM-платформе. Сочетая процессный подход и технологии управления контентом (ECM), решение дает возможность полноценно управлять движением информации в компании, не привязываясь к документу в классическом понимании.
Это отличает ELMA ECM+ от классической СЭД, которая фиксируется на жизненном цикле документа и ограничивается традиционными процессами делопроизводства.
Приложение ELMA отличается простым в использовании и понятным
интерфейсом.
Данное приложение имеет обычный интерфейс файлового хранилища, который подойдет даже пользователям без большого опыта применения компьютеров.
Скриншот интерфейса системы ELMA приведен на рисунке 2.
Рисунок 2. Скриншот системы ELMA
Следующий программный продукт, который будет рассмотрен - OptimaWorkFlow.
OPTIMA-WorkFlow - комплексная платформа для создания автоматизированных систем управления документами.
OPTIMA-WorkFlow может автоматизировать документооборот и бизнес-процессы компании различного масштаба любой отрасли. Сегодня с системой работают такие организации, как Федеральная таможенная служба России, ТрансКонтейнер, Сибур, Газпром трансгаз Санкт-Петербург, Газпром добыча Оренбург, Лукойл-Информ, Государственно-правовое управление при Президенте РФ, ФССП России, МВД России, РОСПАТЕНТ и УКРПАТЕНТ, Верховная Рада Украины, Государственное управление делами Украины и многие другие.
Скриншот интерфейса системы Optima-WorkFlow приведен на рисунке 3.
Рисунок 3. Скриншот системы Optima-WorkFlow
Основные преимущества:
- открытая архитектура, применение самых современных технологий и промышленных стандартов;
- гибкость, функциональная полнота и масштабируемость платформы;
- наличие типовых (коробочных) решений;
- высокая степень соответствия требованиям MoReq2;
- полнофункциональный Web-клиент;
- возможность создания территориально-распределенных систем;
- применение ЭЦП для указания авторства и обеспечение юридической значимости документов, резолюций и решений по документам;
- потоковое сканирование, распознавание, полнотекстовый поиск, штрих-кодовая и радиочастотная (RFID) маркировка и идентификация документов;
- работа с различными СУБД и СХД (Microsoft SQL Server, Oracle Database, EMC Centera);
- простые и не требующие привлечения разработчика визуальные средства настройки и адаптации решений на платформе OPTIMA-WorkFlow;
- удобный, настраиваемый, многоязычный интерфейс;
- постоянное совершенствование платформы, развитые программы обучения и поддержки пользователей и эксплуатационного персонала;
- репутация Optima — надежного партнера и разработчика платформы OPTIMA-WorkFlow, одного из крупнейших технологических холдингов России.
Выводы по главе 1:
Автоматизация документооборота предполагает использование специального программного обеспечения для работы с документами и участие электронных документов в системе информационного обмена. В условиях электронного документооборота требуется гораздо меньше затрат на настройку документооборота при изменении внешних условий, например, требований по изменению формы отчетности.
Мы рассмотрели разные программы для автоматизации документооборота: СЭД Directum, ELMA ECM+ и OPTIMA-WorkFlow.
Глава 2. Анализ информационной системы управления документооборотом в ООО "Технопарк-центр"
Общая характеристика предприятия
ООО "Технопарк-центр" зарегистрирована по адресу 111024, МОСКВА Г, АВИАМОТОРНАЯ УЛ, 65, СТР.1. Генеральный директор организации Миропольцев Максим Федорович. Основным видом деятельности компании является Торговля розничная бытовыми электротоварами в специализированных магазинах. Размер уставного капитала 3,45 млн. руб.
ООО "Технопарк-центр" присвоен ИНН 7715631511, КПП 772201001[1].
ООО "Технопарк-центр" считается юридическим лицом, действует на принципах полного хозяйственного расчета, пользуется всеми правами юридического лица с момента государственной регистрации, имеет самостоятельный баланс, открыт расчетный счет в учреждении банка, имеет круглую печать со своим наименованием и реквизитами, угловой штамп.
На рисунке 4 представлена организационная структура головного офиса ООО "Технопарк-центр".
Рисунок 4. Организационная структура ООО "Технопарк-центр"
Организационная структура ООО "Технопарк-центр" является линейной.
Программная архитектура представляет собой программные средства организации диалога, программы, операционные системы, программные средства ведения БД, которые расширяют возможности ОС, специальное ПО. Операционная система на всех компьютерах - Windows 10. На серверах установлена ОС Windows Server 2012. На каждом рабочем месте установлен пакет Microsot Office 2010.
Рисунок 5. Программная архитектура организации ООО "Технопарк-центр"
На всех рабочих станциях сотрудников установлена операционная система Microsoft Windows 10, а также используется Microsoft Office 2019 Professional. Защиту компьютеров от вирусов обеспечивает Kaspersky Enterprise Space Security. В качестве корпоративной почты используется система Microsoft Exchange Server 2010. ИС по учету и контролю исполнения заявок обеспечивает BMC Remedy ITSM.
В ООО "Технопарк-центр" используется «1С Управление Производством Предприятия» версии 8.2. Решение позволяет организовать единую информационную систему для управления деятельностью предприятия: мониторинг и анализ показателей деятельности предприятия, финансами, персоналом, включая расчет заработной платы, отношениями с покупателями и поставщиками, продажами, закупками, складом (запасами), основными средствами и планированием ремонтов.
Техническая архитектура информационной системы описывает инфраструктуру, которая применяется для передачи данных. На техническом уровне производится решение задач сетевой структуры используемых каналов связи.
Рисунок 6. Техническая архитектура ООО "Технопарк-центр"
2.2. Анализ системы документооборота на предприятии
Характеристика процесса делопроизводства в разрезе IDEF0 представлена на рисунке 7.
Цель процесса: Обеспечить выполнение процесса управления документооборотом.
Рисунок 7. Контекстная диаграмма «Учет корреспонденции»
Взаимодействие системы с окружающей средой описывается с помощью входов (Входящая корреспонденция, Исходящая корреспонденция), выходов (Отчеты), управления (Правила документооборота) ресурсов (Делопроизводитель). Исполнителями процесса являются Делопроизводитель.
Выполняя декомпозицию этого процесса, получаем схему на рисунке 8.
В результате исследования входящего документа, в основном, формируется внутренний документ, исходящий документ, а поступивший документ отправляется на хранение.
Рисунок 8. Декомпозиция процесса учета документов
Документы, поступившие в отдел, принимаются сотрудником.
Документы, поступающие в подразделение, проходят:
- первичную обработку;
- регистрацию;
- оформление;
- передачу на исполнение.
В результате появляются такие проблемы, как доставка недостоверной информации, нарушение сроков ее доставки, потеря данных, что в свою очередь приводит к задержкам в составлении отчетности и замедлению работы всей организации, а также возникновении ошибках в ней.
Большой объем информации, обрабатываемых в ООО "Технопарк-центр", обеспечивает возможность затрачивать соответствующее время и рабочие ресурсы на обработку, контроль и исполнение документов. В этой связи необходимо снизить затрачиваемые средства с целью оптимизации деятельности всей инспекции.
Многие бизнес-процессы в ООО "Технопарк-центр" автоматизированы, однако при этом их сопровождают сопутствующие документы и договора в электронной и печатной форме, которые не объединяются с прочими процессами и материальными потоками в единую информационную систему. Отсутствие интеграции между бизнес-процессами, документами и материальными потоками приводит к ряду проблем, среди которых[2]:
- несоответствие реального состояния материальных движений документам;
- незафиксированные в документальном виде изменения в материальных потоках и процессах;
- долгий поиск документов по различным подразделениям;
- дублирования и неточности, большая вероятность допущения ошибок и различных несоответствий;
- отсутствие единого представления состояния дел и сложность прогнозирования и принятия решений в процессе управления;
- непрозрачность бизнес-процессов разработки, утверждения, согласования и контроля исполнения договоров.
Сотрудник, в основном, затрачивает довольно много времени на поиск нужных ему документов (как показывает статистика на это уходит около 40% рабочего времени) или воссоздание заново документов, которые существуют «где-то в компании» (такое происходит в 70% случаев). При такой сильной «разбросанности» информации и документов довольно трудно обеспечить их целостность, безопасность и непротиворечивость[3].
Далее проведем расчеты, с помощью которых можно оценить эффективность внедрения, автоматизированного систем для работы с клиентами.
Предположим, что на протяжении рабочего дня сотрудник обрабатывает примерно 30 документов. Результаты расчета ожидаемого эффекта от внедрения систем автоматизации представлены в таблице 1. Время представлено с учетом за рабочий день.
Таблица 1
Расчет эффекта внедрения автоматизационных систем
Действие работника делопроизводства |
Время, которые затрачивается при базовой технологии/ мин |
Время, которое затрачивается по предлагаемому варианту/мин. |
Оформление |
30–40 |
5–10 |
Регистрация документа |
35 |
3 |
Передача исполнителю |
30 |
3 |
Исполнение документа |
30 |
5 |
Проверка |
10 |
7 |
Резолюция |
20 |
10 |
Итого, минут: |
145 |
31 |
Таким образом, при действующей системе на совершение представленных в таблице действий нужно потратить примерно 3 часа. При внедрении данной системы данное время уменьшится до 31 минуты, т.е., в несколько раз.
Схема документооборота представлена на рисунке 6.
Внедрение автоматизированной системы документооборота обеспечивает возможность избежать многих ошибок, которые часто возникают при передаче, хранении и обработке документов, а также существенно укорить данные процессы, что в свою очередь приведет к значительной экономии рабочего времени работников, а, значит, к повышению общей эффективности деятельности предприятия[4].
Помимо этого, автоматизация электронного документооборота предоставляет следующие преимущества[5]:
- физическое освобождение места;
- сокращение расходов на копирование документов;
- снижение расходов на доставку информации в бумажной форме;
- снижение расходов на ресурсы: оборудование; и человеческий капитал - снижение расходов на бумагу;
Рисунок 6. Схема документооборота
- увеличение продуктивности работы: быстрое проведение работ, повышение общего числа выполняемых работ, улучшение работы с информацией / записями (документами, которые имеют юридические обязательства), возможность проведения новых видов работ или исполнения работ по другому.
Предложения по совершенствованию системы документооборота на предприятии
Создадим новый программный продукт под конкретные условия компании.
Информационная модель представляет собой схему движения входных, промежуточных и результативных потоков и функций предметной области.
Рисунок 7. Информационная модель системы
В соответствии с составленной информационной моделью Администратор может работать со всеми справочниками информационной системы. Сотрудник компании может создавать документ с помощью отдельной формы, либо работать с документом, с помощью другой формы пользовательского интерфейса. При создании документа добавляется новая запись в таблицу «Документы», а при работе с документом меняются записи как в этой таблице, так и в таблице «Комментарии».
Работа с документом заключается в изменении статусов документов и добавлении к ним комментарием. При выполнении этих операций сотрудникам компании приходят уведомления на электронную почту в виде писем. Также приходит письмо-уведомление и при создании нового документа. Помимо писем выходными данными ИС являются и файлы итоговых версий документов.
В информационной системе используются шесть справочников, характеристики которых приведены в таблице 2.
Таблица 2
Справочники информационной системы
№ пп |
Название справочника |
Ответственный за ведение |
Средний объём справочника в записях |
Среднюю частоту актуализа ции |
Средний объем актуализаци и, % |
1 |
Пользователи |
Администратор |
100 |
1 раз в день |
10 |
2 |
Должности |
Администратор |
50 |
1 раз в месяц |
10 |
3 |
Отделы |
Администратор |
10 |
1 раз в год |
10 |
4 |
Статусы документов |
Администратор |
4 |
Нет |
25 |
5 |
Роли пользователей |
Администратор |
2 |
1 раз в год |
30 |
6 |
Типы документов |
Администратор |
50 |
1 раз в месяц |
10 |
Справочник «Статусы документов» носит нормативный характер и его актуализировать не нужно. Справочник «Роли пользователей» достаточно актуализировать раз в год. В остальных справочниках содержится информация, которая актуализируется в среднем раз в месяц.
Реквизитный состав каждого справочника представлен в виде таблицы 3.
Таблица 3
Реквизитный состав справочников информационной системы
№ пп |
Название справочника |
Перечень реквизитов |
1 |
Пользователи |
ФИО пользователя; логин; пароль; электронная почта; отдел; должность; роли пользователя |
2 |
Должности |
наименование должности |
3 |
Отделы |
наименование отдела |
4 |
Статусы документа |
наименование статуса |
5 |
Роли пользователей |
наименование роли |
6 |
Типы документов |
наименование типа; для каких отделов предназначен тип документа; для каких должностей предназначен |
Редактирование и ввод новых записей во все справочники осуществляется с помощью специальных форм.
На рисунке 8 изображена форма для работы с записями справочника «Пользователи».
Рисунок 8. Форма Пользователь
Поле для ввода пароля продублировано, это необходимо для того, чтобы исключить возможность опечатки при вводе пароля.
Перед сохранением данных проверяется наличие пользователей с таким же логином (каждый пользователь должен иметь уникальный логин), сложность введенного пароля (минимум одна цифра и один прописной знак).
Формы для работы с записями других справочников имеют аналогичный вид (Рисунок 9-11).
Рисунок 9. Форма Должности
Рисунок 10. Форма Отделы
Рисунок 11. Форма Типы документов
На форме работы с записями справочника «Типы документов» помимо названия типа также необходимо указать для каких отделов предназначен данный тип документа и для каких должностей (документы с данным типом не будут отображаться у пользователей неподходящих отделов и должностей).
В качестве входных данных для информационной системы автоматизации документооборота выступают создаваемые документы, а также комментарии к ним. Перечисленные входные данные создаются с помощью форм, расположенных на сайте. Внешний вид форм представлен на рисунках 12 (форма создания документа) и 13 (форма отправки комментария к документу).
Рисунок 12. Форма для создания документа
Рисунок 13. Форма отправки комментария к документу
Данные, введенные в формы, которые приведены выше, сохраняются в базе данных и используются для формирования выходных данных (результатной информации).
Результатная информация представлена в виде отчетов и описана в таблице 4
Таблица 4
Описание результатной информации
№ пп |
Наименование |
Реквизиты |
Таблицы, на основе которых формируется |
Частота формирования |
Способ доставки |
1 |
Письмо «Новый документ» |
Номер документа Наименование документа Описание ФИО сотрудника Тип документа |
Документы Пользователи Статусы документов Отделы Должности Типы документов |
По мере необходимости |
Электронное письмо |
2 |
Письмо «Новый комментарий» |
ФИО сотрудника Номер документа Текст комментария |
Документы Пользователи Комментарии |
По мере необходимости |
Электронное письмо |
3 |
Письмо «Изменение статуса документа» |
Номер документа ФИО сотрудника Новый статус документа |
Документы Пользователи Статусы документов |
По мере необходимости |
Электронное письмо |
4 |
Итоговая версия документа |
Имя файла Объем |
Документы |
По мере необходимости |
Файл в формате DOX, DOCX, XLS, XLSX, PDF и др. |
Для написания информационной системы автоматизации документооборота использовался фреймворк языка php Symfony 2. Данный фреймворк работает с подходом к программированию, называемый Model-viewcontroller (MVC, «модель-представление-контроллер», «модель-видконтроллер»).
Основная идея данного подхода заключается в разделении данных, их представлений и обработку действий пользователей на три больших группы:
- Модель (англ. Model). Модель предоставляет знания: данные и методы работы с этими данными, реагирует на запросы, изменяя своё состояние. Объекты данной группы не содержат информации, как эти знания можно визуализировать.
- Представление, вид (англ. View). Отвечает за отображение информации (визуализацию). Часто в качестве представления выступает форма (окно) с графическими элементами. Главная задача – представить информацию, хранимой в модели в виде, воспринимаемым пользователем.
- Контроллер (англ. Controller). Обеспечивает связь между пользователем и системой: контролирует ввод данных пользователем и использует модель и представление для реализации необходимой реакции.
Важно отметить, что как представление, так и контроллер зависят от модели. Однако модель не зависит ни от представления, ни от контроллера. Тем самым достигается назначение такого разделения: оно позволяет строить модель независимо от визуального представления, а также создавать несколько различных представлений для одной модели.
Общая схема архитектуры информационной системы согласно данной парадигмы изображена на рисунке 14.
Рисунок 14. Архитектура ИС (Model-view-controller)
Список разработанных программных модулей и их назначений представлен в таблице 5.
Таблица 5
Программные модули
Номер |
Название |
Описание |
1 |
routing.yml |
Файл с настройками маршрутов для маршрутизатора Symfony 2 |
2 |
DefaultContoller.php |
Класс контроллера, обрабатывающий маршрут главной страницы информационной системы |
3 |
DepartmentController.php |
Класс контроллера, содержащий методы для отображения данных и форм об отделах компании, обработки отправленных форм |
4 |
DocController.php |
Класс контроллера, содержащий методы для отображения данных и форм работы с документами, комментариями и файлами к ним, обработки отправленных форм |
5 |
StaffController |
Класс контроллера, содержащий методы для отображения данных и форм о должностях компании, обработки отправленных форм |
6 |
TypeDocController.php |
Класс контроллера, содержащий методы для отображения данных и форм о типах документов, обработки отправленных форм |
7 |
SecurityController.php |
Класс контроллера, содержащий методы и функции, необходимые для реализации функций авторизации, выхода из сайта, управления профилем пользователя |
8 |
UsersController.php |
Класс контроллера, содержащий методы для отображения данных и форм о пользователях, обработки отправленных форм |
9 |
User.php |
Класс модели, содержащий атрибуты и методы для работы с объектом пользователя |
10 |
Department.php |
Класс модели, содержащий атрибуты и методы для работы с объектом отдела |
11 |
Doc.php |
Класс модели, содержащий атрибуты и методы для работы с документом |
12 |
Comment.php |
Класс модели, содержащий атрибуты и методы для работы с объектом комментария к документу |
13 |
Status.php |
Класс модели, содержащий атрибуты и методы для работы с объектом статуса документа |
14 |
Role.php |
Класс модели, содержащий атрибуты и методы для работы с объектом роли пользователя |
15 |
TypeDoc.php |
Класс модели, содержащий атрибуты и методы для работы с типом документа |
16 |
Staff.php |
Класс модели, содержащий атрибуты и методы для работы с должностью |
17 |
DepartmentFormType.php |
Класс формы управления данными отдела |
18 |
LoginFormType.php |
Класс формы авторизации |
19 |
DocFormType.php |
Класс формы управления данными документа |
20 |
CommentFormType |
Класс формы отправки комментария |
21 |
DocFilterFormType.php |
Класс формы для реализации фильтра в списке документов |
22 |
StatusFormType.php |
Класс формы управления данными статусов документов |
23 |
StaffFormType.php |
Класс формы управления данными должности |
24 |
TypeDocFormType.php |
Класс формы для управления данными типа документа |
25 |
ProfileFormType.php |
Класс формы для реализации работы с профилем пользователя |
26 |
UserFormType.php |
Класс формы для реализации работы с данными пользователя |
27 |
UserFilterType.php |
Класс формы для реализации фильтра в списке пользователей |
На рисунке 15 приведено дерево вызова программных модулей.
Рисунок 15. Дерево вызова программных модулей
Каждый контролер обрабатывает запросы, отправляемые по соответствующему маршруту. Описание того, какой контроллер должен обрабатывать тот или иной маршрут оформляется в виде отдельного файла:
routing.yml.
Пример записи (главная страница ИС):
index:
path: /
defaults: { _controller: "AppBundle:DefaultController:Index" }
Такая запись означает следующее:
- первая строка – название маршрута (index);
- вторая строка – путь, или URL-адрес маршрута (/);
- третья строка – имя класса контроллера, который должен обрабатывать маршрут, а также метод этого контроллера, ответственный именно за этот маршрут;
Обработка маршрута выполняется в контроллере DefaultController.php. При переходе по маршруту (отправке запроса на url /) начинает свою работу метод IndexAction. Данный метод проверяет наличие у пользователя открытой сессии авторизации, и если такой нет, то перенаправляет пользователя на форму авторизации (маршрут /login, Контроллер SecurityController.php).
Для обработки шаблонов и формирования на их основе html-страниц, отображаемых пользователю, используется распространенный шаблонизатор twig. Twig – компилирующий обработчик шаблонов с открытым исходным кодом, написанный на языке программирования PHP. Синтаксис, поддерживаемый шаблонизатором позволяет использовать в шаблонах ветвления, циклы, а удобная структура кода позволяет значительно сократить итоговый объем программного кода. Также стоит отметить, что шаблонизатор генерирует на основе своих шаблонов чистый php-код, который обрабатывается значительно быстрее.
При переадресации на маршрут открытия формы (/login), срабатывает метод loginAction контроллера SecurityController.php. Он создает экземпляр формы LoginFormType.php и обрабатывает её отправку. На рисунке 23 приведен алгоритм работы данного метода.
Рисунок 23. Алгоритм работы метода loginAction
После успешного прохождения авторизации, пользователю отображается страница со списком документов. Данную страницу формирует метод indexAction контроллера DocController.php на основании шаблона Documents:index.html.twig. Методы остальных контроллеров работают аналогичным образом.
Заключение
В настоящее время в мире происходит стремительное развитие информационных технологий, что способствует существенному обострению конкуренции. Поэтому, ввиду этого стремительного развития информационных технологий, некоторое конкурентное преимущество, полученное за счет введения новых технологий, можно удержать лишь очень недолгий период.
На сегодняшний день любая организация нуждается в документообороте. Информация в современном мире очень важна, а документооборот является системой оформления, использования и движения расчетных документов и денежных средств.
Целью курсовой работы была автоматизация документооборота организации ООО "Технопарк-центр".
Внедрение системы документооборота позволит сократить площади, на которых хранится информация, ведь отпадет необходимость ведения бумажных журналов регистрации документов. А если учесть, что с каждым годом объем обрабатываемой информации будет только возрастать, становится очевидным, что внедрение автоматизированной системы является ключом к эффективной работе и в будущем. Кроме всего прочего, для руководителя или ответственного лица система автоматизации документации позволяет производить всю работу удалённо, с того места, из которого это необходимо в данную минуту. Такие возможности стали реальностью с внедрением специальных портативных программных обеспечений и приложений для телефона, планшета, компьютера. Все, что нужно для начала работы – это ввести данные, произвести контроль и выполнить необходимые мероприятия.
Современная система автоматизации документооборота позволяет не только проводить все манипуляции максимально быстро и эффективно, но и делать это абсолютно конфиденциально. К примеру, вся важная информация по финансам, количеству контактов партнеров, клиентов, сотрудников имеется только в доступе у нескольких сотрудников (единый реестр): руководитель, отдела безопасности, отдела кадров. Ранее реализовывать такую задачу было крайне сложно.
Список литературы
Автоматизированные информационные технологии в экономике / Под ред. Г.А. Титоренко. – М.:ЮНИТИ, 2017. – 125с. (1).
Аглицкий И. Автоматизация управления предприятием, 2016. – 310с. (3).
Алистер Коберн, Современные методы описания функциональных требований к системам, М.: издательство "Лори", 2017. – 288 с
Вендров, А. М. Практикум по проектированию программного обеспечения экономических информационных систем / А.М. Вендров. - М.: Финансы и статистика, 2017. - 192 c.
Зегжда, Д.П. Основы безопасности информационных систем / Д.П. Зегжда, А.М. Ивашко. - М.: Горячая линия - Телеком, 2017. - 452 c.
Исаев Г.А.: Проектирование информационных систем. Учебное пособие, - М., Омега-Л, 2015 г. - 424 с.
Коваленко, В.В. Проектирование информационных систем: Учебное пособие / В.В. Коваленко. - М.: Форум, 2015. - 976 c.
Курлов А.А, Петров Е.А.: Методология информационной аналитики, - М.,Проспект, 2014 г. - 384 с.
Смоленцева Л.В. Анализ подходов к созданию информационных систем для экономистов // Экономика и социум. – 2014г. - №4-6 (13). - С. 69-74.
Современные методы и средства проектирования информационных систем, Вендров А.М., 2017г. – 400с.
Приложение 1
Скрипт создания базы данных
CREATE TABLE Comment
( id AUTOINCREMENT INTEGER NOT NULL,
commentext VARCHAR(255) NOT NULL,
createdat DATETIME NOT NULL,
authorid INTEGER NOT NULL,
documentid INTEGER NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE Department
( id AUTOINCREMENT INTEGER NOT NULL,
caption VARCHAR(255) NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE Departments_types
( typeid INTEGER NOT NULL,
staffid INTEGER NOT NULL,
PRIMARY KEY (typeid,staffid)
);
CREATE TABLE Document
( id AUTOINCREMENT INTEGER NOT NULL,
caption VARCHAR(255) NOT NULL,
description VARCHAR(255) NULL,
authorid INTEGER NOT NULL,
recipientid INTEGER NOT NULL,
statusid INTEGER NOT NULL,
createdAt DATETIME NOT NULL,
deadline DATETIME NOT NULL,
typeid CHAR(18) NOT NULL, PRIMARY KEY (id)
);
CREATE TABLE Role
( id INTEGER AUTOINCREMENT NOT NULL,
caption VARCHAR(255) NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE Staff
( id INTEGER AUTOINCREMENT NOT NULL,
caption VARCHAR(255) NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE Staffs_types
( typeid INTEGER NOT NULL,
staffid INTEGER NOT NULL,
PRIMARY KEY (typeid, staffid)
);
CREATE TABLE Status
( id INTEGER AUTOINCREMENT NOT NULL,
caption VARCHAR(255) NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE TypeDoc
( id INTEGER AUTOINCREMENT NOT NULL,
caption VARCHAR(255) NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE UploadFile
( id AUTOINCREMENT INTEGER NOT NULL,
createdat DATETIME NOT NULL,
pathfile VARCHAR(255) NOT NULL,
docid INTEGER NOT NULL,
authorid INTEGER NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE User
( id AUTOINCREMENT INTEGER NOT NULL,
fio VARCHAR(255) NOT NULL,
login VARCHAR(255) NOT NULL,
password VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL,
departmentid INTEGER NOT NULL,
staffid INTEGER NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE Users_role
( userid INTEGER NOT NULL,
roleid INTEGER NOT NULL,
PRIMARY KEY (roleid, userid)
);
Приложение 2
<?php
namespace AppBundle\Entity;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Security\Core\User\UserInterface;
/**
* Class User
* @package AppBundle\Entity
* @ORM\Entity
* @ORM\Table(name = "users")
*/
class User extends AbstractEntity implements UserInterface, \Serializable
{ /**
* @var string
* @ORM\Column(name = "password", type = "string")
*/
protected $password;
/**
* @var ArrayCollection|Role[]
* @ORM\ManyToMany(targetEntity = "AppBundle\Entity\Role", inversedBy = "users")
* @ORM\JoinTable(name = "user_roles", * joinColumns = {@ORM\JoinColumn(name = "userid", referencedColumnName = "id")},
* inverseJoinColumns = {@ORM\JoinColumn(name = "roleid", referencedColumnName = "id")}
* )
*/
protected $roles;
/**
* @var string
* @ORM\Column(name = "salt", type = "string")
*/
protected $salt;
/**
* @var string
* @ORM\Column(name = "username", type = "string", unique = true)
*/
protected $username;
/**
* @var string
* @ORM\Column(name = "userfio", type = "string")
*/
protected $userfio;
/**
* @var string
* @ORM\Column(name = "email", type = "string")
*/ protected $email;
/**
* @var string
* @ORM\Column(name = "phone", type = "string")
*/
protected $phone;
/**
* @var boolean
* @ORM\Column(name = "deleted", type = "boolean")
*/
protected $deleted;
/**
* @var ArrayCollection|Movement[]
* @ORM\OneToMany(targetEntity = "AppBundle\Entity\Movement", mappedBy = "user", cascade = {"persist", "remove"})
*/
protected $movements;
public function __construct()
{
parent::__construct();
$this->roles = new ArrayCollection();
$this->movements = new ArrayCollection();
$this->salt = self::generateSalt();
$this->deleted = false;
}
public function eraseCredentials()
{
return $this;
}
/**
* @return string
*/
public static function generateSalt()
{
$symbols = '0123456789abcdef';
$salt = '';
foreach (range(1, 32) as $i) $salt .= $symbols[mt_rand(0, 15)];
return $salt;
// return openssl_random_pseudo_bytes(32);
}
/**
* @return string
*/
public function getPassword()
{
return $this->password;
}
/**
* @return array|Role[]
*/
public function getRoles()
{
return $this->roles->toArray();
}
/**
* @return ArrayCollection|Role[]
*/
public function getRolesCollection()
{ return $this->roles;
}
/**
* @return string
*/ public function getSalt()
{
return $this->salt;
}
/**
* @return string
*/ public function getUsername()
{
return $this->username;
}
public function serialize()
{
return serialize(array(
'id' => $this->id,
'username' => $this->username,
'password' => $this->password,
'salt' => $this->salt
));
}
/**
* @param string $password
* @return $this
*/
public function setPassword($password)
{
$this->password = $password;
return $this;
}
public function setRoles($roles)
{
$this->roles->clear();
foreach ($roles as $role) $this->roles->add($role);
return $this;
}
/**
* @param string $salt
* @return $this
*/
public function setSalt($salt)
{
$this->salt = $salt;
return $this;
}
/**
* @param string $username
* @return $this
*/
public function setUsername($username)
{
$this->username = $username;
return $this;
}
public function unserialize($serialized)
{
$unserialized = unserialize($serialized);
$this->id = $unserialized['id'];
$this->username = $unserialized['username'];
$this->password = $unserialized['password'];
$this->salt = $unserialized['salt'];
return $this;
}
/**
* @return boolean
*/ public function isDeleted()
{ return $this->deleted;
}
/**
* @param boolean $deleted
*/ public function setDeleted($deleted)
{
$this->deleted = $deleted;
}
/**
* @return string
*/
public function getEmail()
{
return $this->email;
}
/**
* @param string $email
*/
public function setEmail($email)
{
$this->email = $email;
}
/**
* @return string
*/ public function getPhone()
{
return $this->phone;
}
/**
* @param string $phone
*/
public function setPhone($phone)
{
$this->phone = $phone;
}
/**
* @return string
*/ public function getUserfio()
{
return $this->userfio;
}
/**
* @param string $userfio
*/
public function setUserfio($userfio)
{ $this->userfio = $userfio;
}
/**
* @return Movement[]|ArrayCollection
*/ public function getMovements()
{
return $this->movements;
}
/**
* @param Movement[]|ArrayCollection $movements
*/
public function setMovements($movements)
{
$this->movements = $movements;
}
}
<?php
namespace AppBundle\Entity;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;
/**
* Class Department
* @package AppBundle\Entity
* @ORM\Entity * @ORM\Table(name = "department")
*/ class Department extends AbstractEntity
{
/**
* @var string
* @ORM\Column(name = "caption", type = "string")
*/
protected $caption;
/**
* @var boolean
* @ORM\Column(name = "main", type = "boolean")
*/
protected $deleted;
/**
* @var ArrayCollection|Worker[]
* @ORM\OneToMany(targetEntity = "AppBundle\Entity\Worker", mappedBy = "department", cascade = {"persist", "remove"})
*/
protected $workers;
public function __construct()
{
parent::__construct();
$this->deleted = false;
$this->workers = new ArrayCollection();
}
/**
* @return string
*/
public function getCaption()
{
return $this->caption;
}
/**
* @param string $caption
*/
public function setCaption($caption)
{
$this->caption = $caption;
}
/**
* @return boolean
*/ public function isDeleted()
{
return $this->deleted;
}
/**
* @param boolean $deleted
*/
public function setDeleted($deleted)
{
$this->deleted = $deleted;
}
/**
* @return Worker[]|ArrayCollection
*/
public function getWorkers()
{
$workers= array();
foreach ($this->workers as $worker)
{
if (!($worker->isDismis())){
array_push($workers,$worker);
}
}
return $workers;
}
/**
* @param Worker[]|ArrayCollection $workers
*/
public function setWorkers($workers)
{
$this->workers = $workers;
}
}
<?php
namespace AppBundle\Controller;
use AppBundle\Form\Type\UserFormType;
use AppBundle\Form\Type\UserFilterFormType;
use AppBundle\Entity\Role;
use AppBundle\Entity\User;
use Sensio\Bundle\FrameworkExtraBundle\Configuration as Config;
use Symfony\Component\Form\FormError;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use Symfony\Component\Security\Core\Encoder\UserPasswordEncoder;
use Symfony\Component\Security\Core\Security;
class UsersController extends InitializableController
{
/**
* @return RedirectResponse|Response
* @Config\Route("/users", name = "site_users_index")
*/ public function indexAction()
{
if (!($this->authChecker->isGranted(Role::ADMIN))) {
return $this->redirectToRoute('homepage');
}
else {
$form=$this->createForm(new UserFilterFormType());
$username = null;
$email=null;
$phone=null;
$role=null;
$form->handleRequest($this->request);
$usersquery = $this->getRepository('User')->createQueryBuilder('u')
->leftJoin('u.roles', 'r')
->where('u.deleted <> 1')
->orderBy('u.id', 'DESC');
if ($form->isSubmitted() && $form->isValid()) {
$username = $form->get('username')->getData();
$email = $form->get('email')->getData();
$phone = $form->get('phone')->getData();
$role = $form->get('role')->getData();
}
if (!empty($username)) {
$usersquery->andWhere('LOWER(u.username) LIKE LOWER(:username) ')->setParameter('username', '%' . trim($username) . '%');
}
if (!empty($email)) {
$usersquery->andWhere('LOWER(u.email) LIKE LOWER(:email) ')>setParameter('email', '%' . trim($username) . '%');
}
if (!empty($phone)) {
$usersquery->andWhere('LOWER(u.phone) LIKE LOWER(:phone) ')>setParameter('phone', '%' . trim($username) . '%');
}
if (!empty($role)) {
$usersquery->andWhere('r.id = :role')->setParameter('role', $role);
}
$users=$usersquery->getQuery()->getResult();
$this->view['users'] = $users;
$this->view['form'] = $form->createView();
$this->navigation = array('active' => 'users');
return $this->render('AppBundle:Users:index.html.twig');
}
}
/**
* @return RedirectResponse|Response
* @Config\Route("/users/add", name = "site_users_add")
*/
public function addAction()
{
if (!($this->authChecker->isGranted(Role::ADMIN))) {
return $this->redirectToRoute('homepage');
}
else {
$user = new User();
$user->getRolesCollection()->add($this->getRepository('Role')>findOneByRole(Role::USER));
$form = $this->createForm(new UserFormType(), $user);
$form->handleRequest($this->request);
if ($form->isSubmitted() && $form->isValid()) {
$valid = true;
$sames = $this->getRepository('User')->createQueryBuilder('u')
->select('COUNT(u.id) AS id')
->where('u.username = :username') -
>setParameters(array('username' => $user->getUsername())) -
>getQuery()->getSingleScalarResult();
if ($sames > 0) {
$form->get('username')->addError(new FormError('Пользователь с таким логином уже существует.'));
$valid = false;
}
if (is_null($form->get('password')->getData())) {
$form->get('password')->addError(new FormError('Пожалуйста, укажите пароль пользователя.'));
$valid = false;
}
if ($valid) {
/** @var UserPasswordEncoder $encoder */
$encoder = $this->get('security.password_encoder');
$user->setSalt(User::generateSalt())
->setPassword($encoder->encodePassword($user, $user>getPassword()));
$this->manager->persist($user);
$this->manager->flush();
$this->addNotice('success',
'users.html.twig',
array('notice' => 'user_added', 'username' => $user->getUsername())
);
return $this->redirectToRoute('site_users_index');
}
}
$this->forms['user'] = $form->createView();
$this->navigation = array('active' => 'users');
return $this->render('AppBundle:Users:add.html.twig');
}
}
/**
* @param User $user
* @return RedirectResponse|Response
* @Config\Route("/users/{user}/edit", name = "site_users_edit")
* @Config\ParamConverter("user", options = {"mapping": {"user": "id"}})
*/
public function editAction(User $user)
{
if (!($this->authChecker->isGranted(Role::ADMIN))) {
return $this->redirectToRoute('homepage');
}
else {
$password = $user->getPassword();
$form = $this->createForm(new UserFormType(), $user);
$form->handleRequest($this->request);
if ($form->isSubmitted() && $form->isValid()) {
$valid = true;
$sames = $this->getRepository('User')->createQueryBuilder('u')
->select('COUNT(u.id) AS id')
->where('u.username = :username')
->andWhere('u.id <> :id')
->setParameters(array('username' => $user->getUsername(), 'id' => $user>getId()))
->getQuery()->getSingleScalarResult();
if ($sames > 0) {
$form->get('username')->addError(new FormError('Пользователь с таким логином уже существует.'));
$valid = false;
}
if ($valid) {
if (!is_null($form->get('password')->getData())) {
/** @var UserPasswordEncoder $encoder */
$encoder = $this->get('security.password_encoder');
$user->setSalt(User::generateSalt()) -
>setPassword($encoder->encodePassword($user, $user>getPassword()));
} else {
$user->setPassword($password);
}
$this->manager->persist($user);
$this->manager->flush();
$this->addNotice('success',
'users.html.twig',
array('notice' => 'user_changed', 'username' => $user->getUsername())
);
return $this->redirectToRoute('site_users_index');
}
}
$this->forms['user'] = $form->createView();
$this->view['user'] = $user;
$this->navigation = array('active' => 'users');
return $this->render('AppBundle:Users:edit.html.twig');
}
}
/**
* @param User $user
* @return Response
* @Config\Route("/users/{user}/remove", name = "site_users_remove")
* @Config\ParamConverter("user", options = {"mapping": {"user": "id"}})
*/
public function removeAction(User $user)
{
$user->setDeleted(true);
$this->manager->persist($user);
$this->manager->flush();
return $this->redirectToRoute('site_users_index');
}
}
<?php namespace AppBundle\Controller;
use AppBundle\Form\Type\LoginFormType;
use AppBundle\Form\Type\ProfileFormType;
use AppBundle\Controller\InitializableController;
use AppBundle\Entity\Role; use AppBundle\Entity\User;
use Sensio\Bundle\FrameworkExtraBundle\Configuration as Config;
use Symfony\Component\Form\FormError;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use Symfony\Component\Security\Core\Encoder\UserPasswordEncoder;
use Symfony\Component\Security\Core\Security; class SecurityController extends InitializableController {
/**
* @return RedirectResponse|Response
* @Config\Route("/login", name = "site_security_login")
*/
public function loginAction()
{
if ($this->authChecker->isGranted(Role::USER)) return $this>redirectToRoute('homepage');
$error = null;
if ($this->request->attributes >has(Security::AUTHENTICATION_ERROR))
$error = $this->request->attributes>get(Security::AUTHENTICATION_ERROR);
else {
$error = $this->session->get(Security::AUTHENTICATION_ERROR, null);
$this->session->remove(Security::AUTHENTICATION_ERROR);
}
if (!is_null($error)) {
$this->addNotice('error', 'security_login.html.twig', array('notice' => 'auth_error'));
}
$form = $this->createForm(new LoginFormType(), new User());
$this->navigation = array('active' => 'login');
$this->forms = array(
'login' => $form->createView(),
'last_username' => $this->session->get(Security::LAST_USERNAME, null)
);
return $this->render('AppBundle:Security:login.html.twig');
}
/**
* @throws NotFoundHttpException
* @Config\Route("/login-check", name = "site_security_login_check")
*/
public function loginCheckAction()
{
throw $this->createNotFoundException();
}
/**
* @throws NotFoundHttpException
* @Config\Route("/logout", name = "site_security_logout")
*/
public function logoutAction()
{
throw $this->createNotFoundException();
}
/**
* @return RedirectResponse|Response
* @Config\Route("/profile", name = "site_security_profile")
*/
public function profileAction()
{
$form = $this->createForm(new ProfileFormType(), $this->user); $form->handleRequest($this->request);
if ($form->isSubmitted() && $form->isValid()) {
if (!is_null($form->get('password')->getData())) {
/** @var UserPasswordEncoder $encoder */
$encoder = $this->get('security.password_encoder');
$this->user->setSalt(User::generateSalt()) ->setPassword($encoder->encodePassword($this->user, $this->user>getPassword()));
$this->manager->persist($this->user);
$this->manager->flush();
}
$this->addNotice('success',
'security_profile.html.twig',
array('notice' => 'user_changed')
);
return $this->redirectToRoute('homepage');
} $this->forms['profile'] = $form->createView();
$this->navigation = array('active' => 'homepage');
return $this->render('AppBundle:Security:profile.html.twig');
}
}
-
https://www.list-org.com/company/4577575 ↑
-
Аглицкий И. Автоматизация управления предприятием, 2016. – 310с. (3). ↑
-
Автоматизированные информационные технологии в экономике / Под ред. Г.А. Титоренко. – М.:ЮНИТИ, 2017. – 125с. (1). ↑
-
Бородакий Ю. В., Лободинский Ю. Г. Информационные технологии: Методы, процессы, системы / Ю.В. Борода¬кий, Ю.Г. Лободинский. – М.: Радио и связь, 2014. – 371 с. ↑
-
Современные методы и средства проектирования информационных систем, Вендров А.М., 2017. – 400с. 15). ↑
- Аутсорсинг услуг по ИТ-консультированию в компании «Южные ворота»
- ОРГАНЫ СУДЕБНОЙ ВЛАСТИ (СУДЕБНАЯ СИСТЕМА РОССИЙСКОЙ ФЕДЕРАЦИИ)
- Понятие индивидуального предпринимательства и предпринимательской деятельности. государственная регистрация индивидуального предпринимателя
- Организация закупочной работы коммерческой организации (Сущность, содержание, современные подходы)
- Понятие государства
- Механизмы управления конфликтными ситуациями
- ПОНЯТИЕ И ВИДЫ ПРАВОСОЗНАНИЯ (Понятие, свойства и функции правосознания)
- Корпоративная культура организации: характеристики и особенности формирования в современных условиях.
- Управление собственным бизнесом
- Цветопередача и сущность картины И.И. Машкова “Синие сливы“
- Использование корпоративных ИС для решения задач организации документооборота на предприятиях
- ПОНЯТИЕ И ОСНОВНЫЕ ПРИЗНАКИ ПРАВОВОЙ НОРМЫ (Понятие и признаки правовой нормы)