我的团队已经“负责”创建一个遵循task-based UI的应用程序(不一定是CQRS)。我非常喜欢帮助用户轻松完成常见任务的UI,但是这个应用程序的许多部分真的“感觉”(对我而言)就像典型的CRUD界面的工作一样(例如:产品的所有细节)目录)。
此时,我们需要基于任务的良好用户界面的示例,以帮助我们了解可能的内容。你在互联网上看到了什么?
答案 0 :(得分:27)
生成基于任务的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与基于任务的模型)
答案 1 :(得分:24)
我认为这可以作为基于任务的用户界面。
答案 2 :(得分:9)
Microsoft Money 2000是微软的一个例子(尽管他们称之为归纳用户界面。以下是基本指南和一些屏幕截图:Microsoft Inductive User Interface Guidelines
答案 3 :(得分:7)
CRUD界面在编辑时有一个“保存”按钮,您错过了某些改变的“原因”。
例如,将客户的地址从“ Fountain St. 55”更改为“ Birds St. 444”与从“ Fountain St. 55”更改为“ Fountain St. 555”具有相同的语义。只是“更新”了街道。
基于任务的界面具有“动作按钮”,可以“代表”业务。
例如,您可能有一个“正确的地址”按钮来表示您正在更改地址,因为它包含一个错字,而实际上“概念上”的地址是相同的,只是现在它可以正确读取。在这种情况下,客户没有实际移动。
然后您可以执行另一个不同的操作,例如“将客户移至新地址”,这意味着客户实际上已移至新地点,而地址更改具有所有含义。
在CRUD UI中=>您“编辑数据”。
在基于任务的UI中=>您“表示发生了业务事情”。
第二个总是更强大,尽管很难事先思考,而且系统必须灵活地添加,携带和传达在业务运营本身中发现的新“含义”。
但是您会获得巨大的好处:知道“为什么”事情会发生变化。换句话说...捕获用户的意图。
答案 4 :(得分:1)
我想我并不认为UI看起来像是基于任务或基于CRUD(虽然Dmitry的例子确实是基于任务的例子 - 许多命令)。我看到基于任务的UI在与底层域和数据模型的交互方式方面更多。如果您的交互仅仅是具有Get / List / Insert / Update / Delete操作方法的典型开箱即用的MVC应用程序,那么您正在构建基本的CRUD应用程序。但是,如果您放弃那些默认操作方法并创建对应用程序有意义的操作/命令(例如,将项目添加到购物车,停用类等),那么这将更多地进入基于任务的UI世界。
我认为这两者之间的界限相当灰暗。
至于一个例子,我知道我工作的网站(braincredits.com)是我尝试基于任务的UI。这绝对是一项正在进行中的工作,我正在对其进行更改以不断改进它,但实现是基于命令的(例如,发布到成绩单,添加课程,查看成绩单等),其中部分内容确实使用CQRS模式
我希望这有帮助!祝你好运!