Вход/Регистрация
Дефрагментация мозга. Софтостроение изнутри
вернуться

Тарасов Сергей

Шрифт:

Пример модели в Genie Lamp

<Type name ="TEntityId" baseType ="int" />

<Enumeration name ="Granularity">

<Doc><Label lang ="ru">Грануляция учётного периода</Label></Doc>

<Item name ="Day" value ="0">

<Doc><Label lang ="ru">День</Label></Doc>

</Item>

<Item name ="Month" value ="1" default ="true">

<Doc><Label lang ="ru">Месяц</Label></Doc>

</Item>

<Item name ="Year" value ="2">

<Doc><Label lang ="ru">Год</Label></Doc>

</Item>

</Enumeration>

<Entity name ="FiscalYear">

<Doc><Label lang ="ru">Финансовый год</Label></Doc>

<Attribute name ="Id" type ="TEntityId" primaryid ="true" autoincrement ="true" />

<Attribute name ="Name" type ="TCaption" uniqueid ="true">

<Doc><Label lang ="ru">Обозначение года</Label></Doc>

</Attribute>

<Attribute name ="Granularity" type ="Granularity">

<Doc><Label lang ="ru">Грануляция периодов</Label></Doc>

</Attribute>

<Attribute name ="FromDate" type ="date">

<Doc><Label lang ="ru">Дата начала</Label></Doc>

</Attribute>

<Attribute name ="ToDate" type ="date">

<Doc><Label lang ="ru">Дата окончания</Label></Doc>

</Attribute>

<Attribute name ="Closed" type ="boolean" default ="false">

<Doc><Label lang ="ru">Год закрыт?</Label></Doc>

</Attribute>

<Attribute name ="GranularityName" type ="string" persisted ="false">

<Doc>

<Text lang ="ru">Возвращает локализованое название грануляции</Text>

</Doc>

</Attribute>

<Operation name ="CreatePeriods" access ="public">

<Doc>

<Text lang ="ru">

Создает периоды финансового года

между датами начала и окончания

в соответствии с грануляцией. Например, для фин. года,

совпадающего с календарным, и помесячной грануляцией

будут созданы 12 месячных периодов

</Text>

</Doc>

<Returns type ="void"/>

</Operation>

<Operation name ="FindPeriodIdByDate" access ="public">

<Doc>

<Text lang ="ru">

Возвращает ID периода по заданной дате, "0" если не найден

</Text>

</Doc>

<Param name ="periodDate" type ="datetime"/>

<Returns type ="TEntityId"/>

</Operation>

<Operation name ="DeleteCascade" access ="public">

<Returns type ="void"/>

</Operation>

</Entity>

<Entity name ="Period">

<Doc><Label lang ="ru">Учётный период</Label></Doc>

<Attribute name ="Id" type ="TEntityId" primaryid ="true" autoincrement ="true" />

<UniqueId>

<Attribute name ="FiscalYearId" type ="TEntityId">

<Doc><Label lang ="ru">ID финансового года</Label></Doc>

</Attribute>

<Attribute name ="FromDate" type ="date">

<Doc><Label lang ="ru">Дата начала</Label></Doc>

</Attribute>

</UniqueId>

<UniqueId>

<OnAttribute name ="FiscalYearId"/>

<Attribute name ="PeriodNumber" type ="smallint">

<Doc><Label lang ="ru">Номер периода</Label></Doc>

</Attribute>

</UniqueId>

<Attribute name ="ToDate" type ="date">

<Doc><Label lang ="ru">Дата окончания</Label></Doc>

</Attribute>

</Entity>

<Relation entity ="Period" name ="FiscalYear"

entity2 ="FiscalYear" name2 ="Periods"

cardinality ="M:1">

<AttributeMatch attribute ="FiscalYearId" attribute2 ="Id" />

</Relation>

Теперь необходимо задать конфигурацию в описании проекта. Предположим, что мы хотим создать 3-звенное приложение со следующими логическими слоями:

• слои хранения будут развёрнуты на SQL Server или Oracle;

• слой домена под управлением NHibernate;

• слой веб-служб на базе ServiceStack (вместо WCF, имеющего под Mono/Linux ограничения).

Пример конфигурации проекта в Genie Lamp

<! – Включаем файл(ы) модели в проект – >

<ImportModel fileName ="MyModel.xml" />

<! – Будем использовать джинна SQL Server – >

<Genie name ="SqlServer"

type ="GenieLamp.Genies.SqlServer.SqlServerGenie"

assembly ="GenieLamp.Genies.SqlServer"

active ="false"

outDir ="%PROJECT_DIR%/../SQL/SqlServer-%TARGET_VERSION%"

outFileName ="%PROJECT_NAME%.sql"

updateDatabase ="true"

targetVersion ="2008">

<Param name ="Database.Create" value ="false" />

… Другие параметры "заклинания"

</Genie>

<! – Будем использовать джинна Oracle – >

<Genie name ="OracleDb"

type ="GenieLamp.Genies.Oracle.OracleGenie"

assembly ="GenieLamp.Genies.Oracle"

active ="true"

outDir ="%PROJECT_DIR%/../SQL/Oracle-%TARGET_VERSION%"

outFileName ="%PROJECT_NAME%.sql"

outFileEncoding ="iso-8859-1"

updateDatabase ="false"

targetVersion ="10g">

<Param name ="UniqueIndexConstraint" value ="true" />

…

</Genie>

<! – Будем использовать джинна NHibernate для генерации домена – >

<Genie name ="NHibernate"

type ="GenieLamp.Genies.NHibernate.NHibernateGenie"

assembly ="GenieLamp.Genies.NHibernate"

active ="true"

outDir ="%PROJECT_DIR%/../Domain"

outFileName ="%PROJECT_NAME%.Domain.cs"

targetVersion ="*">

<Param name ="TargetAssemblyName" value ="Company.Business.%PROJECT_NAME%.

Domain" />

</Genie>

  • Читать дальше
  • 1
  • ...
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: