Ответ 1
Я думаю, что это будет квалифицироваться как пользовательский интерфейс на основе задач.
Моя команда была "поручена" для создания приложения, которое следует за пользовательским интерфейсом на основе задач (не обязательно с CQRS). Мне очень нравится пользовательский интерфейс, который помогает пользователю легко выполнять общие задачи, но многие части этого приложения действительно "чувствуют" (для меня), как работа для типичного интерфейса CRUD (например: все детали для продукта в каталоге).
На этом этапе нам нужны примеры хороших пользовательских интерфейсов на основе задач, которые помогут нам понять, что возможно. Что вы видели в сетях?
Я думаю, что это будет квалифицироваться как пользовательский интерфейс на основе задач.
Самый простой способ создать пользовательский интерфейс на основе задач - это защитить все атрибуты/свойства ваших моделей. т.е. удалить все сеттеры.
Из этого (псевдокода):
public class TodoTask
{
public Date getDateAssigned();
public void setDateAssigned(Date);
public string getAssignedTo();
public void setAssignedTo(string);
}
:
public class TodoTask
{
public Date getDateAssigned();
public string getAssignedTo();
public void AssignTo(string userId);
}
Вы больше не можете создавать базовое приложение CRUD. Вы должны выполнить задачу (Assign()
), чтобы обновить модель.
Начните с удаления всех сеттеров, а затем проанализируйте, какие действия (задачи) вы должны выполнять в каждой модели.
Тогда вы все настроены.
Я написал об этом в блоге: http://blog.gauffin.org/2012/06/protect-your-data/ (прокрутите вниз, чтобы увидеть макеты для CRUD vs Task based)
Microsoft Money 2000 был примером для Microsoft (хотя они называют его Индуктивным пользовательским интерфейсом). Ниже приведены основные рекомендации и несколько снимков экрана: Microsoft Inductive Руководства по пользовательскому интерфейсу
Думаю, я действительно не думаю о том, что пользовательский интерфейс выглядит как основанный на задачах или основанный на CRUD (хотя пример Дмитрия - это тот, который показывает, что он основан на задачах - множество команд). Я вижу пользовательский интерфейс на основе задач больше с точки зрения того, как он взаимодействует с базовым доменом и моделью данных. Если ваше взаимодействие представляет собой не что иное, как типичное готовое приложение MVC с методами действий для Get/List/Insert/Update/Delete, вы создаете базовое приложение CRUD. Но если вы откажетесь от этих методов действий по умолчанию и создадите действия/команды, которые имеют смысл для приложения (например, добавьте элемент в корзину покупок, деактивируйте класс и т.д.), Тогда это будет больше в мир пользовательского интерфейса на основе задач.
Я думаю, что это довольно серая линия между ними.
Что касается примера, я знаю, что сайт, на котором я работаю (braincredits.com), является моей попыткой пользовательского интерфейса на основе задач. Это определенно работа в процессе, и я вношу в нее изменения, чтобы постоянно ее улучшать, но реализация выполняется на основе команд (например, запись в стенограмму, добавление урока, просмотр транскрипта и т.д.), А в некоторых частях используется шаблон CQRS.
Надеюсь, это поможет! Удачи!