СЭД «ДЕЛО»
Руководство пользователя
×

3.1 Модель данных, используемая в API фоновых задач

Модель данных строится на следующих понятиях:
Атрибут – обычно соответствует полю таблицы БД. Атрибут может быть одного из следующих типов:
-                     Строка
-                     Целое число
-                     Дата (и время)
-                     Дробное (десятичное) число
-                     Перечисление
-                     Коллекция сущностей
-                     Ссылка на сущность
Сущность – соответствует строке таблицы БД. Все сущности имеют общего предка – т.е. наследуются от базового класса EntityBase. Сущности, представляющие справочники, наследуются от класса ClassifEntity или от ClassifTreeEntity[1].
Коллекция сущностей – объединяет множество сущностей одного типа. Тип сущностей, находящихся в коллекции, может быть абстрактным. Соответствует набору строк таблицы.
Ссылка на сущность – представляет идентификатор сущности. Каждый класс сущности имеет соответствующий ему класс ссылки на эту сущность. Классы ссылок на сущности образуют иерархию наследования, аналогичную иерархии классов сущностей. В вершине иерархии наследования находится абстрактный класс EntityBaseRef.
Объект системы – представляет иерархическую структуру из сущностей с единственной сущностью в корне структуры – корневой сущностью объекта. Корневая сущность объекта может иметь атрибуты типа "Коллекция сущностей", в которых хранятся дочерние сущности объекта, которые, в свою очередь, также могут иметь свои дочерние сущности. Объект системы является единицей загрузки данных из БД.
Классы модели данных системы «ДЕЛО» определены в сборке Eos.Delo96.Api, а базовые классы в сборке Eos.Delo.Common.
Рассмотрим описанные понятия на примере некоторых сущностей системы (пропущенные части кода обозначены многоточием).
 
namespace Eos.Delo96.Api.Entities
{
  [Serializable]
  public class DOC_RC_Ref : Eos.Delo.Common.EntityBaseRef
  {
    public DOC_RC_Ref(int ISN_DOC) { ... }
    public int ISN_DOC { get { ... } }
  }
  [Serializable]
  public class DOC_RC_Entity : Eos.Delo.Common.EntityBase
  {
    ...
    public int ISN_DOC { get { ... } }
    public KIND_DOC KIND_DOC { get { ... } }
    public String DUE_DOCGROUP { get { ... } }
    public DateTime DOC_DATE { get { ... } }
    public String FREE_NUM { get { ... } }
    ...
    public List<AR_RC_VALUE_Entity> AR_RC_VALUE_List { get { ... } }
    public List<DOC_WHO_Entity> DOC_WHO_List { get { ... } }
    public List<DOC_SIGN_Entity> DOC_SIGN_List { get { ... } }
    public List<FORWARD_Entity> FORWARD_List { get { ... } }
    public List<JOURNAL_Entity> JOURNAL_List { get { ... } }
    public List<REF_ACCESS_CARD_Entity> REF_ACCESS_CARD_List { get { ... } }
    ...
  }
  [Serializable]
  public class FORWARD_Ref : Eos.Delo.Common.EntityBaseRef
  {
    public FORWARD_Ref(int ISN_FORWARD) { ... }
    public int ISN_FORWARD { get { ... } }
  }
  [Serializable]
  public class FORWARD_Entity : Eos.Delo.Common.EntityBase
  {
    ...
    public int ISN_FORWARD { get { ... } }
    public int? ISN_DOC { get { ... } }
    ...
    public String DUE_ADRESAT { get { ... } }
  }
  [Serializable]
  public class SECURITY_CL_Ref : Eos.Delo.Common.EntityBaseRef
  {
    public SECURITY_CL_Ref(int SECURLEVEL) { ... }
    public int SECURLEVEL { get { ... } }
  }
  [Serializable]
  public class SECURITY_CL_Entity : ClassifEntity
  {
    ...
    public override int ISN_LCLASSIF { get { ... } }
    public override string CLASSIF_NAME { get { ... } }
    public int SECURLEVEL { get { ... } }
    public String GRIF_NAME { get { ... } }
    ...
  }
}
Класс DOC_RC_Entity является сущностью, соответствующей таблице DOC_RC. Атрибутами этого объекта являются, например, свойства DOC_DATE и FREE_NUM – соответствующие полям таблицы DOC_RC. Сущность DOC_RC_Entity является головной сущностью агрегатного объекта "РК документа". Объект является агрегатным, т.к. сущность имеет дочерние сущности, хранящиеся в атрибутах типа "Коллекция сущностей", таких как DOC_SIGN_List, FORWARD_List, и прочие.
Класс DOC_RC_Ref – это ссылка на сущность, в данном случае ссылка имеет единственный атрибут – ISN_DOC, что соответствует первичному ключу таблицы DOC_RC.
Класс FORWARD_Entity является дочерней сущностью "Журнал пересылки документа", входящей в состав агрегатного объекта "РК документа". Эта сущность, соответствует таблице FORWARD.
Класс SECURITY_CL_Entity сущность, соответствующая таблице SECURITY_CL. Эта сущность является простым объектом "Гриф доступа", т.к. не имеет в своем составе списков дочерних сущностей. В отличие от сущностей, рассмотренных ранее, данная сущность наследуется от класса ClassifEntity, и имеет в своем составе атрибуты, общие для всех справочников системы, такие как ISN_LCLASSIF и CLASSIF_NAME[2].
Полный перечень определенных в API сущностей системы и их связей приведен в Приложение Г, Приложение Д.
Схема базы данных включена в состав дистрибутива системы и расположена в каталоге \SDK\PDM, файл “Odelo.pdm”. Для открытия файла можно воспользоваться программой Sybase PowerDesigner Viewer.
Онлайн помощь создана в Dr.Explain