Разработка проекта автоматизации бизнес-процессов предприятия с помощью функциональных возможностей информационных систем путём создания веб-сервиса интеграции
Разработка гетерогенных информационных систем как один из подходов интеграции объектно-ориентированных приложений с реляционными базами данных. Машинный код – вид информации, состоящий из инструкций, которые компьютер может непосредственно выполнять.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 21.03.2019 |
Размер файла | 1,1 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Панель управления. Сторона, обращенная к администратору - это панель управления или портал, где администратор офиса, начальник службы безопасности или ИТ-менеджер устанавливает параметры лиц, которым разрешен доступ в помещение, и при каких обстоятельствах.
В более продвинутых системах аспект ручных операций может быть автоматизирован. Например, предоставление (создание и удаление доступа) может быть выполнено автоматически путем подключения панели доступа к каталогу сотрудников компании. Когда в системе появляется новый сотрудник, новый доступ автоматически позиционируется через API или службу интегрированной базы данных.
Инфраструктура. Панель управления доступом или интеллектуальный контроллер, панель управления доступом не видна большинству людей в учреждении, поскольку она установлена в комнате ИТ или в электрическом, телефонном или коммуникационном шкафу. Причина этой меры предосторожности заключается в том, что все замки подключены к нему. Когда действительные учетные данные представлены на устройстве считывания двери, панель получает запрос на разблокировку определенного реле, которое подключено к определенному проводу двери.
Каждая система контроля доступа нуждается в сервере, где разрешения хранятся в базе данных доступа. Как таковая она действует как центр или «мозг» системы контроля доступа. Это действительно сервер, который принимает решение, должна ли дверь открываться или нет, сопоставляя учетные данные, представленные с полномочиями, разрешенными для этой двери. Сервер может быть выделенным локальным компьютером под управлением Windows или Linux, облачным сервером или даже децентрализованным сервером, когда разрешения хранятся в устройстве считывания дверей. Сервер также отслеживает и записывает действия и события, связанные с доступом, и позволяет администраторам получать отчеты о прошлых событиях данных за определенный период времени.
Если используется локальный сервер управления доступом, на нем обычно есть выделенный компьютер, на котором выполняется программное обеспечение доступа. Управление им требует присутствия администратора на месте. Поскольку необходимость управления несколькими локальными серверами может усложнить управление несколькими объектами, облачные серверы приобретают все большую популярность в этой области.
1.7 Защита информации
Безопасность всегда была ключевой для защиты конфиденциальности, целостности и доступности личных данных.
С ростом использования онлайн и мобильных приложений, достижений аналитики и Интернета вещей потребность в защите данных становится как никогда важной, учитывая риски новых уязвимостей системы и кибератак, а также отслеживание конечных пользователей.
Тем не менее, безопасность - это не только применение одной или нескольких мер, и никакая мера безопасности сама по себе не может обеспечить адекватный уровень защиты личных данных. Напротив, безопасность персональных данных должна следовать тщательной и постоянно отслеживаемой структуре средств контроля, как технических, так и организационных, соответствующих характеру обработки данных и связанным с этим рискам.
Семейство стандартов ISO / IEC 27000 помогает организациям обеспечивать безопасность информационных активов.
Использование этого семейства стандартов помогает управлять безопасностью активов, таких как финансовая информация, интеллектуальная собственность, сведения о сотрудниках или информация, доверенная вам третьими лицами.
ISO / IEC 27001 является самым известным стандартом в семействе, обеспечивающим требования к системе менеджмента информационной безопасностью (СМИБ).[10]
СМИБ - это системный подход к управлению конфиденциальной информацией компании. Он включает людей, процессы и ИТ-системы, применяя процесс управления рисками.
Информационная безопасность обладает следующими свойствами:
Конфиденциальность - обеспечение доступности информации только для тех, кто имеет соответствующие полномочия;
Целостность - обеспечение точности и полноты информации, а также методов её обработки;
Доступность - обеспечение доступа к информации авторизированным пользователям, когда это необходимо (по требованию).
В Российской Федерации базовым документом по информационной безопасности является «Доктрина информационной безопасности», которая определяет официальную позицию государства на цели, методы, принципы и задачи обеспечения информационной безопасности с соблюдением национальных интересов в этой сфере.
Информационная безопасность в Российской Федерации регламентирована не достаточно хорошо, поэтому были адаптированы международные стандарты, в том числе и группа стандартов ISO / IEC 27001. Наряду с этим в России существует собственная линейка стандартов.
На законодательном уровне приняты нормативные правовые акты, организационно-распорядительные документы, нормативные и методические документы и подготовленные проекты документов по технической защите информации.
Информационные технологии развиваются стремительными темпами. Интеграционное взаимодействие между различными системами унифицируется стандартами, а оптимизированный исходный код превращается в набор библиотек и фрэймворков, доступных программисту для реализации своих поставленных задач.
2. Аналитический обзор информационного обмена в организации
2.1 Организация образовательной деятельности
Частное профессиональное образовательное учреждение Вологодский кооперативный колледж является унитарной некоммерческой организацией. В соответствии с реализуемыми основными образовательными программами по типу является профессиональной образовательной организацией.
В своей деятельности колледж руководствуется Федеральным законом от 29 декабря 2012 года № 273-ФЗ «Об образовании в Российской Федерации», Федеральным законом от 12 января 1996 года № 7-ФЗ «О некоммерческих организация», нормативными правовыми актами Российской Федерации, а также локальными нормативными актами колледжа.
Колледж осуществляет образовательную деятельность в соответствии с лицензией, выданной Департаментом образования Вологодской области, на выдачу установленных федеральным органом исполнительной власти документов об образовании и о квалификации на основании свидетельства о аккредитации.
В своей структуре колледж имеет отделения, учебные кабинеты и лаборатории, учебные и учебно-производственные мастерские, структурные подразделения. Структура, порядок формирования, срок полномочий и компетенция органов управления колледжа, порядок принятия ими решений устанавливаются Уставом и локальными нормативными актами. Структура управления колледжем представлена на рисунке 1.
Каждое структурное подразделение осуществляет сбор и контроль информации собственными системами, согласованными с планом работы колледжа.
Рисунок 1 - Структура управления колледжем
В соответствии с требованиями Федеральных государственных стандартов, образовательный процесс осуществляется и с использованием средств вычислительной техники. Для реализации программ подготовки оборудованы компьютерные классы, объединённые в локальную сесть.
В колледже работает Информационно-библиотечный центр с читальным и электронным залом. Работа с библиотечным фондом осуществляется через информационно-библиотечную систему «Ирбис» с электронной книговыдачей.
Сотрудники колледжа, преподавательский состав и прочие работники на своём рабочем месте имеют персональный компьютер, который также имеет доступ к локальной сети и интернет.[11]
Локальная вычислительная сеть организации представляет собой совокупность телекоммуникационного оборудования, серверного оборудования, соединительных линий разных видов. Функциональная схема представлена на рисунке 2.
Рисунок 2 - Функциональная схема ЛВС
2.2 Информационные системы и безопасность
Информационные системы колледжа представляют собой совокупность объектов, информационный обмен между которыми осуществляется посредством использования открытых и закрытых каналов связи внутри локальной сети.
Информационные системы предназначены для обеспечения работоспособности информационной инфраструктуры организации, предоставления сотрудникам структурных подразделений различных видов информационных сервисов, автоматизации финансовой и образовательной деятельности, обеспечения, а также бизнес-процессов на базе информационной инфраструктуры корпоративной сети с использованием специализированных программных приложений и общедоступных информационных сервисов.
К специализированным приложениям относится система бухгалтерского учета «1С Бухгалтерия», система учета и контроля доступа «PERCo», система учета кадрового состава, система обеспечения автоматизации учебного процесса «1С Колледж», а также система электронного документооборота на базе облачных технологий «Nextcloud», система обмена электронной почтой «Zimbra Collaboration Suite».
В организации хранятся и обрабатываются различные виды открытой и служебной конфиденциальной информации.
К конфиденциальной и служебной информации относятся:
- персональные данные сотрудников организации, хранимые в БД и передаваемые по сети;
- персональные данные абитуриентов, студентов и выпускников организации, хранимые в БД и передаваемые по сети;
- сообщения электронной почты и информация БД, содержащие служебные сведения, информацию о деятельности организации и т.п.;
- финансовая документация, бухгалтерская отчетность;
- другие сведения.
Вся прочая информация, не относящаяся к конфиденциальной, является открытой и предоставляется через публичные сервисы.
В информационных система можно выделить несколько основных информационных потоков:
- передача файлов между файловыми серверами и пользовательскими рабочими станциями по протоколу SMB;
- передача бухгалтерской информации, информации обеспечения образовательного процесса между пользовательскими рабочими станциями и сервером БД в рамках автоматизированных систем;
- передача информации для системы контроля и учёта доступа;
- различные виды информационных обменов между информационными системами и сетью интернет.
Персональные данные, обрабатываемые в информационных системах не являются общедоступными и биометрическими и не относятся к специальным категориям персональных данных. Актуальны угрозы, не связаны с наличием недокументированных возможностей в системном и прикладном программном обеспечении, используемом в информационных системах. В таблице 2 приведены информационные системы персональных данных эксплуатируемые учреждением.
Таблица 2 - Перечень информационных систем
№ п/п |
Наименование |
Уровень защищённости |
Персональные данные |
|
1 |
«Абитуриенты» |
4 |
фамилия, имя, отчество, год рождения, месяц рождения, дата рождения, место рождения, адрес, социальное положение, образование |
|
2 |
«Студенты» |
|||
3 |
«Работники» |
фамилия, имя, отчество, год рождения, месяц рождения, дата рождения, место рождения, адрес, семейное положение, социальное положение, образование, профессия, доходы |
В соответствии с порядком определения уровня защищенности, утвержденным Постановлением Правительства Российской Федерации от 01 ноября 2012 года № 1119 «Об утверждении требований к защите персональных данных при их обработке в информационных системах персональных данных», характеристики персональных данных имеют 3-ий тип актуальных угроз и 4-ый уровень защищённости.[12]
В колледже разработаны и утверждены локальные акты в области обработки персональных данных, осуществляется контроль на соответствие требованиям законодательства, выполнены аттестационные мероприятия.
2.3 Анализ движения контингента
Приём граждан на обучение по образовательным программам осуществляется на основании заявления, в котором абитуриент указывает свои персональные данные, направление подготовки и ставит отметку о согласии обработки своих персональных данных.
Данные, указанные в заявлении, обрабатываются в информационной системе персональных данных «Абитуриенты», эксплуатируемая учреждением для внесение сведений в федеральную информационную систему Рособрнадзора. Межсетевое взаимодействие осуществляется с помощью готового решения автоматизации учебного процесса - 1С Колледж.
1С Колледж ПРОФ - это система автоматизации процессов управления организацией, обработки персональных данных, других бизнес-процессов, связанных с учебно-методической, финансовой, образовательной и другими видами деятельности.
После базовой настройки программы администратором, где предлагается настроить интерфейс и заполнить справочники, зарегистрированный пользователь с соответствующей должностной инструкцией ролью осуществляет ввод персональных данных абитуриентов. На рисунке 3 показан интерфейс заполнения анкеты абитуриента.
Рисунок 3 - Анкета абитуриента
На данном этапе формируются списки абитуриентов, конкурсные группы, рейтинги. Формируются отчёты о количественной и качественной составляющей приёмной кампании.
После того, как группы укомплектованы в соответствии с планом набора, осуществляется зачисление абитуриента, т. е. изменение статуса на «студент» путём проведения обработки зачисления.
На рисунке 4 представлена форма приказа о зачислении, где к физическое лицо связывается атрибутами с остальными справочниками системы (группа, рабочий учебный план и т.д.).
Рисунок 4 - Форма приказа о движении контингента
Процесс формирование основных сведений для последующей работы закончен. Полная схема последовательности ввода информации представлена в приложении 1.
На основании введённых данных будет осуществляться автоматизированный обмен с федеральными информационными системами базовыми наборами обработок. Поддержка данного функционала осуществляется фирмой разработчиком. В таблице 3 перечислены атрибуты студена, которые будут использоваться другими подсистемами 1С Колледж. [13]
Таблица 3 - Перечень атрибутов студента
№ п/п |
Имя атрибута |
Пример значения |
|
1 |
Ref_Key |
1e3eff50-01d5-11e9-2a97-00163ee6d0f2 |
|
2 |
Code |
2018000226 |
|
3 |
Description |
Стрежнева Диана Маисовна |
|
4 |
Специальность_Key |
cabb07fb-ad79-11e7-aa41-001bfc2ef811 |
|
5 |
ПрограммаСПО_Key |
a45df71f-ad7d-11e7-aa41-001bfc2ef811 |
|
6 |
Логин |
||
7 |
Пароль |
Решение «PERCo-S-20 Школа» используется в организации в качестве системы контроля и управления доступом. Данная система приставляет собой комплекс оборудования, который состоит из серверной и клиентской составляющей.
Для построения системы безопасности учебного заведения входы и выходы оборудуются электронными проходными PERCo-KT02 - турникетами со встроенными котроллерами и считывателями. Программное обеспечения для управления устанавливается на выделенный компьютер под управлением OS Windows. Идентификация пользователей происходит с помощью бесконтактных карт доступа типа EM-marin. Система также интегрируется и с электромеханическими, электромагнитными замками с помощью внешних контроллеров типа PERCo-CT/L04.2. Схема физической организации системы PERCo представлена на рисунке 5.
Рисунок 5 - Схема физической организации системы PERCo
Программное обеспечение состоит из нескольких модулей:
- Сервер БД - СУБД на базе SQL-сервера Firebird;
- Сервер системы - модуль для работы с сервером БД;
- Консоль управления - модуль с подсистемами управления;
- Другие, в зависимости от уровня интеграции.
Консоль управления выступает в роли клиентской части и подключается к серверу системы по порту TCP/IP 211. В свою очередь сервер системы подключается к серверу БД по порту 3050.
Регистрация пользователей в системе через консоль управления осуществляется в ручном режиме и пакетном. Ручной режим позволяет через графический пользовательский интерфейс выполнять действия CRUD, пакетный - через импорт/экспорт файлов с данными. На рисунке 6 представлен интерфейс программы регистрации пользователя.
Рисунок 6 - Графический пользовательский интерфейс PERCo-S-20 Школа
Функционал системы можно расширить, используя механизм SDK, который позволяет реализовать следующие функциональные возможности:
- предоставление описания сконфигурированных контроллеров системы совместно с их ресурсами, доступными для выполнение команд управления, а также - описание кодов выполнения таких команд;
- выполнение команд управления на ресурсах сконфигурированных контроллеров;
- выполнение команд, обеспечивающих изменение прав доступа индивидуальных идентификаторов (карт доступа) к системе;
- получение информации по каналам индикации и верификации контроллеров системы PERCo-S-20;
- предоставление внешним приложениям программных интерфейсов обмена данными для работы с серверной БД PERCo-S-20 (создание и изменение справочников, формирование отчетов с гибкой настройкой временных параметров).
SDK PERCo-S-20 выполнен в виде внешнего модуля - COM-объекта. Для организации такого обмена используется специальная библиотека. Работа осуществляется по порту обмена данными TCP 211 в формате XML.
Система позволяет управлять сервером напрямую путём непосредственного обращения SQL-запросами. Firebird использует процедурный SQL (PSQL) для выполнения сложных процедур и обработки запросов на стороне сервера.
Zimbra Collaboration - это полнофункциональное решение для обмена сообщениями и совместной работы, которое включает электронную почту, адресную книгу, календарь, задачи и создание веб-документов. Zimbra Collaboration придерживается существующих отраслевых стандартов управления резервным копированием, аутентификацией пользователей. Архитектура Zimbra Collaboration основана на технологиях с открытым исходным кодом и основана на стандартах протоколах. Архитектура состоит из клиентских интерфейсов и серверных компонентов, которые могут работать как конфигурация одного узла или быть развернуты на нескольких серверах для обеспечения высокой доступности и масштабируемости. На рисунке 7 представлена схема сетевых компонентов и протоколов Zimbra.
Рисунок 7 - Схема сетевых компонентов и протоколов Zimbra
Службы каталогов LDAP предоставляют централизованное хранилище для информации о пользователях. Центральным хранилищем, используемым для данных LDAP Zimbra, является сервер каталогов OpenLDAP. На рисунке 8 представлена схема взаимодействия с сервером LDAP.
Рисунок 8 - Взаимодействие модулей Zimbra с LDAP
Регистрация пользователей осуществляется через WEB-интерфейс администратора Zimbra. Генерация логина осуществляется по инициалам.
2.4 Автоматизация межсистемного взаимодействия
Степень автоматизации на предприятии определяется уровнем интеграции информационных систем между собой, функциональными возможностями специализированного программного обеспечения, пропускной способностью среды передачи данных.
В соответствии с законодательством Российской Федерации в сфере образования информационный обмен движения контингента должен осуществляться с федеральными информационными системами. В соответствии с нормами и правилами в сфере защиты информации этот обмен должен выполнятся по специализированным защищённым каналам связи. Защищённость таких каналов определяется организационно-распорядительной документацией, наличием сертифицированных средств защиты и контроля для определённой информационной системы.
Таким образом для передачи данных в ФИС использовался бы специальный терминал с предустановленным программным обеспечением. Данные об абитуриентах в таком случае вводить нужно было дважды.
С развитием отечественных средств защиты информации таких как ViP Net, появилась возможность сетевого взаимодействия с узлами защищённой сети. Данная схема разрешает самим определять на каком оборудовании будет осуществлять обмен, с учётом совместимости программного обеспечения.
Образовательная деятельность является основной в организации, поэтому автоматизация является приоритетной задачей. На рынке информационных услуг активно используются облачные технологии. Выбор средства управления зачастую зависит от программных решений, которые реализуют данную возможность. Система 1С Колледж ПРОФ является профильным решением, решающим задачи, которые стоят перед образовательной организацией среднего профессионального образования. Функционал данной программы подразумевает взаимодействие по различным протоколам обмена, а также его расширение собственными средствами. Квалифицированная техническая поддержка, большая база справочной документации, наличие сообщества разработчиков и пользователей делает этот продукт безальтернативным выбором организации.
В Платформе 1С каждое подключение к типовой конфигурации лицензируется клиентскими программными или аппаратными ключами. Академический статус организации стимулирует приобретение и внедрение данной продукции.
Колледж является партнёром «1С Северо-запад», а также центром сертификации 1С.
В условиях экономических ограничений организации частного типа пытаются оптимизировать финансовые расходы. «Условное» отсутствие ограничений на запуск серверной части под Linux даёт возможность использовать «Open Source» решения взамен Windows. Что в свою очередь задействует неиспользуемые мощности серверного оборудования.
Публикация web-сервисов происходит через WSDL (Web Services Description Language) модуль работы с Apache2. Организация обмена осуществляется с помощью фирменного протокола XDTO (XML Data Transfer Objects), а подключение интерфейса OData даёт возможность управлять данными простыми GET-запросами, получать ответы - в XML или JSON формате.
Разработка будет осуществляться с помощью интерпретированного языка программирования PHP в виду его простоты и распространённости, а также наличия базовых навыков. В проектирование будет использована схема разделения кода «MVC» в объектно-ориентированном стиле. Фронтэнд будет написан на HTML, CSS, JavaScript.
Основным фактором выбора средств разработки является дефицит квалифицированных специалистов на рынке труда, которые смогли бы поддерживать данный проект. Высокая трудовая нагрузка на штатную единицу, совмещение обязанностей и отсутствие стимулирования не даёт в полной мере реализовать данный проект на языках C++, 1С, Phyton, Ruby.
3. Разработка автоматизированной системы
3.1 Конфигурация и настройка системы
Сервер разрабатываемой автоматизированной системы должен находиться в локальной сети организации. В виду ограниченных вычислительных ресурсов организации было принято решение о физическом размещении на внешнем хостинге в логически одной подсети организации.
Характеристики оборудования:
Тип сервера - виртуальная машина;
Операционная система - Ubuntu Server 18.04;
Процессор - Intel(R) Xeon(R) CPU E5-2630 v2 @ 2.60GHz;
Оперативная память - 512Mb;
Жёсткий диск - HDD 15Gb;
Без лимитный интернет.
В качестве веб-сервера выбран Apache2, сервера базы данных - MariaDB
Сервер физически находится на внешнем ресурсе и имеет статический IPv4 адрес. Для соединения с локальной сетью организации был использован VPN тоннель. На шлюзе организации был поднят сервер OpenVPN и настроен по типу tup и порту TCP для надёжного соединения. На внешнем хостинге настроено клиентское соединение. Интерфейс тоннеля был проброшен в созданный контейнер LXD, в котором непосредственно и развёрнута проектируемая система. Сетевой фильтр сервера настроен на проброс внутрь контейнера поров HTTP, SSH. Исходящий трафик проходит через NAT. Таким образом к системе можно подключиться как из локальной сети по внутреннему IP, так и из интернета - по внешнему статическому адресу.
Логическая схема организации сервера показана на рисунке 9.
Рисунок 9 - Логическая организация сети
Публикация данных произведена путём изменения конфигурационных файлов Apache.
<VirtualHost *:80>
ServerName server2.cyber-vologda.ru
ServerAlias student.vkk.edu.ru
ServerAdmin ppv@vkk.edu.ru
DocumentRoot /home/ppv/student/public
<Directory /home/ppv/student/public/>
DirectoryIndex index.php
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Параметрами «ServerName» и «ServerAlias» определены DNS-имена, на которые отвечает веб-сервер. Параметром «Directory» установлена входная точка в веб-приложение.
База данных создана SQL-командами
CREATE DATABASE `student`;
GRANT ALL PRIVILEGES ON `student`.* TO 'student'@'localhost' IDENTIFIED BY 'student18';
FLUSH PRIVILEGES;
3.2 Проектирование базы данных
Для проектирования базы используются выходные данные информационных систем, которые нужно интегрировать. К этой информации добавляются атрибуты которые участвуют во внутренних процессах веб-приложения. В таблице 4 приведён перечень таких данных.
Таблица 4 - Перечень обрабатываемых данных приложением
Наименование |
Внешние |
Внутренние |
|
Уникальный ключ в системе 1С: - Пользователя - Группы - Программы СПО |
v |
||
Уникальный ключ в БД |
v |
||
Фамилия, Имя, Отчество |
v |
||
Год поступления |
v |
||
Литер группы обучения |
v |
||
Логин |
v |
||
Пароль |
v |
||
Статус |
v |
Данные разделяются на логические группы таким образом, чтобы избежать чрезмерной перегрузки SQL-запросами. Для однозначной связи индексных данных используются внешние ключи.
ER-диаграмма проектируемой базы данных показана на рисунке 10.
Рисунок 10 - ER диаграмма базы данных
Листинг SQL-команд создания таблиц приведён в приложении 2.
Листинг всех модулей программы приведён в приложениях 3-22.
3.3 Проектирование серверной части приложения
Организация файловой структуры сайта является одним из этапов разделения данных веб-приложения концепции MVC.
В веб приложении создаётся каталог: моделей, которые содержат основную бизнес-логику приложения; представлений, где храняться формы отображения для клиентской стороны; контроллеров, в котором реализованы интерфейсы взаимодействия с клиентом приложения. На рисунке 11 показано взаимодействие элементов системы.
Рисунок 11 - Взаимодействие элементов системы
При проектировании структуры нужно учитывать также расположение вспомогательных скриптов и модулей.
Общего правила расположения каталогов не существует, однако для логической интерпретации концепции структура сайта будет повторять ключевые узлы элементов взаимодействия. На рисунке 12 показана организация файловой структуры сайта.
Рисунок 12 - Организация файловой структуры
Инструмент маршрутизации в приложении используется для установления соответствия между контроллером и действием, которое будет выполнятся в соответствующих разделах сайта. Параметры маршрута берутся из GET-параметров URL-строки раздела сайта. В таблице 5 перечислены маршруты проектируемой системы.
Таблица 5 - Список маршрутов и соответствующих им методов
Маршрут |
Описание |
Контроллер |
Метод |
|
/ |
Главная страница сайта |
main |
index |
|
std/groups |
Раздел управления группами |
user |
groups |
|
std/students |
Раздел управления пользователями |
user |
students |
|
/settings |
Раздел экспорта данных |
main |
settings |
Для решения поставленных задач и обеспечения базовой функциональности создано два контроллера «user» и «main». Они обеспечивают передачу данных от клиента к серверу приложения, обрабатывая POST или GET-запросы. На рисунке 14 показана UML-диаграмма.
При инициализации приложения конструктором контроллера присваиваются публичным атрибутам базовые свойства. Каждый наследуемый контроллер использует свои переменные в которых хранит текущий путь адреса запроса, модель для обработки данного запроса и представление, шаблон которого служит для отображения ответа клиенту.
Код программы организован согласно рекомендациям PSR. Имена файлов и их расположение позволяет организовать автозагрузку.
Рисунок 13 - UML диаграмма контроллера
Модели сайта выполняют основную функцию реализации бизнес-логики приложения. Программный код модели представлен в виде методов, как публичных, так и приватных, задачами которых является обработка запросов к базам данных и подготовка форматированного ответа. В таблице 6 приведён перечень методов.
Модель «Main» в основном используется для подготовки и экспорта данных в другие системы.
Таблица 6 - Описание методов модуля «User»
Метод |
Описание |
|
returnTrz() |
Обрабатывает прямой запрос к регистру движения методом getAllTrz():InformationRegister_ДвижениеКонтингента, возвращает массив |
|
returnStudents() |
Обрабатывает прямой запрос к справочнику студентов с помощью метода getAllUsers():Catalog_Студенты, возвращает массив объектов Students() |
|
returnGroups() |
Обрабатывает прямой запрос к справочнику групп с помощью метода getAllGroups():Catalog_УчебныеГруппы. Возвращает массив объектов Groups() |
|
getStudents() |
Вызывается непосредственно из контроллера и обрабатывает GET-запросы. Осуществляет взаимодействие с базой данных. Выполняет SELECT, INSERT SQL-запросы. Возвращает массив с форматированными данными студентов. |
|
getGroupsFromDb() |
Приватный метод. Осуществляет обращение к базе данных для определения существования групп. |
|
findUserById(), findSpoById(), findSpecById(), findGroupById() |
Методы единичного поиска информации в базе данных 1С. Реализация этих функций предусматривает использование интерфейса OData. |
После того, когда статут студента однозначно определён, осуществляется процесс регистрации, то есть создание логина и пароля.
Логин состоит из уникального кода студента в системе 1С:<год поступления><порядковый номер>.Например, если значение кода 2018000156, то логин будет выглядеть следующим образом: vkk18156.
Пароль состоит из 8 символов: 6-ти букв и 2-ух цифр. Блок-схема алгоритма представлена на рисунке 14.
Рисунок 14 - Алгоритм генерации пароля
Принцип вывода информации или рендеринг заключается в кэшировании значений переменных инструментами языка программирования. Переменные для шаблона передаются контроллером. Шаблон состоит из HTML кода и вставок PHP-кода.
Правила оформления PSR также подразумевают разработку представлении под каждый метод контроллера.
Проектирование запросов к базе данных в данной работе осуществляется таким образом, чтобы перенести вычислительную нагрузку на уровень ближе к источнику. Для этого используются конструкции:
- INSERT INTO … ON DUPLICATE KEY UPDATE;
- SELECT … AS … FROM … LEFT OUTOR JOIN … AS… ON … JOIN;
- SELECT … FROM … ORDER BY RAND() LIMIT.
Экранирование и защита от SQL-инъекций осуществляется встроенными средствами PHP - PDO драйвером.
3.4 Проектирование клиентской части приложения
Вёрстка сайта осуществлялась с помощью HTML с использованием таблиц стилей CSS. Дизайн сайта разработан с использованием двух колоночного макета с панелью навигации в шапке и панелью управления в правой колонке.
Для сброса CSS используется набор правил Эрика Мэейера.
Подключение JavaScript происходит после загрузки сайта. Использование языка даёт возможность на клиентском уровне перехватывать событья пользовательской активности. В данном случае это смена radio-кнопок и подстановка URL-адреса для обработки POST-запросов.
Заключение
В ходе проделанной работы были изучены материалы базовых теорий и практик программирования. Принципы, на которых строятся различные концепции, были положены в основу данного проекта. Многообразие методов и способов решения поставленной задачи давало возможность более критично взглянуть на предложения сообщества программирования.
При выполнении выпускной квалификационной работы были использованы приёмы, которые широко используются в сфере информационных технологий. Например, построение структуры веб-сайта при использования концепции MVC, правила оформления кода, организация взаимодействия между системами с помощью протоколов обмена. Это всё даёт возможно более эффективно подходить к решению проблем.
Однако, слепое применение подходов мало учитывает интересы не только разработчика, но и заказчика, даже и клиента. Выбор инструмента зависит в большей степени от компетенции программиста, а также и от требований конечного пользователя. В данном случае использование соответствующих технологий обусловлено навыками и умениями, накопленными в результате профессиональной деятельности.
Достижение целей работы и поставленных задач способствовало поиску альтернативных решений и их анализу. Многие производители программных продуктов предлагают свои варианты. В основном они заключаются в разработке приложений на базе собственных продуктов. Наиболее заметной на рынке программного обеспечения является фирма 1С с продукцией «1С Предприятие». Решения на базе типовых конфигураций позволяет профильным предприятиям не пытаться разработать новые алгоритмы, а использовать существующие и их изменять под свои задачи, использую многообразие инструментов. Такой подход предполагает наличие в организации высококвалифицированных специалистов в данной сфере, да ещё и по смежным направлениям.
Другой вариант предполагает использовать готовые библиотеки и протоколы обмена. В этом случае необходимы более широкие знания в изучаемой области. Так, например, проектирование на более низких языках может изменить специализацию разработчика.
Использование популярных языков программирования даёт возможность привлекать к разработке широкий круг лиц, что может увеличить не только скорость, но и качество выполнения работы. Использование фрэймворков позволяет распределять задачи различной сложности и объёма между группами.
Изучение данного теоретического материала позволило разработать и организовать взаимодействие между информационными системами на уровне, требуемом спецификой сферы работы организации. Использование универсальных подходов способствует расширению функциональных возможностей приложения. Оптимизация кода, а затем и рефакторинг может послужить к реализации многопользовательского режима доступа. Организация системы аутентификации расширит область применения на уровне структурных подразделений.
Литература
1. Городняя, Л.В. Парадигмы программирования / М.: НОУ «Интуит», 2016. - с. 178
2. Роберт В Себеста Основные концепции языков программирования / 2001. - с. 672
3. Мэтт Вайсфельд Объектно-ориентированное мышление / СПб.: Питер, 2014 - с. 304
4. Приемы объектно-ориентированного проектирования. Паттерны проектирования. / Гамма Э., Хелм Р., Джонсон Р., Влиссидес Дж. // СПб.: Питер, 2015. - с. 368
5. Джим Арлоу, Айла Нейштадт UML 2 и Унифицированный процесс. Практический объектно-ориентированный анализ и проектирование / 2007. - с. 624
6. Максим Кузнецов, Игорь Симдянов MySQL 5 / БХВ-Петербург, 2010. - с. 1007
7. ORM [Электронный ресурс] // Википедия: сайт - Режим доступа: https://ru.wikipedia.org/wiki/ORM.
8. Дмитрий Котеров, Игорь Симдянов PHP 7 / БХВ-Петербург, 2018. - c. 1088
9. Руководство администратора OpenLDAP [Электронный ресурс] // Про-LDAP.ru: сайт - Режим доступа: https://pro-ldap.ru
10. ГОСТ Р ИСО/МЭК 27001-2006. Информационная технология. Методы и средства обеспечения безопасности. Системы менеджмента информационной безопасности требования. - Введ. 01.02.2008. - Москва: Стандартинформа, 2008. - 31 с.
11. Устав ЧПОУ Вологодский кооперативный колледж: утв. директором ЧПОУ ВКК 24.11.2017
12. Концепция обеспечения информационной безопасности, 2017 / ЧПОУ Вологодский кооперативный колледж
13. 1C Предприятие 8. Конфигурация «Колледж ПРОФ». Руководство пользователя / Москва «1С», 2018
Приложение 1
Рисунок 15
Приложение 2
SQL-запрос создания базы данных
CREATE DATABASE IF NOT EXISTS student;
USE student;
DROP TABLE IF EXISTS `std_1c_group`;
CREATE TABLE `std_1c_group` (
`refkey` varchar(45) NOT NULL,
`spo_refkey` varchar(45) DEFAULT NULL,
`year` varchar(4) DEFAULT NULL,
`liter` varchar(10) DEFAULT NULL,
`name` varchar(45) DEFAULT NULL,
`status` tinyint(1) DEFAULT '0',
PRIMARY KEY (`refkey`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `std_1c_students`;
CREATE TABLE `std_1c_students` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`refkey` varchar(45) NOT NULL,
`group` varchar(45) DEFAULT NULL,
`name` varchar(100) DEFAULT NULL,
`spo` varchar(45) DEFAULT NULL,
`code` varchar(45) DEFAULT NULL,
`status` tinyint(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`,`refkey`)
) ENGINE=InnoDB AUTO_INCREMENT=957 DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `std_passwd`;
CREATE TABLE `std_passwd` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`passwd` varchar(8) NOT NULL,
`status` tinyint(1) NOT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=10002 DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `std_users`;
CREATE TABLE `std_users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`id_std` int(11) DEFAULT NULL,
`id_pwd` int(11) DEFAULT NULL,
`serial` varchar(100) DEFAULT NULL,
`login` varchar(45) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `FK_std_users_1` (`id_std`),
KEY `FK_std_users_2` (`id_pwd`),
CONSTRAINT `FK_std_users_1` FOREIGN KEY (`id_std`) REFERENCES `std_1c_students` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `FK_std_users_2` FOREIGN KEY (`id_pwd`) REFERENCES `std_passwd` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;
Приложение 3
Конфигурация БД и маршрутов
/application/config/db.php
<?php
return [
'mydb' => [
'host' => '127.0.0.1',
'port' => 3306,
'user' => 'student',
'password' => 'student18',
'dbname' => 'student',
],
];
/application/config/routes.php
<?php
return [
'' => [
'controller' => 'main',
'action' => 'index',
],
'std' => [
'controller' => 'user',
'action' => 'index',
],
'std/groups' => [
'controller' => 'user',
'action' => 'groups',
],
'std/users' => [
'controller' => 'user',
'action' => 'users',
],
'std/spo' => [
'controller' => 'user',
'action' => 'spo',
],
'std/groups/all' => [
'controller' => 'user',
'action' => 'all',
],
'std/students' => [
'controller' => 'user',
'action' => 'students',
],
'settings' => [
'controller' => 'main',
'action' => 'settings',
],
];
Приложение 4
Модуль контроллера /application/controllers/MainController.php
<?php
namespace application\controllers;
use application\src\Controller;
class MainController extends Controller {
private $control;
public function indexAction() {
$vars = [
'test' => 2,
];
$this->view->render('Главная', $vars);
}
public function settingsAction() {
if (($_SERVER['QUERY_STRING'] == 'genp')) {
$this->model->genPass();
$this->view->redirect('/settings');
} elseif (($_SERVER['QUERY_STRING'] == 'regp')) {
$this->model->regUser();
$this->view->redirect('/settings');
} elseif (($_SERVER['QUERY_STRING'] == 'zimbra')) {
$this->model->getFileForZimbra();
$this->view->redirect('/settings');
} elseif (($_SERVER['QUERY_STRING'] == 'perco')) {
$this->model->getFileForPerco();
$this->view->redirect('/settings');
} else {
$this->control = [
'input' => [
[
'type' => 'radio',
'value' => 'genp',
'test' => 'Генерация паролей',
],[
'type' => 'radio',
'value' => 'regp',
'test' => 'Регистрация пользователей',
],[
'type' => 'radio',
'value' => 'perco',
'test' => 'Импорт в PERCo',
],[
'type' => 'radio',
'value' => 'zimbra',
'test' => 'Импорт в Zimbra',
],[
'type' => 'submit',
'value' => 'Выполнить',
],],
];
$vars = [
'allPass' => $this->model->getInfoPass('all'),
'usedPass' => $this->model->getInfoPass('used'),
'freePass' => $this->model->getInfoPass('free'),
'allStud' => count($this->model->getAllFromDb(null,'all')),
'actStud' => count($this->model->getAllFromDb(null,'act')),
'regUser' => count($this->model->getAllFromDb(null,'reg')),
];
$this->view->render('Настройка', $vars, $this->control);
}
}
}
Приложение 5
Модуль контроллера /application/controllers/UserController.php
<?php
namespace application\controllers;
use application\src\Controller;
class UserController extends Controller {
private $control;
protected function control() {
$this->control = [
'input' => [
[
'type' => 'radio',
'value' => 'all',
'test' => 'Показать все',
],[
'type' => 'radio',
'value' => 'active',
'test' => 'Показать активные',
],[
'type' => 'radio',
'value' => 'update',
'test' => 'Обновить',
],[
'type' => 'radio',
'value' => 'reset',
'test' => 'Перечитать',
],[
'type' => 'submit',
'value' => 'Выполнить',
],],
];
return $this->control;
}
public function indexAction() {
$data = $this->model->getGroups();
var_dump($data); exit;
}
public function usersAction() {
$vars = [
'users' => $this->model->getAllUsers(),
];
$this->view->render('sd',$vars);
}
public function groupsAction() {
//$user = new User;
//echo $user->getAllUsers();
//foreach ($this->model->getAllUsers() as $key => $value) {
// var_dump($value['Description']);
//}
if ($_SERVER['QUERY_STRING'] == 'update') {
if ($this->model->control($_POST,$_SERVER['QUERY_STRING'])) $this->view->redirect('/std/groups?all');
} elseif ($_SERVER['QUERY_STRING'] == 'reset') {
$vars = [
'groups' => $this->model->getGroups($_SERVER['QUERY_STRING']),
];
$this->view->redirect('/std/groups?all');
}
$vars = [
'groups' => $this->model->getGroups($_SERVER['QUERY_STRING']),
];
$this->view->render('sd',$vars,$this->control());
}
public function spoAction() {
$vars = [
'spo' => $this->model->getAllSpo(),
];
$this->view->render('sd',$vars);
}
public function allAction() {
$vars = [
'groups' => $this->model->getGroups(),
];
$this->view->render('sd',$vars,$this->control());
//$this->view->redirect('/std/groups/all');
/*if ($_POST['groups'] == 1) {
if ($this->model->control($_POST)) $this->view->redirect('/std/groups/all');
else echo 'NO';
}*/
}
public function studentsAction() {
$this->control();
$this->control['input'][3]['value'] = 'updatestatus';
$this->control['input'][3]['test'] = 'Обновить статусы';
if (($_SERVER['QUERY_STRING'] == 'active')) {
$vars = [
'students' => $this->model->getStudents($_SERVER['QUERY_STRING']),
];
$this->view->render('sd',$vars, $this->control);
} elseif (($_SERVER['QUERY_STRING'] == 'update' || $_SERVER['QUERY_STRING'] == 'updatestatus')) {
$vars = [
'students' => $this->model->getStudents($_SERVER['QUERY_STRING']),
];
$this->view->redirect('/std/students?all');
//$this->view->render('sd',$vars, $this->control);
} elseif (($_SERVER['QUERY_STRING'] == 'all')) {
$vars = [
'students' => $this->model->getStudents($_SERVER['QUERY_STRING']),
];
$this->view->render('sd',$vars, $this->control);
} else {
$vars = [
'gstd' => $this->model->getStudents(),
];
$this->view->render('sd',$vars, $this->control);
}
}
}
Приложение 6
Модуль модели /application/models/Main.php
<?php
namespace application\models;
use application\src\Model;
class Main extends Model {
public function genPass() {
$pass_a = ['a','e','o','u'];
$pass_b = ['d','f','m','n','z'];
$pass = [];
for ($i=0;$i<5;$i++) {
for ($j=0;$j<4;$j++) {
for ($k=0;$k<5;$k++) {
for ($l=0;$l<5;$l++) {
for ($m=0;$m<4;$m++) {
for ($n=0;$n<5;$n++) {
$pass[] = $pass_b[$i].$pass_a[$j].$pass_b[$k].$pass_b[$l].$pass_a[$m].$pass_b[$n].rand(10,99);
}
}
}
}
}
}
foreach ($pass as $pwd) {
$sql = "INSERT INTO std_passwd (passwd,status) VALUES ('".$pwd."','0');";
$this->db->insert($sql);
}
}
public function getInfoPass($param = '') {
switch ($param) {
case 'all': {
$sql = "SELECT * FROM std_passwd";
return count($this->db->row($sql));
}
case 'used': {
$sql = "SELECT * FROM std_passwd WHERE status = 1";
return count($this->db->row($sql));
}
case 'free': {
$sql = "SELECT * FROM std_passwd WHERE status = 0";
return count($this->db->row($sql));
}
default: return 'Н/Д';
}
}
public function regUser() {
$sql = "SELECT `std`.`id` AS sid, `std`.`code` FROM student.std_1c_students AS std LEFT OUTER JOIN student.std_users AS usr ON `std`.`id` = `usr`.`id_std` WHERE `std`.`status` = 1 AND `usr`.`id_std` IS NULL AND `usr`.`id_pwd` IS NULL";
$result_u = $this->db->row($sql);
$sql = "SELECT * FROM std_passwd WHERE status = 0 ORDER BY RAND() limit ".count($result_u);
$result_p = $this->db->row($sql);
$i = 0;
foreach ($result_u as $value) {
$login = explode($value['code'][2].$value['code'][3], $value['code']);
$login = 'vkk'.$value['code'][2].$value['code'][3].(int)$login[1];
$params = [
':idstd' => $value['sid'],
':idpwd' => $result_p[$i]['id'],
':login' => $login,
];
$sql = "INSERT INTO std_users (`id_std`,`id_pwd`,`login`) VALUES(:idstd,:idpwd,:login)";
$this->db->insert($sql,$params);
$sql = "UPDATE `student`.`std_passwd` SET `status` = 1 WHERE `id` = ".$result_p[$i]['id'];
$this->db->insert($sql);
$i++;
}
}
public function getFileForZimbra() {
$file = 'zimbra_import_'.date("dmy").'.txt';
$string = [];
$sql = "SELECT `std`.`name`,`usr`.`login`,`pwd`.`passwd` FROM student.std_users AS usr LEFT OUTER JOIN student.std_1c_students AS std ON `usr`.`id_std` = `std`.`id` LEFT OUTER JOIN student.std_passwd AS pwd ON `usr`.`id_pwd` = `pwd`.`id`";
$result = $this->db->row($sql);
foreach ($result as $value) {
$name = explode(" ", $value['name']);
$s_name = mb_substr($name[2],0,1,'UTF-8');
$string[] = "createAccount ".$value['login']."@stud.vkk.edu.ru ".$value['passwd']." givenName '".$name[1]."' initials '".$s_name."' sn '".$name[0]."' displayName '".$name[1]." ".$s_name.". ".$name[0]."'".PHP_EOL;
}
file_put_contents($file, $string);
if (file_exists($file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.basename($file).'"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
readfile($file);
exit;
}
}
public function getFileForPerco() {
$file = 'perco_import_'.date("dmy").'.txt';
$string = [];
$sql = "SELECT `std`.`name` AS s_name ,`grp`.`name` AS g_name FROM student.std_1c_students AS std LEFT OUTER JOIN student.std_1c_group AS grp ON `std`.`group` = `grp`.`refkey` WHERE `std`.`status` = 1";
$result = $this->db->row($sql);
foreach ($result as $value) {
$name = explode(" ", $value['s_name']);
$string[] = $name[0].";".$name[1].";".$name[2].";".$value['g_name'].";".PHP_EOL;
}
file_put_contents($file, $string);
if (file_exists($file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.basename($file).'"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
readfile($file);
exit;
}
}
}
Приложение 7
Модуль модели /application/models/User.php
<?php
namespace application\models;
use application\src\Model;
use application\src\Db;
use application\src\Groups;
use application\src\Students;
class User extends Model {
public function getAllUsers() {
return json_decode(file_get_contents('http://192.168.10.225/base/odata/standard.odata/Catalog_Студенты?$format=json'), true)['value'];
}
public function getAllGroups() {
return json_decode(file_get_contents('http://192.168.10.225/base/odata/standard.odata/Catalog_УчебныеГруппы?$format=json'), true)['value'];
}
public function getAllSpo() {
return json_decode(file_get_contents('http://192.168.10.225/base/odata/standard.odata/Catalog_ПрограммыСПО?$format=json'), true)['value'];
}
public function getAllTrz() {
return json_decode(file_get_contents('http://192.168.10.225/base/odata/standard.odata/InformationRegister_ДвижениеКонтингента?$format=json'), true)['value'];
}
public function findGroupById($id) {
$url = 'http://192.168.10.225/base/odata/standard.odata/Catalog_УчебныеГруппы';
$query_array = array (
'$format' => 'json',
'$filter' => "Ref_Key eq guid'$id'",
);
$query = http_build_query($query_array, null, '&', PHP_QUERY_RFC3986);
$result = $url.'?'.$query;
return json_decode(file_get_contents($result), true)['value'];
}
public function findSpoById($id = null) {
if(!empty($id)) {
$url = 'http://192.168.10.225/base/odata/standard.odata/Catalog_ПрограммыСПО';
$query_array = array (
'$format' => 'json',
'$filter' => "Ref_Key eq guid'$id'",
);
$query = http_build_query($query_array, null, '&', PHP_QUERY_RFC3986);
$result = $url.'?'.$query;
return json_decode(file_get_contents($result), true)['value'];
} else return null;
}
public function findUserById($id) {
$url = 'http://192.168.10.225/base/odata/standard.odata/Catalog_Студенты';
$query_array = array (
'$format' => 'json',
'$filter' => "Ref_Key eq guid'$id'",
);
$query = http_build_query($query_array, null, '&', PHP_QUERY_RFC3986);
$result = $url.'?'.$query;
return json_decode(file_get_contents($result), true)['value'];
}
public function findSpecById($id) {
$url = 'http://192.168.10.225/base/odata/standard.odata/Catalog_Специальности';
$query_array = array (
'$format' => 'json',
'$filter' => "Ref_Key eq guid'$id'",
);
$query = http_build_query($query_array, null, '&', PHP_QUERY_RFC3986);
$result = $url.'?'.$query;
return json_decode(file_get_contents($result), true)['value'];
}
private function returnGroups() {
$grp_1c = $this->getAllGroups();
$groups = [];
if (!empty($grp_1c)) {
foreach ($grp_1c as $value) {
if ($value['ПрограммаСПО_Key'] !== NULL) {
$spec = $this->findSpecById($value['Специальность_Key'])[0];
if ($value['ФормаОбучения'] == 'Заочная') $fo = '-з'; else $fo = '';
$bo = $this->findSpoById($value['ПрограммаСПО_Key'])[0]['БазовоеОбразование'];
if ($bo == 'ОсновноеОбщее') $bo = '-9'; else $bo = '-11';
$name = $value['ГодПоступления'].$fo.'-'.$spec['ПрефиксУчебныхГрупп'].$bo;
$groups[] = new Groups($value['Ref_Key'],$value['ГодПоступления'],$spec['ПрефиксУчебныхГрупп'],$value['ПрограммаСПО_Key'],$name,0);
}
}
}
return $groups;
}
private function returnStudents($status = '') {
$std_1c = $this->getAllUsers();
$students = [];
if (!empty($std_1c)) {
foreach ($std_1c as $value) {
$students[] = new Students($value['Ref_Key'],'',$value['ПрограммаСПО_Key'],$value['Description'],$value['Code']);
}
}
return $students;
}
private function returnTrz() {
$tranzact = [];
$trz = $this->getAllTrz();
foreach ($trz as $value) {
$tranzact[] = $value['RecordSet'];
}
return $tranzact;
}
public function getGroups($get) {
switch ($get) {
case 'all': {
$sql = 'SELECT * FROM std_1c_group ORDER BY year DESC';
break;
}
case 'active': {
$sql = 'SELECT * FROM std_1c_group WHERE status = 1';
break;
}
case 'reset': {
$groups_1c = $this->returnGroups();
$this->control($groups_1c,'reset', true);
}
default: $sql = 'SELECT * FROM std_1c_group ORDER BY year DESC';
}
$groups = [];
$grp_1c = $this->getAllGroups();
$grp_db = $this->db->row($sql);
if (!empty($grp_db)) {
foreach ($grp_db as $value) {
$groups[] = new Groups($value['refkey'],$value['year'],$value['liter'],$value['spo_refkey'],$value['name'],$value['status']);
}
} else {
$groups = $this->returnGroups();
}
return $groups;
}
private function getGroupsFromDb($status,$refkey) {
Подобные документы
Изучение общих понятий теории систем и системного анализа. Методика построения объектных репозиториев открытых информационных систем. Принципы восприятия визуальной информации. Средства визуального моделирования рабочих процессов по интеграции данных.
курсовая работа [195,1 K], добавлен 04.06.2015Понятие CASE-средств как программных средств, которые поддерживают процессы создания и сопровождения информационных систем (ИС). Особенности IDEF-технологии разработки ИС. Описание нотации IDEF0. Разработка функциональных моделей бизнес-процесса.
презентация [399,8 K], добавлен 07.04.2013Методология структурного анализа и проектирования информационных систем. Базовый стандарт процессов жизненного цикла программного обеспечения. Цели и принципы формирования профилей информационных систем. Разработка идеальной модели бизнес-процессов.
презентация [152,1 K], добавлен 07.12.2013Разработка проекта программного комплекса для автоматизации информационных процессов службы сбыта пищевой продукции. Разработка информационной базы данных и характеристика процесса создания клиентской и сервисной части приложения по технологии ASP.NET.
дипломная работа [2,4 M], добавлен 24.06.2011Характеристика объектов автоматизации информационных систем. Требования к документированию. Порядок контроля и приемки системы. Описание потоков данных и бизнес процессов. Структура информационной системы, состав функциональных и обеспечивающих подсистем.
курсовая работа [1,9 M], добавлен 18.09.2013Общее понятие и признаки классификации информационных систем. Типы архитектур построения информационных систем. Основные компоненты и свойства базы данных. Основные отличия файловых систем и систем баз данных. Архитектура клиент-сервер и ее пользователи.
презентация [203,1 K], добавлен 22.01.2016Разработка системы автоматизированного учета АН "Елена". Описание информационного и технического обеспечения предприятия, используемых функциональных возможностей. Выбор комплекса задач автоматизации и характеристика существующих бизнес-процессов.
дипломная работа [3,4 M], добавлен 25.01.2010Анализ показателей оценки эффективности информационных систем и технологий. Расчет трудовых и стоимостных показателей и показателей достоверности информации, разработка программы для ускорения методов обработки данных. Интерфейс и листинг приложения.
дипломная работа [1,2 M], добавлен 14.01.2012Обзор принципов построения и эффективного применения систем управления базами данных, CASE-средств автоматизации проектирования. Анализ возможностей методологии и инструментальных средств. Разработка модели бизнес-процессов гостиницы в среде All Fusion.
курсовая работа [3,3 M], добавлен 28.12.2012Факторы угроз сохранности информации в информационных системах. Требования к защите информационных систем. Классификация схем защиты информационных систем. Анализ сохранности информационных систем. Комплексная защита информации в ЭВМ.
курсовая работа [30,8 K], добавлен 04.12.2003