№7. Модель сообщения

Тема: Разработка модели сообщения

Время на выполнение: 120 минут

Задание

  1. Разработать модели сообщения (XSD) для следующих сущностей

Клиент

  • ID
  • Фамилия
  • Имя
  • Дата рождения
  • Серия номер паспорта
  • Дата выдачи паспорта
  • Телефоны

 

Продукт

  • ID
  • Название
  • Дата открытия
  • Дата закрытия
  • Тип
    • кредит
    • депозит
  • Тарифная сетка
    • срок
    • тариф
  • Минимальная сумма
  • Максимальная сумма

 

Сделка

  • ID
  • ID клиента
  • ID продукта
  • Тариф
    • срок
    • ставка
  • Сумма
  • Дата начала
  • Дата окончания

 

  1. Разработать модель сообщения (DFDL) для сущности

Платеж

  • ID
  • ID сделки
  • Дата
  • Сумма

 

  1. Протестировать DFDL модель

 Выполнение

XSD

Создайте новую библиотеку:

image002

Назовите библиотеку : LAB.7.LIB

image003
3.
image004

Нажмите New -> Message Model…
image005

В открывшемся окне выберите Other XML
image006

Далее:
image007

Создайте новую директорию: com\sharavara
image008

image009

Введите имя схемы Client.xsd
image010

Созданная схема:
image011

Нажмите в любом месте схемы, чтобы открыть свойства схемы:
image012
12.
image013

Сохраните схему:
image014

Из контекстного меню выберите пункт “Add Element”
image015

Создайте новый элемент Client:
image016

Поменяйте тип данных со string на новый тип:
image017

Введите имя нового комплексного типа: Client
image018

image019

Добавьте атрибут id:
image020
После выполнения действия в редакторе откроются детали типа Client:
image021

Добавим элемент LastName:
image022

image023

Аналогично добавьте следующие элементы:

FirstName
image024

DOB – дата рождения, тип date
image025

Passport – комплексный тип паспорта состоящий из номера и даты выдачи
image026
26.
image027

Новый тип в редакторе:

image028
Добавим элементы к типу PassportType:

  • Number
  • Date

image029
Комплексный тип
image030

Добавим комплексный тип с телефонами:

Поле не обязательное для заполнения
image031

В комплексном типе PhonesType добавим массив телефонов:
image032

image033

Добавим атрибут к типу телефона:
image034

image035

В свойствах тира PhoneType укажите что тип наследуется от типа string
image036

Графическое представление типа:
image037

Полная схема типа Client

Графическое представление:
image038

Текстовое:

<?xml version="1.0" encoding="UTF-8"?><xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://sharavara.com" xmlns:Q1="http://sharavara.com">
   <xsd:element name="Client" type="Q1:Client"></xsd:element>

   <xsd:complexType name="Client">
                       <xsd:sequence>
                                <xsd:element name="LastName" type="xsd:string"></xsd:element>
                                <xsd:element name="FirstName" type="xsd:string"></xsd:element>
                                <xsd:element name="DOB" type="xsd:date"></xsd:element>
                                <xsd:element name="Passport" type="Q1:PassportType"></xsd:element>
                                <xsd:element name="Phones" type="Q1:PhonesType" minOccurs="0" maxOccurs="1"></xsd:element>
                       </xsd:sequence>
                       <xsd:attribute name="id" type="xsd:string"></xsd:attribute>
   </xsd:complexType>

   <xsd:complexType name="PassportType">
                       <xsd:sequence>
                                <xsd:element name="Number" type="xsd:string"></xsd:element>
                                <xsd:element name="Date" type="xsd:date"></xsd:element>
                       </xsd:sequence>
   </xsd:complexType>

   <xsd:complexType name="PhonesType">
                       <xsd:sequence>
                                <xsd:element name="Phone" type="Q1:PhoneType" minOccurs="0" maxOccurs="unbounded"></xsd:element>
                      </xsd:sequence>
   </xsd:complexType>

   <xsd:complexType name="PhoneType">
                       <xsd:simpleContent>
                                <xsd:extension base="xsd:string">
                                          <xsd:attribute name="type" type="xsd:string"></xsd:attribute>
                                </xsd:extension>
                       </xsd:simpleContent>
   </xsd:complexType>
</xsd:schema>

Создайте схему Product.xsd
image039

Перейдите на вкладку Source
image040

Замените описание схемы на ниже следующий текст:

<?xml version="1.0" encoding="UTF-8"?><xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://sharavara.com" xmlns:Q1="http://sharavara.com">
  <xsd:element name="Product" type="Q1:ProductType"></xsd:element>
 
 <xsd:complexType name="ProductType">
        <xsd:sequence>
                 <xsd:element name="Name" type="xsd:string"></xsd:element>
                 <xsd:element name="BeginDate" type="xsd:date"></xsd:element>
                 <xsd:element name="EndDate" type="xsd:date"></xsd:element>
                 <xsd:element name="Type">
                          <xsd:simpleType>
                                    <xsd:restriction base="xsd:string">
                                              <xsd:enumeration value="credit"></xsd:enumeration>
                                              <xsd:enumeration value="deposit"></xsd:enumeration>
                                    </xsd:restriction>
                          </xsd:simpleType>
                 </xsd:element>
                 <xsd:element name="SOC" type="Q1:SOCType"></xsd:element>
                 <xsd:element name="MinSum" type="xsd:long"></xsd:element>
                 <xsd:element name="MaxSum" type="xsd:long"></xsd:element>
        </xsd:sequence>
        <xsd:attribute name="id" type="xsd:string"></xsd:attribute>
 </xsd:complexType>

 <xsd:complexType name="TariffType">
       <xsd:sequence>
                <xsd:element name="Period" type="xsd:int"></xsd:element>
                <xsd:element name="Rate" type="xsd:decimal"></xsd:element>
       </xsd:sequence>
 </xsd:complexType>

 <xsd:complexType name="SOCType">
       <xsd:sequence>
             <xsd:element name="Tariff" type="Q1:TariffType" minOccurs="1" maxOccurs="unbounded"></xsd:element>
       </xsd:sequence>
 </xsd:complexType>
</xsd:schema>

Сохраните схему. Перейдите на вкладку Design, должна получится следующая модель:
image041

Аналогично создайте схему Deal.xsd

<?xml version="1.0" encoding="UTF-8"?><xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://sharavara.com" xmlns:Q1="http://sharavara.com">
   <xsd:element name="Deal" type="Q1:DealType"></xsd:element>

   <xsd:complexType name="DealType">
        <xsd:sequence>
                <xsd:element name="ClientId" type="xsd:string"></xsd:element>
                <xsd:element name="ProdId" type="xsd:string"></xsd:element>
                <xsd:element name="Term" type="xsd:int"></xsd:element>
                <xsd:element name="Rate" type="xsd:decimal"></xsd:element>
                <xsd:element name="Amount" type="xsd:string"></xsd:element>
                <xsd:element name="BeginDate" type="xsd:date"></xsd:element>
                <xsd:element name="EndDate" type="xsd:date"></xsd:element>
         </xsd:sequence>
         <xsd:attribute name="id" type="xsd:string"></xsd:attribute>
  </xsd:complexType>
</xsd:schema>

image042

DFDL

Создайте новую схему с типом CSV text:
image043

Далее
image044

Далее:
image045

В следующем окне мастера укажите такие параметры:
image046

Нажмите Finish.

Созданная схема:
image047

Поменяйте имена полей и их типы как указано на рисунке:
image048

Сохраните схему.

Тестирование схемы

Создайте текстовый файл :
image049

image050

Содержание файла (обратите внимание на перевод строки):

1,1,2014-01-10,150000
2,1,2014-02-09,150000
3,2,2014-01-02,300000
4,3,2014-01-03,50000

image051

Сохраните файл.

Перейдите в DFDL редактор.

Чтобы протестировать созданную схему, нажмите на кнопку «Test Parse Model»

image052

В окне укажите ранее созданный файл:
image053

Перейдите в перспективу тестирования DFDL схемы:
image054

 

После перехода парсер автоматически разберет файл и предоставить следующий результат:
image055

Comments are closed.