студента Подкопаева Дениса Руслановича ЗАДАНИЕ На курсовую работу студента Подкопаева Дениса Руслановича 1. Тема роботы: «разработка сервиса задачи «Учет результатов флюорографического обследования студентов» ИС медицинского центра» 2. Срок защиты студентом: 29 марта 2016 3. Выходные документы: постановки задачи «Учет результатов флюорографического обследования студентов» ИС медицинского центра, предпроектное исследование. 4. Содержание пояснительной записки: описание главных функций задачи, описание особенностей бизнес-процессов, анализ предметной области, разработка сервисов, описание сервисов, публикация сервисов, описание публикации сервисов, описание хореографии и оркестровки сервисов. 5. Список графического материала: схемы бизнес-процесса, рисунки с изображением схемы задачи «Учет результатов флюорографического обследования студентов», рисунки хореографии и оркестровки сервисов. 6. Дата выдачи задания: 17 февраля 2016 
КАЛЕНДАРНИЙ ПЛАН № з/п | Название этапов | Срок выполнения | Примечание | | Анализ и описание особенностей автоматизируемого бизнес-процесса. | 17.02.2016 | | | Разработка и описание спецификаций сервисов создаваемой сервис-ориентированной ИС. | 2.03.2016 | | | Разработка и описание создаваемого сервиса. | 6.03.2016 | | | Разработка и описание решения с публикации сервиса. | 13.03.2016 | | | Разработка и описание решений по оркестровке сервисов автоматизируемого бизнес-процесса. | 18.03.2016 | | | Разработка и описание решений по хореографии сервисов автоматизируемого бизнес-процесса. | 25.03.2016 | | | Оформление пояснительной записки к курсовой работе. | 27.03.2016 | | | Защита работы | 29.03.2016 | |  Студент ____________ Подкопаев Д.Р. (подпись) Руководитель ______________ Евланов М.В. (подпись) «__» ________________2016г. 
РЕФЕРАТ Пояснительная записка к курсовой работе 29 страниц, 16 рисунков, 2 таблицы, 4 источников. Целью курсовой работы является разработка web-сервиса задачи «Учет результатов флюорографического обследования студентов» ИС медицинского центра» Объектом автоматизации курсовой работы служит флюорографический кабинет информационной системы Медицинский центр. Курсовая работа содержит анализ и описание особенностей автоматизируемого бизнес-процесса в виде IDEF3-диаграмы, которые описывают последовательность работ при выполнении БП и поведение каждого из участников этого БП, схему организационной структуры участников бизнес-процесса, структурную схему компьютерной сети, в рамках которой планируется эксплуатация сервис-ориентированной ИС, разработку и описание спецификаций сервисов создаваемой сервис-ориентированной ИС, разработку и описание создаваемого сервиса, разработку и описание решения с публикации сервиса с WSDL-документом, разработку и описание решений по оркестровке и хореографии сервисов автоматизируемого бизнес-процесса. В рамках разработки СОА был использован язик Java, фреймворк Spring, контроль версий Maven, серверное приложение Tomcat7. СЕРВИС-ОРИЕНТИРОВАННАЯ АРХИТЕКТУРА, JAVA, TOMCAT7, SPRING, ФЛЮОРОГРАФИЧЕСКОЕ ОБСЛЕДОВАНИЕ, УЧЕТ, СТУДЕНТОВ, МЕДИЦИНСКИЙ ОСМОТР 
СОДЕРЖАНИЕ Перечень условных обозначений, символов, единиц, сокращений и терминов | | Введение | | 1 Описание бизнес-процесса | | 2 Описание спецификаций сервисов сервис-ориентированной системы | | 3 Описание результатов разработки сервисов | | 4 Описание результатов публикации сервисов | | 5 Оркестровка и хореография сервисов | | Выводы | | Перечень ссылок | | ПЕРЕЧЕНЬ УСЛОВНЫХ ОБОЗНАЧЕНИЙ, СИМВОЛОВ, ЕДИНИЦ, СОКРАЩЕНИЙ И ТЕРМИНОВ БП – бизнес-процесс; ИУС – информационная управляющая система; CRUD - 4 базовые функции управления данными «создание, считывание, замена и удаление»; IDE - Integrated Development Environment; IDEF3 – Integrated DEFinition for Process Description Capture Method; SOAP – Simple Object Access Protocol; UDDI – Universal Description, Discovery and Integration – классификатор Web-сервисов; WSDL – Web Services Description Language. ВВЕДЕНИЕ Непрерывное развитие сложных информационных систем, увеличение нагрузки, расширение функционала неизбежно приводит к тому, что для решения поставленных задач не хватает технических ресурсов. Для решения этой проблемы приходится масштабировать информационную систему и разделять ее логику на отдельные независимые составляющие. Для решения задачи масштабирования и разделения функционала широко применяется построение систем на основании сервис ориентированной архитектуры. СОА обладает рядом преимуществ в виде возможности расширения функционала с минимальных затрагиванием остальных компонентов, более простой масштабируемости и независимости от расположения выполняемых сервисов. Использование СОА обладает рядом ограничений и применяется для сложных задач, требующих возможности роста. Как правило, это информационные системы с распределённым выполнением бизнес процессов. Пояснительная записка выполнена согласно методическим указаниям[1]. 1 ОПИСАНИЕ БИЗНЕС ПРОЦЕССА Объектом является медицинский центр, проводящий статистический учет исследований пациентов. Медицинский центр располагается в городе Харьков. Медицинский центр имеет в своем штате, в рамках нашей задачи, глав. врача. глав. врача, старшую медсестру, медсестру флюорографического кабинета. Фрагмент схемы организационной структуры медицинского центра представлена .на рисунке 1.1:  Рисунок 1.1 Фрагмент схемы организационной структуры медицинского центра Схема бизнес процесса медицинского центра представлена на рисунке. 1.2  Рисунок 1.2 Диаграмма автоматизации процесса На рисунке 1.3 изображена структурная схема компьютерной сети медицинского центра. Рабочие станции для глав. врача, зам. глав. врача, старшей медсестры, которые соединены с сервером.  Рисунок 1.3 – Схема компьютерной сети ИС медицинского центра Из-за особенностей бизнес-процессов некоторые из них должны выполняться централизованно, некоторые должны выполняться распределено. Централизованно необходимо вести учет медицинских карт пациентов. Если же вести это централизовано запрос будет направляться, лишь в одно место. Это необходимо для проверки своевременного прохождения флюорографического обследования населения, выявления тех людей кто не прошел обследование. Перечень особенностей бизнес-процессов перечисленных выше повлиял на выбор архитектурного решения в пользу сервис ориентированного. В данном случае СОА позволяет безболезненно масштабироваться ИС медицинского центра. Также СОА позволяет разнести выполнение бизнес-процессов, что необходимо для данной задачи. При использовании СОА мы получим такие сервисы: - сервис мед. карт – обработка и учет информации о пациентах; - сервис результатов флюорографического обследования. 2 ОПИСАНИЕ СПЕЦИФИКАЦИЙ СЕРВИСОВ СЕРВИС-ОРИЕНТИРОВАННОЙ СИСТЕМЫ В INTELLIJ IDEA 14.0 создан проект webservices, структура которого представлена на рисунке 2.1 - Пациент (Patient) – бин предметной области; - Patient Publisher – класс, отвечающий за развертывание SOAP-сервера, имеющий main метод – точку входа для JVM; - Patient WebService – интерфейс, определяющий операции SOAP-сервиса; - Patient WebserviceImpl – реализация SOAP-сервиса по интерфейсу.  Рисунок 2.1– Структура проекта webservices Так как создан класс «Пациент» определяющий информацию о пациентах, то класс имеет 6 атрибутов, описание которых представлено в таблице 2.1. Таблица 2.1 – Структурные элементы сервисов Наименование сервиса | Название | Тип данных | Описание | Patient | Id | int | Номер пациента | Name | String | Имя пациента | Age | int | Возраст пациента | Gender | String | Пол пациента | Adress | String | Адрес проживания пациента | Work/study adress | String | Адрес работы/учебного заведения пациента | Result | Date | date | Дата прохождения обследования | Patient | String | Имя пациента | Result | String | Результаты прохождения обследования | Класс Patient – типичный Java bean, по заданной предметной области, который имеет get/set методы для всех атрибутов, а также дополнительный конструктор для удобства инициализации объектов в добавок к конструктору по умолчанию. JAXB (встроенное средство Java) будет проводить преобразования объекта в XML и обратно. Класс Patinet имеет такие методы, как: - get-setID (отвечают за атрибут Id); - get-setName (отвечают за атрибут Name); - get-setGender (отвечают за атрибут gender); - get-setAge (отвечают за атрибут age). Класс Result имеет такие методы, как: - get-setDate (отвечают за атрибут date) - get-setResult (отвечают за атрибут result) Исходный код класса Patient показан на рисунке 2.2 package frstlab; import javax.xml.bind.annotation.XmlRootElement; import java.util.Random; @XmlRootElement public class Patient { private int id; private String name; private int age; private String gender; private String address; private String workplace; public Patient() { id = new Random().nextInt(); name = "Valera"; age = new Random().nextInt(); gender = "male"; address = "address"; workplace = "workplace"; } public Patient(int id, String name, int age, String gender,String address, String workplace) { this.id = id; this.name = name; this.age = age; this.gender = gender; this.address = address; this.workplace = workplace; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public void setWorkplace(String workplace) { Рисунок 2.2 – Листинг Patient.java, лист 1 this.workplace = workplace; } public String getWorkplace() { return workplace; } @Override public String toString() { return "\nPatient{" + "\nid='" + id + '\'' + ",\n name='" + name + '\'' + ",\n gender='" + gender + '\'' + ",\n age=" + age + ",\n address='" + address + '\'' + ",\n workplace='" + workplace + '\'' + '}'; }} Рисунок 2.2 – Листинг Patient.java, лист 2 Интерфейс PatientWS содержит определение методов, которые будет предоставлять SOAP веб-сервис. Исходный код интерфейса представлен на рисунке 2.3 package frstlab; import javax.jws.WebMethod; import javax.jws.WebService; import javax.jws.soap.SOAPBinding; @WebService @SOAPBinding(style = SOAPBinding.Style.RPC) public interface PatientWS { //CREATE @WebMethod boolean createPatient(Patient p); //READ @WebMethod Patient getPatientByName(Patient p); //UPDATE @WebMethod boolean updatePatient(Patient p); } Рисунок 2.3– Листинг PatientWS.java Через приложение SOAP UI создан проект для проверки работоспособности созданного SOAP-веб-сервиса. SOAP UI самостоятельно разобрал WSDL, предоставляемую SOAP publisher-ом и создал готовые методы с SOAP конвертами на каждый из запросов, представленные на рисунке 2.4  Рисунок 2.4 – Методы с SOAP конвертами Базовые операции CRUD (Create, Read, Update, Delete) с использованием SOAP web-сервисов реализуются в сервис-ориентированной системе для задачи учета флюорографического обследования ИС Медицинский центр. Описание операций представлено в таблице 2.2. Таблица 2.2 – Операции, реализованные в сервисах Наименование сервиса | Операция | Описание | Входные данные | Выходные данные | Patient | createPatient | Добавление нового пациента | Name, Age, Gender, Id, address, workplace | true или false | get Patient ByName | Выбирает пациента с указанным именем | Name | Name, Age, Gender, Id, address, workplace | update Patient | Заменяет данные | Name, Age, Gendet, Id, address, workplace | true или false | Result | createResult | Создание записи о прохождении обследования | Date, result | true или false | List<Result> getPatient(String) | Вывод результатов по заданному пациенту | Name | Name, Age, Gender, Id, Address, Workplace Date, Result | Для создания пациента выполнен SOAP-запрос createPatient представленный на рисунке 2.5:  Рисунок 2.5 – Результат выполнения функции createPatient Для получения конкретного вида Equipment выполнен SOAP-метод get PatientByName, указав один из существующих имен «vasya», представленный на рисунке 2.6:  Рисунок 2.6 – Результат выполнения функции get PatientByName Для обновления существующего объекта Patient необходимо заполнить все поля объекта и указать существующий id, который можно найти в ответе сервера на запрос updatePatient.Допустим был выбран объект с id=48, выполнен запрос updatePatient,передав в объект новые атрибуты и тот же id=48, что представлено на рисунке 2.7  Рисунок 2.7 - Результат выполнения функции updatePatient 3 ОПИСАНИЕ РЕЗУЛЬТАТОВ РАЗРАБОТКИ СЕРВИСОВ В рамках курсовой работы были разработаны два сервиса: · Сервис учета мед. карт, выполняемый на центральном сервере, обращение к которому происходит с помощью SOAP. · сервис результатов флюорографического обследования. @Controller public classPatientController { //… @RequestMapping(value = URIPath.GET_CL, method = RequestMethod.GET) public@ResponseBody Patient getPatient(@PathVariable("id") intPatientId) { return PatientData.get(PatientId); } @RequestMapping(value = URIPath.GET_PATIENT_BY_NAME, method = RequestMethod.GET) public@ResponseBody Patient getPatientByName(@PathVariable("name") String name) { Patient Patient = null; for(Patient c:PatientData.values()){ if(c.getName().equals(name)){ Patient = c; break; }} returnPatient; } @RequestMapping(value = URIPath.CREATE_CL, method = RequestMethod.POST) public@ResponseBody Patient createPatient(@RequestBody Patient Patient) { Patient.setCreatedDate(newDate()); PatientData.put(Patient.getId(), Patient); returnPatient; } Рисунок 3.1 Листинг кода контролера сервиса Пациентов | | Листинг контроллера сервиса учета флюорографического обследования пациентов представлен на рис. 3.1: Обратившись к WSDL сервера из браузера, видно, что сервер доступен для работы. Результат выполнения представлен на рисунке 3.2:  Рисунок 3.2 – Результат выполнения Для создания сервис-ориентированной информационной системы был выбран протокол обмена сообщениям SOAP, так как стандарт передачи сообщений через Internet позволяет передавать информацию сетью в формате XML. Могут использоваться любая сеть, любой протокол передачи данных, произвольная информация, различные вычислительные устройства. Спецификация SOAP определяет конверт для передачи сообщений, метод для кодирования программных структур данных в формате XML, а также средства связи про протоколу HTTP. 4 ОПИСАНИЕ РЕЗУЛЬТАТОВ ПУБЛИКАЦИИ СЕРВИСОВ Публикация сервиса происходит на основе WSDL-документа, выполненного в браузере по адресу http://localhost:9999/ws/Patient?wsdl. WSDL – язык описания веб-сервисов и доступа к ним, основанный на языке XML. WSDL расширяем, что позволяет описывать услуги (сервисы) и их сообщения независимо от того, какие форматы сообщений или сетевые протоколы используются для транспорта. WSDL-документ использует шесть базовых элементов для определения веб-сервисов: - <type> – определение типов данных, используемых при обмене сообщениями; - <message> – абстрактное определение данных, которые передаются; - <portType> –набор абстрактных операций, каждая с которых ссылается на входное (input) message и выходные (output) messages; - <binding> – определяет конкретный протокол и формат данных для операций и сообщений, определенных в portType; - <port> – определяет адрес для привязки, таким образом определяя простую точку коммуникации; - <service> – используется объединения набора родственных портов. Сформированный WSDL-документ представлен на рисунке 4.1, а его содержание – на рисунке 4.2. <definitions xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://www.w3.org/ns/ws-policy"xmlns:wsp1_2="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata"xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://frstlab/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/"targetNamespace="http://frstlab/" name="PatientWSImplService"> <types><xsd:schema> <xsd:import namespace="http://frstlab/" schemaLocation="http://localhost:9999/ws/Patient?xsd=1"/> </xsd:schema></types> Рисунок 4.1 – Листинг кода wsdl, лист 1 <message name="createPatient"> <part name="arg0" type="tns:patient"/> </message> <message name="createPatientResponse"> <part name="return" type="xsd:boolean"/> </message> <message name="getPatientByName"> <part name="arg0" type="tns:patient"/> </message> <message name="getPatientByNameResponse"> <part name="return" type="tns:patient"/> </message> <message name="updatePatient"> <part name="arg0" type="tns:patient"/> </message> <message name="updatePatientResponse"> <part name="return" type="xsd:boolean"/> </message> <portType name="PatientWS"> <operation name="createPatient"> <input wsam:Action="http://frstlab/PatientWS/createPatientRequest" message="tns:createPatient"/> <output wsam:Action="http://frstlab/PatientWS/createPatientResponse" message="tns:createPatientResponse"/> </operation> <operation name="getPatientByName"> <input wsam:Action="http://frstlab/PatientWS/getPatientByNameRequest" message="tns:getPatientByName"/> <output wsam:Action="http://frstlab/PatientWS/getPatientByNameResponse" message="tns:getPatientByNameResponse"/> </operation><operation name="updatePatient"> <input wsam:Action="http://frstlab/PatientWS/updatePatientRequest" message="tns:updatePatient"/> <output wsam:Action="http://frstlab/PatientWS/updatePatientResponse" message="tns:updatePatientResponse"/> </operation></portType> <binding name="PatientWSImplPortBinding" type="tns:PatientWS"> <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="rpc"/> <operation name="createPatient"> Рисунок 4.1 – Листинг кода wsdl, лист 2 soap:operation soapAction=""/> <input> <soap:body use="literal" namespace="http://frstlab/"/> </input> <output> <soap:body use="literal" namespace="http://frstlab/"/> </output> </operation> <operation name="getPatientByName"> <soap:operation soapAction=""/> <input> <soap:body use="literal" namespace="http://frstlab/"/> </input> <output> <soap:body use="literal" namespace="http://frstlab/"/> </output> </operation> <operation name="updatePatient"> <soap:operation soapAction=""/> <input> <soap:body use="literal" namespace="http://frstlab/"/> </input> <output> <soap:body use="literal" namespace="http://frstlab/"/> </output> </operation> </binding> <service name="PatientWSImplService"> <port name="PatientWSImplPort" binding="tns:PatientWSImplPortBinding"> <soap:address location="http://localhost:9999/ws/Patient"/> </port> </service> </definitions> Рисунок 4.1 – Листинг кода wsdl, лист 3 На основании этого WSDL файла был сгенерирован клиентский код на Java: Package WSClient; import java.net.MalformedURLException; import java.net.URL; import javax.jws.WebService; import javax.xml.namespace.QName; import javax.xml.ws.Service; import javax.xml.ws.WebEndpoint; import javax.xml.ws.WebServiceClient; import javax.xml.ws.WebServiceException; import javax.xml.ws.WebServiceFeature; /** * This class was generated by the JAX-WS RI. * JAX-WS RI 2.2.4-b01 * Generated source version: 2.2 * */ @WebService(endpointInterface = "WSClient.PatientWS") @WebServiceClient(name = "PatientWSImplService", targetNamespace = "http://frstlab/", wsdlLocation = "file:/C:/dev/FirstLab/src/WSClient/source.wsdl") public class PatientWSImplService extends Service implements PatientWS { private final static URL PATIENTWSIMPLSERVICE_WSDL_LOCATION; private final static WebServiceException PATIENTWSIMPLSERVICE_EXCEPTION; private final static QName PATIENTWSIMPLSERVICE_QNAME = new QName("http://frstlab/", "PatientWSImplService"); static { URL url = null; WebServiceException e = null; try { url = new URL("file:/C:/dev/FirstLab/src/WSClient/source.wsdl"); } catch (MalformedURLException ex) { e = new WebServiceException(ex); } PATIENTWSIMPLSERVICE_WSDL_LOCATION = url; PATIENTWSIMPLSERVICE_EXCEPTION = e; } public PatientWSImplService() { super(__getWsdlLocation(), PATIENTWSIMPLSERVICE_QNAME); } public PatientWSImplService(WebServiceFeature... features) { super(__getWsdlLocation(), PATIENTWSIMPLSERVICE_QNAME, features); } public PatientWSImplService(URL wsdlLocation) { super(wsdlLocation, PATIENTWSIMPLSERVICE_QNAME); } public PatientWSImplService(URL wsdlLocation, WebServiceFeature... features) { super(wsdlLocation, PATIENTWSIMPLSERVICE_QNAME, features); } public PatientWSImplService(URL wsdlLocation, QName serviceName) { super(wsdlLocation, serviceName); } Рисунок 4.2 – Листинг кода java, лист 2 public PatientWSImplService(URL wsdlLocation, QName serviceName, WebServiceFeature... features) { super(wsdlLocation, serviceName, features); } /** * * @return * returns PatientWS */ @WebEndpoint(name = "PatientWSImplPort") public PatientWS getPatientWSImplPort() { return super.getPort(new QName("http://frstlab/", "PatientWSImplPort"), PatientWS.class); } /** * * @param features * A list of {@link javax.xml.ws.WebServiceFeature} to configure on the proxy. Supported features not in the <code>features</code> parameter will have their default values. * @return * returns PatientWS */ @WebEndpoint(name = "PatientWSImplPort") public PatientWS getPatientWSImplPort(WebServiceFeature... features) { return super.getPort(new QName("http://frstlab/", "PatientWSImplPort"), PatientWS.class, features); } private static URL __getWsdlLocation() { if (PATIENTWSIMPLSERVICE_EXCEPTION!= null) { throw PATIENTWSIMPLSERVICE_EXCEPTION; } return PATIENTWSIMPLSERVICE_WSDL_LOCATION; } @Override public boolean createPatient(Patient arg0) { return false; } @Override public Patient getPatientByName(String arg0) { return p; } @Override public boolean updatePatient(Patient arg0) { return false; } } Рисунок 4.2 – Листинг кода java, лист 2 5 ОРКЕСТРОВКА И ХОРЕОГРАФИЯ СЕРВИСОВ Сервис-ориентированная архитектура (SOA) — модульный подход к разработке программного обеспечения, основанный на использовании распределённых, слабо связанных заменяемых компонентов, оснащённых стандартизированными интерфейсами для взаимодействия по стандартизированным протоколам. Термины оркестровка и хореография описывают два аспекта разработки бизнес-процессов на основе объединения Web-сервисов. Оркестровка относится к исполняемому бизнес-процессу, который может взаимодействовать с внешними и внутренними Web-сервисами. Взаимодействия на основе обмена сообщениями включают в себя бизнес-логику и порядок выполнения задач. Они могут выходить за границы приложений и предприятий, определяя многошаговую транзакционную бизнес-модель. Оркестрация и хореография web-сервисов - достаточно продвинутый материал в том плане, что это одновременно аналог load-balancer-а и очереди сообщений, которые применяются на объектно-ориентированной и аспектно-ориентированной архитектурах разработки приложений. 1. Клиенты отправляют SOAP запросы по HTTP протоколу для выполнения CRUD-операций с данными на слой №1, в качестве управляющего элемента ПО может быть браузер, специализированный толстый клиент (SOAP UI). 2. Инфраструктура JAX WS берет на себя относительно низкоуровневые взаимодействия по двухстороннему преобразованию данных из SOAP в объекты. 3. SOAP Запросы уже в виде объектов передаются нашему классу PatientPublisher, который на данный момент делает только то, что производит вещание на нужном хосте и порту и переадресует запросы на нужный сервис, а полученные данные отправляет обратно. 4. Запрос приходит на интерфейс PatientWebservice, что помимо архитектуры слоев, добавляет еще больше гибкости в приложение за счет Inversion of Control (IoC) подхода, интерфейс определяет поведение, у него может быть множество реализаций, которые могут быть подменены как статично на уровне конфигурации, так и в runtime (работе приложения без остановок). 5. Запрос приходит на реализацию интерфейса PatientWebServiceImpl, непосредственно на котором и проходит вся бизнес-логика. 6. Хранилище данных - последний слой в данной диаграмме. Он должен быть полностью инкапсулирован - предоставлять прозрачный интерфейс для потребителей и скрывать всю внутреннюю структуру. Хранилище данных получает запрос и проводит CRUD операцию на своем уровне абстракции: достать объект по id, изменить некоторые данные внутри хранимого объекта, создать новый объект, удалить объект. 7. Извлеченный их хранилища по идентификатору объект Patient проходит весь путь в обратном порядке. На основании сформированного WSDL-документа составляем схему оркестровки и хореографии для сервиса, представленную на рисунке 5.1 и 5.2 соответственно.  Рисунок 5.1 – Оркестровка сервисов  Рисунок 5.2 Схема хореографии ВЫВОДЫ В ходе выполнения курсовой работы разработан web-сервис задачи учета результатов флюорографического обследования студентов» медицинского центра» проведен анализ особенностей автоматизируемого бизнес-процесса; описаны спецификации сервисов создаваемой сервис-ориентированной информационной системы путем применения 4 базовых CRUD операций с использованием SOAP web-сервисов; разработана структура проекта из 4 классов, каждый из которых отвечает за создание SOAP-сервиса; сформировано описание результатов разработки сервиса, что подтверждается правильно созданным WSDL-документом. А также сформирована схема сервис-ориентированной архитектуры SOAP, по которой собственно работает наш созданный сервис и приняты решения по оркестровке и хореографии сервисов, отображающего входы и выходы каждого из методов. Концепция архитектуры Web-cepвиcов предприятия имеет преимущества: -оптимизация процессов управления предприятием за счет упрощения процедур объединения информационных потоков и бизнес-процессов; -возможность создания комплексных сквозных бизнес-процессов, соответствующих требованиям бизнеса, используя для этого как собственные Web-сервисы, так и услуги других компаний; -возможность гибкого изменения и постоянного совершенствования бизнес-процессов предприятий благодаря наличию единой методики поддержки, контроля и обработки информационных изменений, значительно облегчается процедура внесения взаимосвязанных изменений в рамках всей бизнес-архитектуры; -упрощенная интеграция новых функциональных возможностей в корпоративную систему за счет замены одних услуг другими, удаление устаревших и добавления новых с сохранением возможности выбора на рынке других информационных услуг; -возможность совместного использования данных и бизнес-функций - разрозненные ранее системы смогут взаимодействовать друг с другом, предоставляя участникам бизнес-процессов новые возможности сотрудничества. ПЕРЕЧЕНЬ ССЫЛОК 1. Методические указания по организации и защите курсовой работы по дисциплине «Системы с SOA» специальности 6.05010101 «Информационные управляющие системы и технологии» / уклад.: М.В. Евланов, О.С. Гниденко. – Харьков: ХНУРЭ, 2015. – 16 с. 2. Подход к композиции сервис-ориентированных прикладных приспособлений [Электронный ресурс] // режим доступа: http://pidruchniki.com/1912022647748/informatika/pidhid_kompozitsiyi_servis-oriyentovanih_prikladnih_zastosunkiv. - Заголовок с экрана. 3. ГОСТ ИСО/МЭК 15288–2005. Системная инженерия. Процессы жизненного цикла систем. – Введ. 01–01–2007. – М. : Стандартинформ, 2006. – 57 с.2. Сайт ISO/IEC/IEEE 42010 Website [Электронный ресурс] // режим доступа: http://www.iso-architecture.org/ieee-1471/index.html. – Заголовок с экрана. 4. Web Services Description Language (WSDL) 1.1 [Электронный ресурс] // режим доступа: http://www.w3.org/TR/wsdl. - Заголовок с экрана. |