Компонент Kanban
Компонент пользовательского интерфейса kanban
представляет собой доску Kanban. Доска отображает рабочий процесс на разных этапах проекта, используя карточки для задач и столбцы для каждого этапа.
Основы
Чтобы создать компонент, используйте XML-элемент kanban
и свяжите его с контейнером данных. Для этого можно использовать Jmix Studio.
Новый элемент kanban
будет добавлен как в панель структуры Jmix UI, так и в XML. Вы можете настроить атрибуты, такие как id, height, width и так далее, так же, как это делается для других компонентов UI.
<kanban:kanban id="kanban"
height="100%"
width="100%"/>
Если вы не используете дизайнер экранов, объявите пространство имен kanban
в XML-дескрипторе вашего экрана вручную:
<view xmlns="http://jmix.io/schema/flowui/view"
xmlns:kanban="http://jmix.io/schema/kanban/ui"
title="msg://kanbanView.title">
Затем укажите, какие данные и столбцы вы хотите отобразить:
-
Чтобы отобразить столбцы, добавьте элемент columns с атрибутом
columnsEnum
. -
Чтобы настроить сопоставление полей сущности, используйте элемент propertiesMapping.
В следующем примере показано, как создать базовую доску Kanban:
<data>
<collection id="kanbanTasksDc"
class="com.company.onboarding.entity.KanbanTask">
<loader id="kanbanTasksDl" readOnly="true">
<query>
<![CDATA[select e from KanbanTask e]]>
</query>
</loader>
<fetchPlan extends="_base"/>
</collection>
</data>
<layout>
<kanban:kanban id="kanban" dataContainer="kanbanTasksDc"
width="100%" height="100%">
<kanban:columns>
<kanban:column dataField="todo"
label="msg://kanban.column.todo.label"/>
<kanban:column dataField="in-progress"
label="msg://kanban.column.in_progress.label"/>
<kanban:column dataField="verification"
label="msg://kanban.column.verification.label"/>
<kanban:column dataField="done"
label="msg://kanban.column.done.label"/>
</kanban:columns>
</kanban:kanban>
</layout>
Привязка данных
Привязка данных - это связь визуального компонента с контейнером данных. Kanban может отображать данные, загруженные в контейнер коллекции или контейнер KeyValue.
Контейнер коллекции
Обычно вы связываете kanban
с данными декларативно в XML-дескрипторе с помощью атрибута dataContainer
. Этот атрибут должен ссылаться на контейнер коллекции, который содержит данные, которые вы хотите отобразить. Смотрите соответствующий пример в предыдущем разделе.
Контейнер KeyValue
Также возможно связать kanban
с контейнером KeyValue. Например:
<data>
<keyValueCollection id="keyValueKanbanTasksDc">
<properties idProperty="id">
<property name="id" datatype="uuid"/>
<property name="status" datatype="string"/>
<property name="text" datatype="string"/>
</properties>
<loader>
<query>
<![CDATA[select t.id, t.status, t.text from KanbanTask t]]>
</query>
</loader>
</keyValueCollection>
</data>
<layout>
<kanban:kanban id="kanbanKeyValue"
dataContainer="keyValueKanbanTasksDc"
width="100%" height="100%">
<kanban:columns>
<kanban:column dataField="todo"
label="msg://kanban.column.todo.label"/>
<kanban:column dataField="in-progress"
label="msg://kanban.column.in_progress.label"/>
<kanban:column dataField="verification"
label="msg://kanban.column.verification.label"/>
<kanban:column dataField="done"
label="msg://kanban.column.done.label"/>
</kanban:columns>
</kanban:kanban>
</layout>
Программное связывание
Если вам нужно определить контейнер данных программно, необходимо удалить атрибут dataContainer:
<kanban:kanban id="programmaticallyKanban"
width="100%" height="100%">
<kanban:columns>
<kanban:column dataField="todo"
label="msg://kanban.column.todo.label"/>
<kanban:column dataField="in-progress"
label="msg://kanban.column.in_progress.label"/>
<kanban:column dataField="verification"
label="msg://kanban.column.verification.label"/>
<kanban:column dataField="done"
label="msg://kanban.column.done.label"/>
</kanban:columns>
</kanban:kanban>
После этого в контроллере экрана используйте класс ContainerKanbanItems
, чтобы связать Kanban с контейнером данных:
@ViewComponent
private Kanban<KanbanTask> programmaticallyKanban;
@ViewComponent
private CollectionContainer<KanbanTask> kanbanTasksDc;
@Autowired
private DataManager dataManager;
@Subscribe
public void onInit(InitEvent event) {
programmaticallyKanban.setItems(new ContainerKanbanItems<>(kanbanTasksDc, UUID.class));
}
Сопоставление свойств
Сопоставление свойств позволяет вам определить, как данные из ваших сущностей отображаются на доске Kanban.
-
Сущность Jmix: У вас есть сущность Jmix (например,
KanbanTask
), которая представляет задачу в вашем приложении. Эта сущность имеет различные атрибуты, такие какtitle
,status
,dueDate
и так далее. -
Карточка Kanban: Вы хотите визуально отобразить эти атрибуты задачи на карточке Kanban в вашем приложении Jmix.
-
Сопоставление: Компонент Kanban в Jmix предоставляет механизм для связывания атрибутов сущности с соответствующими полями на карточке Kanban.
Элемент propertiesMapping
определяет сопоставление свойств сущности с набором полей карточки задачи. Карточка задачи, отображаемая на доске Kanban, имеет предопределенный набор полей:
id |
Уникальный идентификатор задачи. Обязателен для отображения. |
---|---|
status |
Статус задачи. Должен соответствовать dataField столбца или подстолбца. Обязателен для отображения. |
text |
Текст задачи. Обязателен для отображения. |
color |
Цвет, используемый для визуального выделения карточки задачи. |
dueDate |
Срок задачи. |
priority |
Приоритет задачи. |
progress |
Прогресс задачи в процентах, число от 0 до 100. |
swimlane |
Определяет полосу задачи, к которой относится задача. Оно должно соответствовать атрибуту dataField полосы задач, если полосы задач настроены. |
tags |
Список тегов, разделенных запятыми. |
userAvatar |
Аватар пользователя, назначенного задаче. |
username |
Имя пользователя, назначенного задаче. |
Декларативное сопоставление
Обычно вы сопоставляете kanban
со свойствами сущности в XML-дескрипторе с помощью элемента propertiesMapping.
Обратите внимание, как задаются значения атрибутов. Значение может быть атрибутом корневой сущности (например, text = "text"
) или атрибутом ее дочерней сущности (например, username = "assignee.username"
) - используйте точечную нотацию для обхода графа объектов.
В следующем примере показан kanban
, который сопоставлен с некоторыми полями его сущности задачи:
<kanban:kanban id="declarativePropertiesMappingKanban" dataContainer="kanbanTasksDc"
width="100%" height="100%"
taskUserAvatarVisible="true">
<kanban:columns>
<kanban:column dataField="todo"
label="msg://kanban.column.todo.label"/>
<kanban:column dataField="in-progress"
label="msg://kanban.column.in_progress.label"/>
<kanban:column dataField="verification"
label="msg://kanban.column.verification.label"/>
<kanban:column dataField="done"
label="msg://kanban.column.done.label"/>
</kanban:columns>
<kanban:propertiesMapping id="id" status="status" text="text"
username="assignee.username"
userAvatar="assignee.picture"/>
</kanban:kanban>
Программное сопоставление
Вы можете определить propertiesMapping
программно. Для этого не указывайте его в XML-разметке kanban
. После этого в контроллере экрана установите его с помощью метода setPropertiesMapping(JmixKanban.PropertiesMapping)
.
<kanban:kanban id="programmaticPropertiesMappingKanban" dataContainer="kanbanTasksDc"
width="100%" height="100%"
taskUserAvatarVisible="true">
<kanban:columns>
<kanban:column dataField="todo"
label="msg://kanban.column.todo.label"/>
<kanban:column dataField="in-progress"
label="msg://kanban.column.in_progress.label"/>
<kanban:column dataField="verification"
label="msg://kanban.column.verification.label"/>
<kanban:column dataField="done"
label="msg://kanban.column.done.label"/>
</kanban:columns>
</kanban:kanban>
@ViewComponent
private Kanban<KanbanTask> programmaticPropertiesMappingKanban;
@Subscribe
public void onInit(InitEvent event) {
JmixKanban.PropertiesMapping propertiesMapping = new JmixKanban.PropertiesMapping("id", "status", "text");
propertiesMapping.setUserAvatar("assignee.picture");
propertiesMapping.setUsername("assignee.username");
programmaticPropertiesMappingKanban.setPropertiesMapping(propertiesMapping);
}
Save Delegate
Существует три способа изменения данных с помощью компонента kanban
:
-
Изменение атрибута, сопоставленного с status, путем перетаскивания карточки задачи Kanban из одного столбца в другой.
-
Изменение атрибута, сопоставленного с swimlane, путем перетаскивания карточки задачи Kanban из одной полосы задач в другую.
-
Изменение атрибута, сопоставленного с priority, путем выбора другого приоритета с помощью соответствующей иконки.
Визуальные компоненты, включая kanban
, хранят временные изменения в контейнере данных до тех пор, пока не будет запущено действие подтверждения для их фиксации в базе данных.
Чтобы автоматически зафиксировать изменения, когда пользователь редактирует задачи, создайте обработчик для saveDelegate и сохраните изменения с помощью DataManager:
<data>
<collection id="kanbanTasksDc"
class="com.company.onboarding.entity.KanbanTask">
<loader id="kanbanTasksDl" readOnly="true">
<query>
<![CDATA[select e from KanbanTask e]]>
</query>
</loader>
<fetchPlan extends="_base"/>
</collection>
</data>
<layout>
<kanban:kanban id="saveDelegateKanban" dataContainer="kanbanTasksDc"
width="100%" height="100%">
<kanban:columns>
<kanban:column dataField="todo"
label="msg://kanban.column.todo.label"/>
<kanban:column dataField="in-progress"
label="msg://kanban.column.in_progress.label"/>
<kanban:column dataField="verification"
label="msg://kanban.column.verification.label"/>
<kanban:column dataField="done"
label="msg://kanban.column.done.label"/>
</kanban:columns>
</kanban:kanban>
</layout>
@Install(to = "saveDelegateKanban", subject = "saveDelegate")
private void kanbanSaveDelegate(final KanbanTask kanbanTask) {
dataManager.save(kanbanTask);
}
Чтобы автоматически сохранять изменения |
Действия
Компонент kanban
реализует интерфейс HasActions
и может содержать как стандартные действия списка, так и пользовательские действия. Действия вызываются щелчком по назначенной кнопке.
В следующем примере показано добавление действий к компоненту:
<hbox id="buttonsPanel" classNames="buttons-panel"> (1)
<button id="createBtn" action="kanbanActions.create"/>
<button id="editBtn" action="kanbanActions.edit"/>
<button id="removeBtn" action="kanbanActions.remove"/>
<button id="infoBtn" action="kanbanActions.getInfo"/>
</hbox>
<kanban:kanban id="kanbanActions" dataContainer="kanbanTasksDc"
width="100%" height="100%">
<kanban:columns>
<kanban:column dataField="todo"
label="msg://kanban.column.todo.label"/>
<kanban:column dataField="in-progress"
label="msg://kanban.column.in_progress.label"/>
<kanban:column dataField="verification"
label="msg://kanban.column.verification.label"/>
<kanban:column dataField="done"
label="msg://kanban.column.done.label"/>
</kanban:columns>
<kanban:actions>
<kanban:action id="create" type="list_create"/> (2)
<kanban:action id="edit" type="list_edit"/>
<kanban:action id="remove" type="list_remove"/>
<kanban:action id="getInfo" text="Get Info" icon="INFO_CIRCLE"/> (3)
</kanban:actions>
</kanban:kanban>
1 | Определите контейнер hbox для отображения кнопок действий над компонентом. |
2 | Определите стандартное действие list_create . Это стандартное действие для создания нового элемента. |
3 | Определите пользовательское действие getInfo . Значение его атрибута text будет использоваться в качестве текста кнопки. |
Чтобы добавить |
Иерархические столбцы
Компонент kanban
поддерживает иерархические столбцы. Подстолбцы имеют те же свойства, что и столбцы верхнего уровня.
Невозможно использовать подстолбцы и полосы задач или columnsEnum одновременно. |
В следующем примере показан kanban
с подстолбцами:
Показать код
<kanban:kanban id="hierarchicalKanban" dataContainer="kanbanTasksDc"
width="100%" height="100%">
<kanban:columns>
<kanban:column dataField="todo"
label="msg://kanban.column.todo.label"/>
<kanban:column dataField="in-progress"
label="msg://kanban.column.in_progress.label">
<kanban:columns>
<kanban:column dataField="started"
label="msg://kanban.column.started.label"/>
<kanban:column dataField="almost-finished"
label="msg://kanban.column.almost_finished.label"/>
</kanban:columns>
</kanban:column>
<kanban:column dataField="verification"
label="msg://kanban.column.verification.label"/>
<kanban:column dataField="done"
label="msg://kanban.column.done.label"/>
</kanban:columns>
</kanban:kanban>
Режим иерархии
Отображение иерархических столбцов возможно в двух режимах:
-
COLUMNS
- подстолбцы представлены как вложенные столбцы. -
TABS
- подстолбцы представлены как текстовые вкладки. В этом случае имеет смысл указать атрибут selected.
Например:
Показать код
<kanban:kanban id="hierarchyModeKanban" dataContainer="kanbanTasksDc"
width="100%" height="100%"
hierarchyMode="TABS">
<kanban:columns>
<kanban:column dataField="todo"
label="msg://kanban.column.todo.label"/>
<kanban:column dataField="in-progress"
label="msg://kanban.column.in_progress.label">
<kanban:columns>
<kanban:column dataField="started" selected="true"
label="msg://kanban.column.started.label"/>
<kanban:column dataField="almost-finished"
label="msg://kanban.column.almost_finished.label"/>
</kanban:columns>
</kanban:column>
<kanban:column dataField="verification"
label="msg://kanban.column.verification.label"/>
<kanban:column dataField="done"
label="msg://kanban.column.done.label"/>
</kanban:columns>
</kanban:kanban>
Положение задачи
Иерархические столбцы могут быть отображены также на конечных уровнях. Существует два варианта для положения задач:
-
ALL
- задачи могут отображаться на всех уровнях иерархии столбцов. -
LEAF
- задачи могут отображаться только на конечном уровне.
Например:
Показать код
<kanban:kanban id="taskPositionKanban" dataContainer="kanbanTasksDc"
width="100%" height="100%"
taskPosition="LEAF">
<kanban:columns>
<kanban:column dataField="todo"
label="msg://kanban.column.todo.label"/>
<kanban:column dataField="in-progress"
label="msg://kanban.column.in_progress.label">
<kanban:columns>
<kanban:column dataField="started" selected="true"
label="msg://kanban.column.started.label"/>
<kanban:column dataField="almost-finished"
label="msg://kanban.column.almost_finished.label"/>
</kanban:columns>
</kanban:column>
<kanban:column dataField="verification"
label="msg://kanban.column.verification.label"/>
<kanban:column dataField="done"
label="msg://kanban.column.done.label"/>
</kanban:columns>
</kanban:kanban>
Рендереры
Компонент kanban
поддерживает настройку отображения карточек. Рендеры можно использовать для настройки отображения заголовка столбца, нижнего колонтитула и текста карточки задачи Kanban.
Рендерер задачи
Рендерер задачи определяется функцией обратного вызова, которую можно использовать для настройки рендеринга задачи. Kanban вызывает ее с двумя аргументами: HTML-элемент задачи и данные задачи.
Например:
Показать код
<kanban:kanban id="taskRendererKanban" dataContainer="kanbanTasksDc"
width="100%" height="100%">
<kanban:columns>
<kanban:column dataField="todo"
label="msg://kanban.column.todo.label"/>
<kanban:column dataField="in-progress"
label="msg://kanban.column.in_progress.label"/>
<kanban:column dataField="verification"
label="msg://kanban.column.verification.label"/>
<kanban:column dataField="done"
label="msg://kanban.column.done.label"/>
</kanban:columns>
<kanban:taskRendererFunction>
<![CDATA[
(task, data) => {
task.style.color = data.text.includes("Create") ? '#0B88DF' : '#182739'
}
]]>
</kanban:taskRendererFunction>
</kanban:kanban>
Рендерер заголовка
Рендерер заголовка определяется функцией обратного вызова, которую можно использовать для настройки рендеринга заголовка столбца. Kanban вызывает ее с тремя аргументами: HTML-элемент заголовка столбца, данные столбца и поле данных столбца.
Например:
Показать код
<kanban:kanban id="headerRendererKanban" dataContainer="kanbanTasksDc"
width="100%" height="100%">
<kanban:columns>
<kanban:column dataField="todo"
label="msg://kanban.column.todo.label"/>
<kanban:column dataField="in-progress"
label="msg://kanban.column.in_progress.label"/>
<kanban:column dataField="verification"
label="msg://kanban.column.verification.label"/>
<kanban:column dataField="done"
label="msg://kanban.column.done.label"/>
</kanban:columns>
<kanban:columnHeaderRendererFunction>
<![CDATA[
(header, data, dataField) => {
let color = '';
switch (data.label) {
case 'Todo': {
color = '#0B88DA';
break;
}
case 'In progress': {
color = '#30C1E3'
break;
}
case 'Verification': {
color = '#3634C8'
break;
}
case 'Done': {
color = '#34C8BA';
break;
}
}
header.style.background = color;
header.style.color = '#FFF';
}
]]>
</kanban:columnHeaderRendererFunction>
</kanban:kanban>
Рендерер нижнего колонтитула
Рендерер нижнего колонтитула определяется функцией обратного вызова, которую можно использовать для настройки рендеринга нижнего колонтитула столбца. Kanban вызывает ее с тремя аргументами: HTML-элемент нижнего колонтитула столбца, данные столбца и поле данных столбца.
Например:
Показать код
<kanban:kanban id="footerRendererKanban" dataContainer="kanbanTasksDc"
width="100%" height="100%"
columnSummaryEnabled="true"
columnFooterVisible="true">
<kanban:columns>
<kanban:column dataField="todo"
label="msg://kanban.column.todo.label"/>
<kanban:column dataField="in-progress"
label="msg://kanban.column.in_progress.label"/>
<kanban:column dataField="verification"
label="msg://kanban.column.verification.label"/>
<kanban:column dataField="done"
label="msg://kanban.column.done.label"/>
</kanban:columns>
<kanban:columnFooterRendererFunction>
<![CDATA[
(footer, data, dataField) => {
footer.style.color = data.label === 'In progress' ? '#0B88DA' : '#3634C8';
}
]]>
</kanban:columnFooterRendererFunction>
</kanban:kanban>
Атрибуты
В Jmix существует множество общих атрибутов, которые выполняют одинаковую функцию для всех компонентов. Ниже приведены атрибуты, специфичные для kanban
:
Вы можете просматривать и редактировать атрибуты, применимые к компоненту, в Jmix Studio с помощью панели инспектора Jmix UI. |
Название |
Описание |
Значение по умолчанию |
---|---|---|
Если установлено значение |
|
|
Если установлено значение |
|
|
Если установлено значение |
|
|
Если установлено значение |
|
|
Если установлено значение |
|
|
Если установлено значение |
|
|
Если установлено значение |
|
|
Если установлено значение |
|
|
Если установлено значение |
|
|
Если установлено значение |
|
|
Устанавливает ширину всех столбцов в пикселях. |
|
|
Если установлено значение |
|
|
Если установлено значение |
|
|
Если установлено значение |
|
|
Указывает режим иерархии для вложенных столбцов со следующими возможными значениями: |
|
|
Устанавливает индекс столбца, с которого начинаются полосы задач. Смотрите раздел Полосы задач. |
|
|
Устанавливает индекс столбца, на котором заканчиваются полосы задач. |
– |
|
Если установлено значение |
|
|
Если установлено значение |
|
|
Указывает положение задачи для столбцов со следующими возможными значениями: |
|
|
Если установлено значение |
|
|
Если установлено значение |
|
|
Если установлено значение |
|
|
Если установлено значение |
|
Обработчики
В Jmix существует множество общих обработчиков, которые конфигурируются одинаково для всех компонентов.
Ниже приведены обработчики, специфичные для kanban
.
Чтобы сгенерировать заглушку обработчика в Jmix Studio, используйте вкладку Handlers панели инспектора Jmix UI, или команду Generate Handler, доступную на верхней панели контроллера экрана и через меню Code → Generate (Alt+Insert / Cmd+N). |
Name |
Description |
---|---|
Событие |
|
Событие |
|
Событие |
|
Событие |
|
Событие |
|
Событие |
|
Событие |
|
Событие |
|
Событие |
|
Событие |
|
Событие |
|
Добавляет функцию делегата сохранения, которая будет использоваться для сохранения данных, которые были обновлены с помощью Kanban. Вызывается, когда карточка задачи перетаскивается по доске и когда приоритет задачи изменяется с помощью соответствующей иконки. Смотрите раздел Save Delegate. |
Элементы Kanban
Элементы внутри kanban
предоставляют широкий набор опций для управления внешним видом, поведением и функциональностью столбцов.
Чтобы добавить элемент к выбранному компоненту, нажмите кнопку Add на панели инспектора Jmix UI. |
Columns
Элемент columns
может определить набор столбцов для отображения, либо явно, либо с помощью перечисления.
XML-элемент |
|
---|---|
Атрибуты |
|
Элементы |
Название |
Описание |
Значение по умолчанию |
---|---|---|
Указывает FQN перечисления, которое будет использоваться в качестве значений столбцов. Значения перечисления будут использоваться в качестве dataField столбца, а его локализованное значение будет использоваться в качестве метки столбца. Вложенные столбцы недоступны в этом варианте определения. Смотрите демонстрацию в режиме реального времени. |
– |
Column
Элемент column
определяет отдельный столбец.
XML-элемент |
|
---|---|
Java-класс |
|
Атрибуты |
dataField - collapsed - collapsible - color - label - orientation - reorder - selected - visible - width |
Элементы |
Название |
Описание |
Значение по умолчанию |
---|---|---|
Устанавливает пользовательский идентификатор для сопоставления этого столбца.
|
– |
|
Если установлено значение |
|
|
Если установлено значение |
|
|
Устанавливает свойство цвета столбца в виде строки CSS. Цвет применяется к заголовку и может также быть применен к карточкам, расположенным в столбце. |
– |
|
Устанавливает текст заголовка столбца. Значение атрибута может быть либо текстом, либо ключом в пакете сообщений. В случае ключа значение должно начинаться с префикса |
– |
|
Указывает ориентацию карточек задач внутри столбца со следующими возможными значениями: |
|
|
Если установлено значение |
|
|
Если установлено значение |
– |
|
Если установлено значение |
|
|
Устанавливает ширину столбца в пикселях. |
– |
Swimlanes
Это функция в стадии разработки. Ее внешний вид, а также детали реализации могут значительно измениться в будущих релизах. |
Элемент swimlanes
может определить набор полос задач для отображения, либо явно, либо с помощью перечисления. Полосы задач - это горизонтальные полосы, которые делят карточки задач на области ответственности. Вложенные столбцы недоступны при использовании полос задач.
XML-элемент |
|
---|---|
Атрибуты |
|
Элементы |
Название |
Описание |
Значение по умолчанию |
---|---|---|
Указывает FQN перечисления, которое будет использоваться в качестве значений полос задач. Значения перечисления будут использоваться в качестве dataField полосы задач, а его локализованное значение будет использоваться в качестве метки полосы задач. |
– |
Swimlane
Элемент swimlane
определяет отдельную полосу задач.
XML-элемент |
|
---|---|
Java-класс |
|
Атрибуты |
Название |
Описание |
Значение по умолчанию |
---|---|---|
Устанавливает пользовательский идентификатор для сопоставления этой полосы задач.
|
– |
|
Устанавливает свойство цвета полосы задач в виде строки CSS. Цвет применяется к горизонтальным полосам полосы задач. |
– |
|
Устанавливает текст заголовка полосы задач. Значение атрибута может быть либо текстом, либо ключом в пакете сообщений. В случае ключа значение должно начинаться с префикса |
– |
PropertiesMapping
Карточки задач Kanban могут отображать определенные поля сущности задачи Kanban. Элемент propertiesMapping
используется для установки сопоставления свойств сущности с полями карточки. Смотрите пример.
XML-элемент |
|
---|---|
Java-класс |
|
Атрибуты |
id - status - test - color - dueDate - priority - progress - swimlane - tags - userAvatar - username - |
Название |
Описание |
Значение по умолчанию |
---|---|---|
Указывает имя атрибута сущности, которое будет сопоставлено со свойством |
|
|
Указывает имя атрибута сущности, которое будет сопоставлено со свойством |
|
|
Указывает имя атрибута сущности, которое будет сопоставлено со свойством |
|
|
Указывает имя атрибута сущности, которое будет сопоставлено со свойством |
– |
|
Указывает имя атрибута сущности, которое будет сопоставлено со свойством |
– |
|
Указывает имя атрибута сущности, которое будет сопоставлено со свойством |
– |
|
Указывает имя атрибута сущности, которое будет сопоставлено со свойством |
– |
|
Указывает имя атрибута сущности, которое будет сопоставлено со свойством |
– |
|
Указывает имя атрибута сущности, которое будет сопоставлено со свойством |
– |
|
Указывает имя атрибута сущности, которое будет сопоставлено со свойством |
– |
|
Указывает имя атрибута сущности, которое будет сопоставлено со свойством |
– |
Смотрите также
Смотрите документацию Kanban для получения дополнительной информации.