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, которые будут отвечать вашим основным требованиям.

Другие вопросы по тегам