Поиск

Личный кабинет

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

На этом примере можно сделать свои схемы, сделать свою конструкцию в соответствии со своей моделью. 

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

Используется для описания структуры данных, т.е. объектной модели.  

Схема имеет следующие базовые возможности: 

1.Загрузка/сохранение в базу данных

2.Отслеживание изменений данных

3.Простейшая проверка на правильность данных (min, max) 

ШАГИ В СОЗДАНИИ СХЕМЫ          

  1. Запуск BSS
  2. Настройка схемы
  3. Ввод тестовых данных
  4. Мастер запросов, создание запроса на выборку результатов
  5. Вывод отчета на экран               

1. ЗАПУСК BSS

Запускаем BSS, обращаем внимание на рабочий каталог, в котором хранятся схемы и сама система. 

Нажав символ «~», запускаем режим работы с командной строкой. 

2. НАСТРОЙКА СХЕМЫ

ВАЖНЫЕ КОМАНДЫ ДЛЯ ЗАПУСКА 

В командной строке могут запускаться такие команды 

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

Команда для запуска

Настройка модуля

SystemSetup

Настройка системы

SetupModule

Запуск скрипта

RunScript <Script name>

Порядковые номера

RunDict Sequences

Типы запросов

RunDict ViewType

Типы группировок

RunDict GroupViewType

Определение конвертации

RunDict ConvPackage

Пользователи

RunDict Users

Роли

RunDict Role

Регистр настройки

RegEdit

ВАЖНЫЕ ФАЙЛЫ КАТАЛОГА

Обратим внимание на основные файлы настроек, которые хранятся в корневой директории BSI 

  • App.ini - основной файл настроек интегратора
  • Bsi.exe - исполнительный файл программы
  • Errors.log - Log-файл ошибок
  • Log.txt - Log-файл
  • Sys.ini - файл настроек основного модуля BS Integrator
  • System.ini - вспомогательный файл настроек.

ИСХОДНЫЕ ДАННЫЕ  

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

Используется для описания структуры данных, т.е. объектной модели.

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

СОЗДАНИЕ СХЕМЫ 

В каталоге \Schemas\Exch\ создадим новую схему, назовем ее exchange_schema.xml

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

Таблица 1. Биржи  ExchangeMarket

Таблица 2. Эмитенты  Emitent

Таблица 3. Котировки Quote

Таблица 4. Соответствия кодов эмитентов кодам на биржах  EmitentDetail 

ТАБЛИЦЫ В СХЕМЕ 

Напишем заголовок схемы: 

<?xml version="1.0" encoding="UTF-8"?>

<schema> 

Далее создадим первую таблицу   

   <element name="ExchangeMarket" TableName="fc_exchangemarket" PkName="ExchangeMarket_ID" 

Book="ExchangeMarket_ID" ColFormClass="TfrmUniDict" DictFormClass="TfrmUniDict" 

CardFormClass="TfrmDetailsCard" ModuleName="SYS" Title="Биржа"Caption="Биржа

Help="В схеме хранятся данные о биржах"> 

      <element name="ExchangeMarket_ID" type="code" FieldName="ExchangeMarket_ID" 

SchemaClass="TIdentitySchema" Title="КодNotNull="True"

Help="В поле указывается код биржи, присваивается автоматически"/> 

      <element name="Name" type="name" FieldName="Name" NotNull="True"

Help="Указывается название биржи"/> 

      <element name="UpdateData" type="UpdateData"/> 

   </element>  

Три вложенных элемента – это описания полей в таблице.

Также обратим внимание на важные параметры и элементы 

ModuleName="SYS" – модуль схемы, используем SYS для того чтобы схема могла участвовать в запросах

TableName="fc_exchangemarket"связь с таблицей в БД

PkName="ExchangeMarket_IDполе первичного ключа

Title="Биржа" – Заголовок элемента

SchemaClass="TIdentitySchema" – ключевое поле формируется автоматически

NotNull="True" - поле не может быть пустым

<element name="UpdateData" type="UpdateData"/> - автоматически создаются поля CreateID, ChangeID

type="string" size="15" RefBook="Emitent" - тип поля, длина, RefBook – описывает связь с другим элементом схемы

type– может принимать значения типа поля, включая пользовательские. Например type="string" size="250", type="string250"– поля типа String с длинной 250. 

Далее добавляем таблицу эмитентов   

<element name="Emitent" TableName="fc_emitent" PkName="Emitent_ID" Book="Emitent"

ColFormClass="TfrmUniDict"DictFormClass="TfrmUniDict" CardFormClass="TfrmDetailsCard"

ModuleName="SYS" Title="ЭмитентCaption="ЭмитентHelp="Эмитенты"> 

      <element name="Emitent_ID"type="string"size="15"FieldName="Emitent_ID"UnderLabel="True"

Title="КодNotNull="True" Help="Символ эмитента"/> 

      <element name="Name" type="name" FieldName="Name" UnderLabel="True" NotNull="True" 

Help="Указывается название эмитента"/> 

      <element name="UpdateData" type="UpdateData"/> 

   </element> 

Таблицу котировок

   <element name="Quote" TableName="fc_quote" PkName="Code" ColFormClass="TfrmUniDict" 

DictFormClass="TfrmUniDict" CardFormClass="TfrmDetailsCard" 

ModuleName="SYS" Title="Котировки"Caption="КотировкаHelp="Котировки">

      <element name="Code" type="Code" FieldName="ID" SchemaClass="TIdentitySchema" Title="Код

Visible="False" Help="Код/>

      <element name="Emitent_ID" type="string" size="15" RefBook="Emitent" 

FieldName="Emitent_ID" Title="ЭмитентNotNull="True" Help="Символ эмитента/>

      <element name="ExchangeMarket_ID" type="integer" size="0" RefBook="ExchangeMarket" 

FieldName="ExchangeMarket_ID" Title="БиржаNotNull="True" Help="Биржа/>

      <element name="LastPrice" type="money" FieldName="Last_Price" Title="ЦенаNotNull="True" 

Help="Последняя цена/>

      <element name="DateQuote" type="date" FieldName="Date_Quote" Title="Дата Котировки

NotNull="True" Help="Дата котировки/>

      <element name="Volume" type="integer" FieldName="Volume" Title="Количество

NotNull="True" Help="Количество/>

      <element name="UpdateData" type="UpdateData"/>

   </element>

Обратим внимание на параметр RefBook="Emitent", в котором указывается референс, соединение с другой таблицей, в нашем случае это таблицы бирж и эмитентов. 

Далее таблицу деталей эмитентов, в которой сохраняются соответствия кодов эмитентов кодам на биржах  

<element name="EmitentDetail" TableName="fc_emitentdetail"

PkName="DetailID" Book="EmitentDetail" ColFormClass="TfrmUniDict" 

DictFormClass="TfrmUniDict" CardFormClass="TfrmDetailsCard" 

ModuleName="SYS" Title="Детали эмитента" Caption="Детали эмитента" Help="Детали эмитента" >

   <element name="DetailID" type="Code" FieldName="Detail_ID" 

SchemaClass="TIdentitySchema" Title="КодзаписиVisible="False" Help="Код записи/>

   <element name="EmitentID" type="string" size="15" FieldName="Emitent_ID" UnderLabel="True" 

RefBook="Emitent" Title="Код эмитентаNotNull="True" Help="Символ эмитента/>

   <element name="ExchangeMarket_ID" type="integer" size="0" FieldName="ExchangeMarket_ID" 

RefBook="ExchangeMarket" Title="КодNotNull="True" Help="Код биржи/>

   <element name="EmitentExCode" type="string" size="15"

FieldName="Emitent_ExCode" UnderLabel="True"

Title="Обозначение на биржеNotNull="True" Help="Обозначение на бирже"/>

   <element name="UpdateData" type="UpdateData"/>

</element>

Завершаем схему:

</schema> 

 Реляционная структура созданной схемы:  


ИСПОЛЬЗОВАНИЕ СОЗДАННОЙ СХЕМЫ 

Добавим ссылку на новую схему в  ClientFiles.xml

<schema name="ExchangeMarket">Settings\Exchange_schema.xml</schema>

<schema name="Emitent">Settings\Exchange_schema.xml</schema>

<schema name="Quote">Settings\Exchange_schema.xml</schema>

<schema name="EmitentDetail">Settings\Exchange_schema.xml</schema>

RunScript InstallSchema(ExchangeMarket)

RunScript InstallSchema(Emitent)

RunScript InstallSchema(Quote)

RunScript InstallSchema(EmitentDetail

3. ВВОД ТЕСТОВЫХ ДАННЫХ 

Попробуем ввести данные, используя созданную структуру:

RunDict ExchangeMarket

Вводим две биржи – NYSC и LSE 

RunDict Emitent

Ввели два эмитента – ABC Steel и ZYC Houses 

RunDict EmitentDetail

Для каждого из эмитентов вводим его код на каждой из бирж 

RunDict Quote

Вводим котировки  

4. МАСТЕР ЗАПРОСОВ, СОЗДАНИЕ ЗАПРОСА НА ВЫБОРКУ РЕЗУЛЬТАТОВ 

Используя информацию из руководства BSIntegrator.doc, создадим запрос, выводящий на экран котировки

Выберем мастер запросов 

Создадим новый запрос, при создании указываем схему как основание запроса, его название, выбираем нужные нам поля

Одно из наших полей будет вычисляемым

Вычислим значение кода эмитента, уникальное для каждой биржи, используя таблицу EmitentDetail

(SELECT DISTINCT Emitent_ExCode FROM fc_emitentdetail WHERE

fc_emitentdetail.Emitent_ID = ~Emitent_ID~ AND

fc_emitentdetail.ExchangeMarket_ID = ~ExchangeMarket_ID~) 

Создадим условия отбора 

При желании укажем параметры сортировки 

Запустим наш запрос с необходимыми параметрами

5. ВЫВОД ОТЧЕТА НА ЭКРАН 

На скриншоте показа результат работы схемы.

На основе примера мы научились создавать схемы и строить запросы 

Документация