Mylyn 2.0,第 1 部分: 集成的任务管理

虽然软件系统、框架和工具可以无限制地发展,但开发人员实际处理信息的能力具有一个上限。大多数集成开发环境(IDE)尝试使用结构化视图、编辑器和高级搜索功能来解决这个限制。这些机制虽然可以使大型系统的导航变得更容易,但是它们常常不足以帮助您管理完成典型编程任务所必须处理的大量信息。因此,结构化视图越来越不堪负荷 —— 例如,即使在导航一个小型的企业应用程序时,Eclipse Package Explorer 也常常会显示数千个源文件 —— 您要浪费大量的时间来滚动、导航和跟踪这些信息。

有趣的是,在大多数情况下,不需要查看系统的整个层次结构或者某个特定方法的每个引用就可以完成编程任务。例如,对于要修复的任何 bug 或者要添加的任何特性,您只对系统的某一部分感兴趣。Mylyn 是一种交互技术,通过将 集成的任务管理自动上下文管理这两个功能添加到 Eclipse 中,可以突出显示您感兴趣的系统内容。任务管理将 task/bug/defect/ticket/story/issue 跟踪器集成到 Eclipse 中,并提供高级的任务编辑和任务调度功能。上下文管理监视您与 Eclipse 的交互,自动识别与当前任务相关的信息,并聚焦结构化视图和编辑器,使其只显示相关信息。这两个功能一起组成了 Mylyn 的 Task-Focused(以任务为中心)UI,使多任务处理变得更容易,并且极大减少了信息超载。(至于实际研究结果,请参阅 参考资料小节中研究论文 “Using Task Context to Improve Programmer Productivity” 的链接。)

这个由两部分组成的文章是一份 Mylyn 使用指南。本文的某些内容(尤其指关注编程而不是任务管理的内容)假设您熟悉 Eclipse IDE。第 1 部分是 Mylyn 入门,并介绍了它在任务管理方面的功能。第 2 部分介绍 Mylyn 的上下文管理功能,并讨论它的 Task-Focused UI 对编程和开发方法的影响。为方便起见,将同时发表这两部分内容。

第 1 部分并不适用于编程活动,它适用于在任何 Eclipse 发行版或者集成 Mylyn 的独立应用程序中使用 Mylyn。第 2 部分主要讨论 Java™编程,但是也讨论了适用于所有基于 Eclipse 的工具的一些特性。在本文的例子中,我使用 Bugzilla 作为任务储存库,但是这里的概念和 UI 同样适用于 Mylyn 支持的其它任务跟踪器。即使您打算通过不同的连接器使用 Mylyn,建议您还是看看使用 Bugzilla Connector 的步骤,以便熟悉关键特性。

Mylyn 简介

Mylyn 通过任务跟踪这样的复杂机制扩展了 Eclipse SDK(从 参考资料小节查看受支持的版本)。任务(task)是您希望回调或与他人共享的任何工作单元,例如一个用户报告的 bug,或者关于一个特性改进的说明。Mylyn 使您可以在工作区本地存储任务,或者处理一个或多个任务储存库中的任务。(任务储存库指诸如 Bugzilla、Trac 或 JIRA 之类的问题跟踪器)。要连接到一个特定的任务储存库,还必须安装用于该储存库的 Mylyn 连接器

集成任务之后,Mylyn 将监视这些任务上的活动,以识别与当前任务相关的信息。此时,Mylyn 创建一个 任务上下文—— 与任务相关的所有工件的集合。这可以包括浏览过的文档、编辑过的方法和引用过的 API。Mylyn 使用任务上下文使 UI 聚焦感兴趣的信息、隐藏不感兴趣的信息、自动发现相关的信息。具备了完成任务所需的信息,就可以减少执行搜索、导航和滚动操作的时间,从而提高工作效率。通过突出任务上下文,Mylyn 还有助于多任务处理、计划、重用过去的工作以及共享专家经验。

使用 Mylyn 一段时间之后,您的工作方式会发生微妙但是重要的变化。一旦习惯了以任务为中心的工作方式,您很可能会发现工作效率有了极大的提高。您的工作变得井井有条,可以统筹管理数十个协作任务并跟踪进程,这些事情都变得非常容易。

图 1 中的编号区域显示了 Mylyn 的一些任务管理和上下文管理特性:

  1. 含活动任务的任务列表(Task List)和当天计划好的 Bugzilla 报告
  2. 由任务上下文管理的更改集
  3. 具有离线支持的富任务编辑器
  4. Eclipse Package Explorer 上以任务为中心的模式
图 1. Mylyn 的 Task-Focused UI

part1-overview

单击 这里查看全图。

接下来的小节讲解 Mylyn 的安装和配置,并介绍它的关键特性。对 Mylyn 任务管理功能有了大致了解后,您将更深入地了解它对日常工作流程的影响。

任务储存库连接器

在本文中,我使用 Mylyn 的 Bugzilla Connector 来展示使用任务储存库集成的关键概念。对于其它受支持的任务储存库,这些概念是相同的,只是集成级别和连接器的成熟度有所不同。与 Mylyn 捆绑的 Bugzilla 和 Trac 连接器非常成熟,并且被视作参考实现。Mylyn Extensions 页面(参阅 参考资料小节)列出了用于其它问题跟踪器和项目管理工具的连接器(例如 CollabNet、Rally、Mantis 和 XPlanner)。

完全集成的连接器提供以下特性:

  • 查询(Queries):查询是用于将各组任务取回到 Mylyn 的 Task List 中的一种机制。查询编辑和检索功能特定于连接器,它们可以提供一个基于 Eclipse 的查询设计器,或者从服务器中的一个帐户检索查询,或者同时提供这两种功能。
  • 富编辑(Rich editing):可以用一个集成的编辑器编辑任务和查询。该功能提供任务和其它结构化元素的超链接,以及 Eclipse 和桌面集成,例如拖放功能。提供富编辑的连接器仍然可以提供在 Eclipse 的嵌入式浏览器中打开任务和查询的功能。
  • 附件(Attachments):可以将文件附加到储存库中,或者从储存库中检索文件。该特性允许从操作系统或 Eclipse 工作区附加文件,并且支持上下文共享等功能(请参阅 第 2 部分)。
  • 离线(Offline)支持:可以在断开连接的情况下工作,直接访问文件和查询,而不必等到与服务器建立连接。该功能还提供更改通知,可以使用 Task List 作为任务收件箱,而不用依赖于电子邮件客户端。

为了让您从 Mylyn 获得完整的集成,并停止对外部或基于 Web 的 UI 的依赖,连接器必须支持这里列出的所有四个功能。但是,只要 Eclipse 具备 足够可用于处理任务的功能,则仍然可以从 Mylyn 的 Task-Focused UI 中获益。如果连接器的任务储存库不可用,您仍然可以:

  • 使用 Mylyn 对 本地任务的支持。如果不受支持的储存库有一个基于 Web 的 UI,那么可以从浏览器中将 URL 拖放到 Mylyn 中,从而创建任务。
  • 使用 Generic Web Repository Connector,它为很多基于 Web 的储存库提供基本查询支持:Google Code Hosting (code.google.com)、IssueZilla (java.net、dev2dev、tigris.org)、GForge (objectweb.org)、SourceForge (sf.net)、JIRA、Trac、phpBB 和 vBulletin。请参阅 参考资料小节,了解更多信息。
  • 请求任务储存库提供商创建一个用于 Mylyn 的连接器。还可以考虑在 Mylyn bug 网页为您的连接器投票(参阅 参考资料小节)。
  • 创建自己的连接器(请参阅 参考资料小节,提供了到 Integrator Reference 的链接)。

安装和设置

Mylyn 现在被包括在大多数 Eclipse 发行版中,所以获得它的最简单方法是从 Eclipse Downloads 页面下载一个包含 Mylyn 的包(见 参考资料小节)。但是,对于更新至新的 Mylyn 版本,或者将 Mylyn 安装到没有捆绑 Mylyn 的 Eclipse 版本中,下面的说明仍然会提供帮助。

要安装适合您使用的 Eclipse 版本的 Mylyn,可以使用 Eclipse Update Manager: Help > Software Updates > Find and install > Search for new features to install。 当对 Eclipse 3.2 更新时,最好使用这种机制,而不是 Search for updates,因为后者不会执行正确的依赖性检查。在 Eclipse 3.3 上,这两种方法都可行。想要了解提供 Update Manager 的最新 Mylyn 更新站点,请参考 Mylyn 的下载页面(参阅 参考资料小节)。

Mylyn 的一个关键设计目标是与 Eclipse 已有的 UI 工具无缝集成。另一个目标是要求用户只安装和使用需要的特性。图 2 显示了用于选择要安装的特性的 UI。例如,如果您的任务是 bug 归类(triaging)而不是开发,那么可以安装 Mylyn 的 Task List,而不必安装 Task-Focused UI,并且可以独立地选择用于问题跟踪器的连接器。软件开发人员很可能要同时安装这两个特性。

图 2. 选择 Mylyn 特性和储存库连接器

part1-install

当从更新站点选择要安装的特性时,可以选择一个或多个要使用的任务储存库。注意,正如 Mylyn Downloads 页面提示的,您可能需要添加额外的更新站点,以获得所需的连接器。当安装推荐的 Task-Focused UI 特性时,还应该选择所有可安装到当前 Eclipse 版本的桥接器。(关于桥接器的详细信息,请参阅 第 2 部分)。重新启动 Eclipse 3.3 或更高版本之后,可以看到图 3 所示的欢迎屏幕。如果当前使用的是 Eclipse 3.2,那么可以从 Help 菜单手动打开这个欢迎屏幕。

图 3. 欢迎屏幕

part1-welcome

任务和查询

Mylyn 提供了使用两种类型任务的支持:

  • 本地任务存储在 Eclipse 工作区,提供基本的任务管理特性,例如调度。本地任务是私有的,并只对您可见。
  • 储存库任务存储在与一个外部应用程序或服务器对应的一个任务储存库中。储存库任务常常在多人之间共享,但是仍然提供所有的本地任务功能,例如个人调度和注解。

本节展示如何创建和编辑本地任务,并考察用于使用储存库任务的可用特性。这里谈到的特性的可用性取决于连接器的 集成级别,所以只需参考那些适用的特性。无论连接器集成级别是多少,都可以使用 任务管理和个人计划中讨论的 Mylyn 的所有任务管理功能。

本地任务初解

安装 Mylyn 之后,遵循以下步骤:

  1. 在 Task List 视图上单击 New Task工具栏按钮,创建一个新任务。
  2. 选择 Local Tasks储存库。
  3. 输入一个任务概要。
  4. 单击 Eclipse 工具栏上的 Save或按 Ctrl+S,保存更新后的描述。

创建本地任务的快捷方式是 Insert 键,或者也可以从 Web 浏览器中将文本或 URL 拖放到 Task List 中。新任务的描述将由相应 Web 页面的标题自动填充。(在 Firefox 中,只需常规的拖动动作;而在 Internet Explorer 中,在拖动的同时还需按下 Ctrl 键。)在 Task List 中双击任务可以打开任务编辑器(如图 4 所示),在该编辑器中可以创建注解、粘贴相关超链接或者调度特定日期的任务。默认情况下,新创建的任务是在创建之日调度的。

图 4. 编辑本地任务

part1-editor

创建了十几个或者更多的本地任务之后,您可能想通过创建 类别来组织它们。如果创建任务时没有在 Task List 中选择类别,那么该任务被放入到 Uncategorized 容器中。可以使用 Task List 中的 Move to弹出菜单或者任务编辑器或者通过拖放操作将一个创建好的任务转移到另一个类别中。

要将本地任务标记为已完成,可以使用任务的弹出菜单或者任务编辑器。 默认情况下,被标记为已完成的任务会被过滤掉,但是也可以通过 Task List 的视图菜单(使用 Task List 视图工具栏右侧的倒三角形打开)选择不过滤它们。为了避免凌乱,不要显示那些不显示任何任务的类别(例如,所包含的任务全部完成的类别)。使用 Task List 顶端的 Find:框访问被过滤的任务。最后,可以通过任务编辑器为本地任务设置优先级和计划信息。任务管理和个人计划小节将更深入地讨论计划。

为了熟悉 Mylyn 的图标模式,可以使用 Task List 视图菜单中的 Show UI Legend动作(见图 5)。 我将在整个文章中引用该图标模式。

图 5. Mylyn UI 图例

part1-ui-legend

添加任务储存库

不同任务储存库在功能和任务管理的指代方面可能有较大差别。Mylyn 的任务管理功能提供了一种统一的方式使用多种储存库,包括:

  • 本地任务:用于使用存储在 Eclipse 工作区的简单任务的一种特殊的储存库。
  • 共享任务:如果您的团队使用共享任务储存库,例如 Bugzilla 服务器,那么可以使用这种储存库来与其他人协作完成任务。
  • 项目管理任务:有些连接器,例如 XPlanner,提供用于将任务组织到项目阶段和用户事件中的任务管理功能。
  • bug 和增强报告:这是一种特殊的任务,通常在产品用户与支持团队之间共享。Mylyn 提供集成的 bug 报告,以帮助跟踪与其它任务一起归档的 bug 报告。

要创建一个任务储存库,可以打开 Task Repositories 视图(Window > Show View > Mylyn > Task Repositories),或者使用一个包含它的透视图,例如 Team Synchronizing 透视图。打开后,使用视图的工具栏添加一个新的储存库。然后,可以输入储存库凭证和任何其它连接细节,或者从可用模板中选择一个模板。图 6 中的 bugs.eclipse.org 储存库是在安装 Mylyn 时自动创建的,这是为了便于报告 Mylyn 和 Eclipse 的 bug 和特性请求。

图 6. 添加 Eclipse.org Bugzilla 储存库

part1-repository

查询储存库

成功地添加了任务储存库之后,就可以通过 Task List 的弹出菜单中的 New Query动作创建查询来访问那个储存库上的任务。例如,可以编写一个查询来访问指定到我的电子邮箱地址的所有 Bugzilla 报告,如图 7 所示:

图 7. 创建新的 Bugzilla 查询

part1-query

设置参数并单击 Finish之后,Task List 中的查询容器被相应的任务填充。在查询执行同步时,Mylyn 在后台检索任务的信息。下载完任务信息之后,可以立即打开任务,因为不需要往返服务器来检索任务的信息。要更改查询的参数,可以重新打开它(通过在 Task List 中双击查询)并编辑所选择的值。虽然对于不同的连接器查询参数的设置不尽相同,但是查询参数设置都是用于反映连接器的 Web UI 所提供的功能。有关创建查询的详细信息,请参阅连接器文档或服务器 Web UI 文档。

默认情况下,查询每隔 20 分钟自动进行同步,并显示与查询参数匹配的新任务。(可以通过 Preferences > Mylyn > Task List更改这个时间。)当与 Web 断开连接时,不需要使 Mylyn 处于离线模式。但是,如果想关闭同步 —— 例如,假设您要长时间离线工作,或者直接根据所使用的带宽付费 —— 那么可以这么做,方法是在 Task List 视图菜单中切换 Synchronize Automatically设置。然后,可以通过工具栏上的按钮手动地同步所有任务和查询,或者通过弹出菜单或快捷键 F5 单独同步每个任务或查询。必要时,可以从弹出菜单中将一个任务储存库置于离线模式。当储存库不可用,需要长时间离线工作时,这样做很有用。

对于可以通过 Web 浏览器访问的连接器,Mylyn 集成了用户已熟知的 Web UI,如果 Mylyn 的富编辑功能不支持某些操作,您可能需要依赖于这个 Web UI。可以右键单击任何任务或查询,以便用 Web 浏览器打开它(Eclipse 浏览器设置位于 Window > Preferences > General > Web Browser中),具有关联 URL 的所有储存库任务都可以通过 Task Editor 的工具栏或者任务的弹出菜单上的 Open with Browser 动作打开。还可以用浏览器打开 Bugzilla 查询(例如,假设您想将它粘帖到一封电子邮件中,以便使用 Bugzilla Web UI 对它进行改进)。然后,可以按照 New Query 向导的提示粘帖它,从而使用更新后的 URL 在 Task List 中创建一个新的查询。

搜索任务

搜索任务类似于创建查询,但是它不将结果存储在 Task List 中。使用 Ctrl+H 或 Search 菜单(Search > Task Search),选择感兴趣的储存库,输入搜索条件,然后单击 Search。搜索视图随之打开,在该视图中可以打开与搜索匹配的任务,如图 8 所示。要改进搜索,只需再次打开 Search 对话框,以恢复之前的搜索条件。可以在 Search 视图中将搜索结果从弹出菜单转移到一个查询中。

图 8. 任务搜索和结果

part1-search

创建储存库任务

要创建新的储存库任务,可以在 Task List 工具栏或 File > New菜单中选择相应的动作,如果有多个储存库,那么要选择一个储存库。然后,连接器会要求输入任务的其它属性,例如它的 Bugzilla 组件。然后会打开一个新的编辑器,在其中可以填入任务的属性和描述。有些属性会自动选好,例如,如果使用 Bugzilla 连接器,则会自动选择操作系统。

您可能要创建的另一种任务是有关 Mylyn 或使用的另一个基于 Eclipse 的工具的 bug 报告。通过自动添加 bugs.eclipse.org 储存库,以及添加可以从 Eclipse 的 Error Log 视图和 Help 菜单中访问的用于自动报告 bug 的动作,制作 bug 报告很容易。如果要查看想要进行报告的错误事件,只需右键单击它,选择 Report as Bug。然后会打开 New Repository Task 编辑器,其中包括所有相关信息,例如栈跟踪。

由于这种通过一次单击生成 bug 报告的方式可能导致大量重复的 bug 归档文件,因此 Mylyn 还提供自动的重复检测。Search for Duplicates按钮使用报告的 Description 中的自动插入式或手动粘帖式栈跟踪来查询相应的储存库,以发现潜在的重复内容。重复检测的结果显示在 Search 视图中,如图 9 所示。如果发现匹配,可以打开它,作出注释,而不是创建新的 bug 报告。

图 9. 集成的 bug 报告和重复检测

part1-duplicate

编辑和同步

在打开一个 Bugzilla 任务时,您将注意到在编辑器上有一个 Bugzilla 和一个 Planning 选项卡。储存库连接器提供一个富编辑器,例如这个 Bugzilla 选项卡,用于编辑在储存库上共享的任务信息。而且,Planning 选项卡提供使用本地任务创建个人注解的相同功能。

当查看 bug 上的注释时,可以使用 Outline 视图在注释之间导航,但是未读注释的自动折叠意味着可以在 Task Editor 中进行大多数导航操作。对其它任务和其它结构化元素(例如 Java 栈跟踪元素)的引用被设置为超链接(参见图 10 和 图 1)。超链接的语法特定于连接器。通常,在任务编辑器左上角出现的引用可用于对 bug 进行超链接。连接器的 Web UI 支持的其它语法也受支持。始终支持 task <key>语法。

图 10. 储存库任务编辑器和内容辅助

part1-editor-repository

如果连接器支持离线编辑,则 Mylyn 维护打开的任何任务的一个缓存副本,并且每当相应的查询或任务进行同步时,对这个副本进行更新。如果作出任何更改,例如设置一个属性或者编制部分注释,那么可以通过按下 Ctrl+S 在本地保存更改。这将导致任务上出现一个 outgoing指示符。当准备好提交任务时,单击编辑器底端的Submit

如果一个任务之前已经被打开,那么再次打开它时将检索离线副本,并开始在后台对任务执行同步。这样可以确保不需要等待往返服务器就可以开始读取和处理任务。如果发现新的更改,或者当编辑器打开时他人更改了任务,那么编辑器的标题栏会显示出来,并提示刷新编辑器。

如果有其他人更改了储存库中的任务,例如添加一条新的注释,那么在屏幕的右下角会弹出一个窗口显示更改,而任务则使用 进入式箭头标记显示。如果打开任务,则被更改的部分会高亮显示,被添加的新的注释自动展开。如果本地副本和服务器上的副本都被更改,那么可以看到一个红色的冲突指示符,并提示解决冲突。如果看到冲突,那么应该单击任务编辑器的 Synchronize按钮,并且提交您的更改,或者通过弹出菜单的 Mark > Clear Outgoing放弃您的更改,以确保任务被同步。

附件

可以用任务编辑器的 Attachments 区的 Add...按钮将附件添加到储存库中。还可以从工作区或窗口管理器将文件或文本直接拖到编辑器的 Attachments 区。添加附件时会出现一个向导,通过该向导可以选择根据剪切板内容、计算机中的一个文件还是从 Eclipse 工作区中创建附件。通过 Attachments 表,可以用 Web 浏览器或编辑器打开附件,并通过上下文菜单执行特定的动作,例如保存或复制到剪切板。

任务管理和个人计划

现在,我将讨论如何使 Mylyn 成为您的一个单独的任务列表和收件箱,以管理工作周内所有相关的任务。对于很多开发人员,要在一个给定的工作周内跟踪和调度的任务的范围包括:

  • 为您正在开发的产品解决产品缺陷并分析特性
  • 由您的同事完成的任务,这些同事包括您的搭档、上司或属下
  • 针对您所使用的框架、API 和软件的 bug 报告
  • 个人待办事项和提醒

将所有任务集成到一个视图中,可以使它们更易于管理,因为只需查看一个位置就知道接下来该做什么。为了进一步简化任务管理,Mylyn 隐式包含了一些公认的任务管理最佳实践,例如调度和延迟任务,并且还包括了 XP 式开发的即时性和适应性。Mylyn 的任务管理工具使您可以轻松地适应一周内的任务变化需求,而不会丢失对长期优先级的跟踪。除了将工作周的控制权交到您手上之外,Mylyn 通过简化使用共享的储存库属性(例如里程碑和优先级),在 Eclipse 中执行所有操作,从而帮助您更好地集成团队实践。

预定日期与到期日期

Mylyn 提供两种用于调度的日期:预定日期(scheduled date)到期日期(due date)。(您可能已经注意到,任务编辑器中显示了这两种日期)。预定日期可以帮助管理和优先排列自己的工作周,而到期日期则对应于最后期限之类的固定事件。

任务的预定日期是根据个人日程安排的可变日期,可以根据优先级的变化而推迟。它定义您计划开始处理任务的时间。当任务到达预定日期时,任务变成红色,以指示您应该开始处理它或者考虑推迟它的起始日期。定在今天执行的任务会变成蓝色而不是红色,并且在工作日的最后进行安排,避免重新安排整个工作日的任务。

相反,任务的到期日期是固定的日期:任务必须完成的日期。这个日期常常与外部的约束(例如最后期限)相关。如果使用共享的任务储存库或者日历工具,到期日期会进行同步,以便使团队的其它成员可见。例如,如果 Bugzilla 的时间跟踪功能被启用,那么可以通过任务编辑器的 Attributes 区中的 Time Tracking 区设置 Bugzilla 任务的到期日期,团队中的其他成员可以看到这个日期,还可以编辑它。到期日期的临近是通过任务图标上的一个小钟指示的,这个小钟在到期日期之前为蓝色,在到期日期之后为红色。

聚焦工作周任务

由于 Mylyn 使得创建和共享任务变得如此容易,似乎您一旦开始使用它,Task List 中很快就会装满数十个甚至数千个任务。对于 Mylyn 的早期用户,包括我在内,确实会发生这样的事情。也许是因为我是第一批用户,目前我的 Task List 包含超过 5,000 个任务,其中有超过 1,000 个任务尚未完成。乍一看来,这似乎与 Mylyn 减少而不是增加信息超载的目标有冲突。为了解决这个问题,Mylyn 提供了改进的功能来调度和推迟任务,使用这些信息让 Task List 只显示与您的工作周有关的任务。新创建的任务定在创建日调度,并且可以通过任务编辑器的 Planning 区或上下文菜单快速地将任务推迟到靠后的一个时间或日期。

当任务到达预定日期之后,任务和它的容器(例如一个查询)变成红色,桌面上显示一个弹出窗口作为提醒。(和其它 Mylyn 颜色和字体设置一样,可以用Window > Preferences > General > Appearance > Colors and Fonts将任务设置为高亮显示)。当任务被推迟到将来的日期执行时,Window > Mylyn > Tasks > Scheduling中设置的工作日起始时间决定任务被调度的时间。通过更改工作日的结束时间,可以确定被定为那天调度的任务在什么时间到期。

Mylyn 任务管理模型的关键是基于兴趣的分类和过滤,您可以通过 Task List 工具栏上的 Focus on Workweek 动作启用该功能。聚焦模式导致只有与工作周相关的任务才可以显示。这包括以下任务:

  • 预定在本周执行或者超过预定日期的任务
  • 有新的更改和注释的储存库任务

如图 11 所示,任务被着色和分类,以帮助您快速确定下一步任务:

  • 逾期任务为红色,总是显示在列表的顶部。
  • 调度为在今天执行的任务以蓝色突出显示。
  • 调度为在本周靠后时间执行的任务为黑色。
  • 今天完成的任务为绿色。
  • 之前完成的任务为灰色。
图 11. 调度任务

part1-scheduling

每天执行预定的任务

通过轻松地调度和推迟任务,并将视图限制为显示给定工作周内预定的任务,Mylyn 帮助您全盘考虑优先级。为了突出工作日,Mylyn 用蓝色高亮显示所有在当天调度的任务。由于在聚焦模式下工作时不大可能看到滚动条,因而 Task List 保持展开,所以您总是知道应该考虑对什么作出响应或者下一步执行什么。

考虑使用 Mylyn 的聚焦功能管理工作周的示例流程:

  1. 在工作周的开始,任务列表包含很多红色的任务,这些任务是之前定在本周执行或者推迟到本周执行的。
  2. 红色不是令人愉快的颜色,所以您使用上下文菜单将每个任务安排在今天或本周靠后某一天执行。当所有红色都消失之后(定在今天执行的任务变成了蓝色,定在本周靠后时间执行的任务变成黑色),您可以查看这周的日程安排,确认它符合实际,必要时推迟或委托他人执行任务。
  3. 当 Task List 被激活时,可以将鼠标悬停在 Task List 顶端附近的绿色进度条上(如图 11 所示),以检查是否为工作周安排了太多的任务。如果有些任务要比其它任务花费更长的时间,那么可以打开任务的 Planning 区,调整预计时间,这样可以相应地调整工作周进度条。
  4. 在工作日的最后,所有已经完成的任务变成了令人愉快的绿色。然后,您可以检查剩下的蓝色或红色的任务,将它们推迟到明天或更靠后的日期。
  5. 在第二天的开始,安排在这一天的所有任务都为蓝色,而所有逾期的任务为红色。在安排工作日时,您会将某些任务推迟到本周靠后的日期,因此可见的蓝色任务表示您可以当天完成的所有任务。任务完成后变为绿色。
  6. 在工作周结束时,滚动条应该会消失,列表上的大多数任务应该都变成绿色。

由于任务调度是任务管理最重要的部分,Mylyn 在 Task List 中提供了 Scheduled表示,它根据到期日期而不是类别和查询来组织任务。在聚焦模式下,这种表示会显示这一周每天必须完成的所有任务。这对于平衡整周的工作负载很有用。它的另一个优点是当您使用共享任务时可以避免分心,因为不会显示有新注释但是未调度的任务。要检查新到来的任务,需要切换回 Categorized表示,重新确定优先次序,然后再重新审视时间表。当不在聚焦模式下,可以使用 scheduled 表示来平衡未来工作周的任务负载 —— 例如,通过将鼠标悬停在 Next Week 容器上检查有多少任务被推迟。

创建工作集

到目前为止,本文描述的所有功能都是将 Task List 当作一个统一的相关任务的集合,您可以灵活地调度这些任务。此外,可以用查询来组织任务,还可以进一步嵌套子任务,前提是储存库连接器提供这种支持(例如 Bugzilla 连接器就提供这种支持;可以从 Task List 的视图菜单中启用该选项)。但是,由于 Mylyn 2.0 对 工作集(working sets)的支持,还可以对由完全不相关的任务组成的集合进行处理。假设您在开发一个产品和两个不同的开源项目。您可能想把工作日的大多数时间花在最重要的产品上,但是还想跟进其它项目。Mylyn 的工作集使您可以组织与一个特定产品或项目相关的查询和类别,并提供限定在 Eclipse 工作区中显示的文件和其它资源的数量的功能。

使用 Task List 顶端的切换条,创建包括相关查询、类别和工作区资源的工作集(参见图 12)。只要 Eclipse 视图被设置为显示 Window Working Set(默认设置),切换 Mylyn 工作集可导致 Task List 和 Eclipse 都只显示属于工作集的任务和项目。例如,如果为一个开源项目设置了一个工作集,并用下拉列表启用该功能,那么 Eclipse Task List、Package Explorer 和 Problems 视图都只显示与那个项目相关的内容。Task List Find 只显示工作集中的匹配项。甚至可以通过 Search (Ctrl+H) 只查找工作集中的内容,如果工作区较大的话,这样做很有用。换句话说,整个 Eclipse 只显示与您创建的工作集相关的东西。工作集可以减少工作区的凌乱,并且可以避免使用多个工作区。在 第 2 部分中,您将看到 Mylyn 如何进一步利用这种聚焦思想,将 Eclipse 中的可见内容缩小到单个任务。

图 12. 编辑和切换工作集

part1-working-sets

过滤、分类和搜索

除了一些自动化功能外,Mylyn 还提供手动分类和过滤功能:

  • 通过视图菜单中的 Sort by项,根据 Priority 之类的属性分类。
  • 使用视图菜单中的 Filter Priority Lower Than项,根据优先级进行过滤。
  • 通过视图菜单过滤所有 Archive 类别和完成的任务(建议启用该功能,在聚焦模式下会自动启用)。
  • 通过单击 Go Into过滤特定类别或查询中的任务(在聚焦模式下同样适用)。
  • 通过拖放操作手动分类;将储存库任务分类到各类别中。

图 13 显示了可用的手动 Task List 过滤器:

图 13. 手动 Task List 过滤器

part1-filters

手动搜索和过滤会增加重复切换不同过滤器和分类器的负担。对于默认模式下的操作不建议使用,但是它们对于计划和组织任务的确有用。注意,当 Focus on Workweek 活动时,手动过滤和分类设置被禁用;可以通过关闭聚焦模式来恢复它们。

当组织 Task List 时,可以通过 Move to Category上下文菜单或者选择上下文菜单中的 Remove from Category移动任何任务。除非通过上下文菜单显式地删除任务,否则即使任务已经从查询中消失或者从类别中删除,仍然会显示在 Task List 中。被删除的任务可以在 Archive 容器中找到。可以通过 Task List 顶端的 Find 框方便地搜索 Archive 或其它地方的旧任务。单击它右边的 Clear按钮或按下 Esc 键可以恢复之前可见的任务。Archive 容器对于查看之前已解决且被注释的任务也很有用,因为创建查询的一种通用方法是排除已解决任务(但是请参阅 查询设置建议,了解有关这一做法的注意事项)。

备份和导出

聚焦模式使用得越频繁,您的 Task List 就变得越有价值。默认情况下,Task List 的自动备份已被启用,可以通过 Window > Preferences > Mylyn > Tasks设置备份目录。 要从备份恢复 Task List,可以选择相应的单选按钮,并选择一个备份快照。默认情况下,Mylyn 每天为所有任务数据制作快照,并保留 30 天的备份(通过 Preferences > Tasks配置)。可以通过单击 File > Export导出任务。

第 1 部分结束语

在这个 Mylyn 使用指南的前半部分中,我介绍了 Mylyn 的任务管理功能。我向您展示了这些功能如何支持个性化的任务管理,以及它们如何将 Bugzilla 之类的基于 Web 的问题跟踪器完全集成到 Eclipse 中。我还对 Mylyn 管理的典型的工作周或工作日作了概述,并展示如何管理 Task List。

无论您感兴趣的任务储存库有多少,Task List 视图只提供一个单独的位置来从中管理所有工作。这使您可以将工作日中的更多时间花在高效的 Eclipse 中,而不必频繁切换到外部的浏览器窗口。这还意味着您可以获得基于 Web 的问题跟踪器的富客户机体验,例如拖放附件和离线支持。

使用 Mylyn 的最精彩部分即将出现。一旦任务显式呈现为工作的组成部分,Mylyn 就开始自动管理它们的上下文。本文的第 2 部分介绍 Mylyn 的上下文管理功能,并展示这些功能如何减少信息超载,以及如何使多任务处理简单到只需一次单击即可完成。现在就请阅读 第 2 部分。

参考资料

学习

  • 您可以参阅本文在 developerWorks 全球站点上的 英文原文
  • Mylyn 2.0, Part 2: Automated context management”(Mik Kersten,developerWorks,2007 年 8 月):了解 Mylyn 的上下文管理功能如何减少信息超载和简化协作。
  • "Using Task Context to Improve Programmer Productivity" (Mik Kersten 和 Gail C. Murphy,FSE 2006):这篇论文描述了 Mylyn 的上下文模型,并给出了证实显式的任务上下文可以使程序员更高效的实际研究结果。
  • Mylyn FAQUser Guide:Mylyn 的用户文档。
  • Mylyn 主页:Mylyn 用户和开发人员的参考资料和支持。
  • Mylyn Integrator Reference:如果想创建自己的连接器,那么从这里开始。
  • Eclipse 新手入门: 了解 Eclipse 平台和 Eclipse 正在进行的项目,包括 Mylyn。
  • Mik's Blog:访问作者的网上博客。
  • Java 技术专区:这里有数百篇关于 Java 编程方方面面的文章。

获得产品和技术

  • Mylyn Extensions:下载没有绑定到 Mylyn 中的连接器。
  • Generic Web Repository Connector:解析 HTML 的精简版的连接器,为没有富连接器的任务存储库提供基本查询集成。
  • Mylyn 下载:更新站点和受支持的 Eclipse 版本和储存库的列表。
  • Eclipse 下载:Eclipse 3.2 和其它下载。

讨论

  • Mylyn bugs and votes:提交 Mylar 的 bug 报告及功能需求。在这里为 Mylar 连接器和桥接器投票。
  • Eclipse Plug-in Central: 使用评论表单评价 Mylyn。
  • developerWorks blogs:加入 developerWorks 社区。

作者:Mik Kersten, Mylyn 项目主管;总裁 & CTO, Tasktop Technologies
2007 年8月28日

来源:http://www.ibm.com/developerworks/cn/java/j-mylyn1/


如果给你带来帮助,欢迎微信或支付宝扫一扫,赞一下。