Alfresco Aikau - создание списка для просмотра
Я работал над учебниками Aikau по Github, но не могу понять, как создать список, который я могу передать в представление. Требуется выбрать все задачи рабочего процесса для всех пользователей и отобразить результаты.
Я добавил следующие виджеты, которые отображают детали одного пользователя (жестко запрограммированы), но мне нужно переключаться между всеми пользователями и отображать все рабочие процессы.
model.jsonModel = {
services: [
"alfresco/services/CrudService"
],
widgets:[
{
name: "alfresco/lists/AlfSortablePaginatedList",
config: {
loadDataPublishTopic: "ALF_CRUD_GET_ALL",
loadDataPublishPayload: {
url: "api/task-instances?authority=abeecher"
},
itemsProperty: "data",
widgets: [
{
name: "alfresco/lists/views/AlfListView",
config: {
additionalCssClasses: "bordered",
widgetsForHeader: [
{
name: "alfresco/lists/views/layouts/HeaderCell",
config: {
label: "Workflow ID",
sortable: true,
sortValue: "id"
}
},
{
name: "alfresco/lists/views/layouts/HeaderCell",
config: {
label: "Description"
}
},
{
name: "alfresco/lists/views/layouts/HeaderCell",
config: {
label: "Status"
}
},
{
name: "alfresco/lists/views/layouts/HeaderCell",
config: {
label: "Due Date",
sortable: true,
sortValue: "properties.bpm_dueDate"
}
},
{
name: "alfresco/lists/views/layouts/HeaderCell",
config: {
label: "Created By"
}
},
{
name: "alfresco/lists/views/layouts/HeaderCell",
config: {
label: "Assigned To",
sortable: true,
sortValue: "owner.firstName"
}
},
{
name: "alfresco/lists/views/layouts/HeaderCell",
config: {
label: "Tag1"
}
},
{
name: "alfresco/lists/views/layouts/HeaderCell",
config: {
label: "Tag2"
}
},
{
name: "alfresco/lists/views/layouts/HeaderCell",
config: {
label: "Tag3"
}
}
],
widgets: [
{
name: "alfresco/lists/views/layouts/Row",
config: {
widgets: [
{
name: "alfresco/lists/views/layouts/Cell",
config: {
additionalCssClasses: "mediumpad",
widgets: [
{
name: "alfresco/renderers/Property",
config: {
propertyToRender: "id",
}
}
]
}
},
{
name: "alfresco/lists/views/layouts/Cell",
config: {
widgets: [
{
name: "alfresco/renderers/Property",
config: {
propertyToRender: "workflowInstance.message",
}
}
]
}
},
{
name: "alfresco/lists/views/layouts/Cell",
config: {
widgets: [
{
name: "alfresco/renderers/Property",
config: {
propertyToRender: "state",
}
}
]
}
},
{
name: "alfresco/lists/views/layouts/Cell",
config: {
widgets: [
{
name: "alfresco/renderers/Property",
config: {
propertyToRender: "properties.bpm_dueDate",
}
}
]
}
},
{
name: "alfresco/lists/views/layouts/Cell",
config: {
widgets: [
{
name: "alfresco/renderers/Property",
config: {
propertyToRender: "workflowInstance.initiator.firstName" ,
}
}
]
}
},
{
name: "alfresco/lists/views/layouts/Cell",
config: {
widgets: [
{
name: "alfresco/renderers/Property",
config: {
propertyToRender: "owner.firstName",
}
}
]
}
},
]
}
}
]
}
}
]
}
}
]
};
Окончательное решение потребует умения сортировать столбцы и иметь возможность щелкнуть по задаче, чтобы увидеть основной рабочий процесс. Как лучше создать первоначальный список на основе этих требований?
Если бы я должен был написать виджет, который создавал список, как мне связать виджет с формой? Это решение для публикации / подписки, поскольку пользователь ничего не нажимает - просто загружает страницу?
Я предполагаю, что мне нужно написать пользовательский webscript, если я использую ключевое слово "url" под опцией loadDataPublishPayload? Если бы я написал webscript, каким было бы последнее утверждение для возврата данных json в форму?
Мне просто нужно несколько советов о том, как лучше двигаться вперед.
1 ответ
На момент написания, используя последнюю выпущенную версию Aikau (1.0.83), это невозможно сделать с помощью готовых виджетов и сервисов.
Основная проблема заключается в том, что нет полного сопоставления между Aikau и средой исполнения форм на основе XML. Этот пост в блоге объясняет проблему под рукой. Это то, над чем мы работаем.
Как только "alfresco/services/FormsRuntimeService" будет завершен, это упражнение будет легче выполнить. Не было бы необходимости писать дополнительные виджеты для списков, потому что существующие виджеты списков отвечают всем требованиям для сортировки / разбиения на страницы (если базовый REST API поддерживает сортировку и разбиение на страницы!).
Я думаю, ваш лучший путь вперед очень зависит от того, насколько быстро потребуется это решение. Мы делаем успехи с FormsRuntimeService, но я не могу сказать, когда он будет полностью готов.
Существующие страницы в Share, на которых показаны задачи и рабочий процесс, использующие среду выполнения Share Forms, основаны на API-интерфейсах, которые возвращают HTML, который жестко задан для работы с виджетами на основе Share YUI2 - возможно, удастся достичь того, чего вы хотите, используя более старые Surf Component / YUI2 виджет подход. Это может быть еще одна область для изучения.
Главное, чтобы выяснить, существуют ли существующие REST API, которые будут отвечать вашим основным требованиям.