Информационная карта

Доменная сущность Версия: 0.4 draft

Итог оцифровки одной бумажной формы: документы карты со значениями атрибутов, типизированное ядро для поиска, связь с пакетом-первоисточником и отметка о выгрузке в АБИС.

⟨/⟩ Исходник

1. Назначение

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

2. Почему карта — отдельная сущность, а не просто документ

Содержимое карты хранится в документах карты, но карта ими не исчерпывается. У неё есть то, чего у документа как такового быть не может:

Карта при этом не является документом дерева: она стоит над ним и содержит документы, а не наследует их устройство. Собственных атрибутов у неё нет — всё, что пишется на бланке, живёт в документах карты.

Загнать это в атрибуты нельзя: «выгружена ли карта» не может быть строкой в общем хранилище значений наравне с заглавием и годом издания.

3. Ядро

Шифр, инвентарный номер, заглавие, автор, год вынесены в типизированные свойства. Дата в ядро не входит: это собственный реквизит карты, а не проекция значения. Критерий отбора функциональный: в ядро идёт то, по чему Сервис работает сам — ищет карту, строит реестр, отбирает выборку, формирует выгрузку.

Структурный критерий «общее для всех бланков» здесь не работает: у ИК издания одно поле «Заглавие», а у ИК рукописи их три — унифицированное, полное и перевод.

Ядро — проекция, а не второй источник истины. Источник истины — значения атрибутов документов карты; свойства ядра заполняются из них и пересчитываются при правке значений. Какой атрибут даёт какое свойство ядра, задаёт атрибут вида документа.

Чем это оплачено: ядро можно рассинхронизировать со значениями, и ошибка будет тихой — реестр покажет одно, карта будет содержать другое.

4. Инварианты

Свойства

СвойствоТипОписание
IdGuidИдентификатор карты.
DateDateOnlyДата карты: когда экземпляр передан в обработку.
SourcePacketIdGuidПакет ввода, из которого создана карта.
ShelfStringЯдро: шифр хранения.
InventoryNumberStringЯдро: инвентарный номер.
TitleStringЯдро: заглавие документа.
AuthorStringЯдро: автор.
YearNullable<Int32>Ядро: год издания.
CreatedAtDateTimeМомент создания карты.
CreatedByUserIdGuidПользователь, создавший карту.
ExportedAtNullable<DateTime>Момент последней выгрузки в АБИС; null — не выгружалась.
KindDocumentKindВид документа, по которому заполнена карта.
DocumentsIReadOnlyList<CardDocument>Документы карты: содержимое, заполненное по видам.

Связанные артефакты

Документы