29

我的团队已经“受命”创建一个遵循基于任务的 UI(不一定使用 CQRS)的应用程序。我真的很喜欢一个可以帮助用户轻松完成常见任务的 UI,但是这个应用程序的许多部分真的“感觉”(对我来说)像典型CRUD界面的工作(例如:目录中产品的所有细节)。

此时,我们需要基于任务的良好 UI 示例来帮助我们了解可能的情况。你在互联网上看到了什么?

4

5 回答 5

30

生成基于任务的 UI 的最简单方法是保护模型的所有属性/属性。即删除所有设置器。

从这里(伪代码):

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 与基于任务的模型)

于 2012-09-05T14:25:26.880 回答
27

我认为这将有资格作为基于任务的 UI。Windows 控制面板

于 2012-09-04T12:47:56.207 回答
10

CRUD 接口

CRUD 界面在编辑时有一个“保存”按钮,您会错过某些更改的“原因”。

例如,将客户的地址从“Fountain St. 55”更改为“Birds St.444”与将其从“Fountain St. 55”更改为“Fountain St. 555”具有相同的语义。刚刚“更新”了这条街。

基于任务的接口

基于任务的界面具有“操作按钮”,它们“意味着”某些业务。

例如,您可以有一个“正确地址”按钮来表示您正在更改地址,因为它包含一个拼写错误,并且地址实际上“概念上”是相同的,只是现在它可以正确读取。在这种情况下,客户并没有实际移动。

然后您可以执行另一个不同的操作,例如“将客户移动到新地址”,这意味着客户实际上已经搬到了一个新地方,并且地址更改具有所有这些含义。

所以……简而言之

在 CRUD UI 中 => 您“编辑数据”。

在基于任务的 UI 中 => 您“表明业务发生了”。

结论

第二个总是更强大,虽然更难提前思考,系统必须灵活地添加、承载和传达在业务运营过程中发现的新“意义”。

但是你会得到一个巨大的好处:知道“为什么”事情会发生变异。换句话说……捕捉用户的意图。

于 2020-01-07T23:49:12.720 回答
9

Microsoft Money 2000 是 Microsoft 的一个示例(尽管他们称其为Inductive User Interface。以下是基本指南和沿途的一些屏幕截图:Microsoft Inductive User Interface Guidelines

于 2012-09-04T20:06:21.857 回答
1

我想我并不真正认为 UI 具有基于任务或基于 CRUD 的外观(尽管 Dmitry 的示例确实展示了基于任务的示例——很多命令)。我更多地看到基于任务的 UI 与底层域和数据模型的交互方式。如果您的交互只不过是一个典型的开箱即用 MVC 应用程序,带有 Get/List/Insert/Update/Delete 的操作方法,那么您正在构建一个基本的 CRUD 应用程序。但是,如果您放弃那些默认的操作方法并创建对应用程序有意义的操作/命令(例如,将商品添加到购物车、停用类等),那么这将更多地进入基于任务的 UI 世界。

我确实认为这是两者之间的一条灰色线。

举个例子,我知道我工作的一个网站 (braincredits.com) 是我对基于任务的 UI 的尝试。这绝对是一项正在进行的工作,我正在对其进行更改以不断改进它,但实现是基于命令的(例如发布到成绩单、添加课程、查看成绩单等),并且它的一部分确实使用了 CQRS 模式.

我希望这有帮助!祝你好运!

于 2012-09-04T19:41:10.553 回答