虽然软件系统、框架和工具可以无限制地发展,但开发人员实际处理信息的能力具有一个上限。大多数集成开发环境(IDE)尝试 使用结构化视图、编辑器和高级搜索功能来解决这个限制。这些机制虽然可以使大型系统的导航变得更容易,但是它们常常不足以帮助您管理完成典型编程任务所必 须处理的大量信息。因此,结构化视图越来越不堪负荷 —— 例如,即使在导航一个小型的企业应用程序时,Eclipse Package Explorer 也常常会显示数千个源文件 —— 您要浪费大量的时间来滚动、导航和跟踪这些信息。
有趣的是,在大多数情况下,不 需要查看系统的整个层次结构或者某个特定方法的每个引用就可以完成编程任务。例如,对于要修复的任何 bug 或者要添加的任何特性,您只对系统的某一部分感兴趣。Mylyn 是一种交互技术,通过将集成的任务管理 和自动上下文管理 这两个功能添加到 Eclipse 中,可以突出显示您感兴趣的系统内容。任务管理将 task/bug/defect/ticket/story/issue 跟踪器集成到 Eclipse 中,并提供高级的任务编辑和任务调度功能。上下文管理监视您与 Eclipse 的交互,自动识别与当前任务相关的信息,并聚焦结构化视图和编辑器,使其只显示相关信息。这两个功能一起组成了 Mylyn 的 Task-Focused(以任务为中心)UI,使多任务处理变得更容易,并且极大减少了信息超载。
Mylyn 简介
Mylyn 通过任务跟踪这样的复杂机制扩展了 Eclipse SDK(从 参考资料 小节查看受支持的版本)。任务(task)是您希望回调或与他人共享的任何工作单元,例如一个用户报告的 bug,或者关于一个特性改进的说明。Mylyn 使您可以在工作区本地存储任务,或者处理一个或多个任务储存库中的任务。(任务储存库 指诸如 Bugzilla、Trac 或 JIRA 之类的问题跟踪器)。要连接到一个特定的任务储存库,还必须安装用于该储存库的 Mylyn 连接器。
集成任务之后,Mylyn 将监视这些任务上的活动,以识别与当前任务相关的信息。此时,Mylyn 创建一个任务上下文 —— 与任务相关的所有工件的集合。这可以包括浏览过的文档、编辑过的方法和引用过的 API。Mylyn 使用任务上下文使 UI 聚焦感兴趣的信息、隐藏不感兴趣的信息、自动发现相关的信息。具备了完成任务所需的信息,就可以减少执行搜索、导航和滚动操作的时间,从而提高工作效率。 通过突出任务上下文,Mylyn 还有助于多任务处理、计划、重用过去的工作以及共享专家经验。
使用 Mylyn 一段时间之后,您的工作方式会发生微妙但是重要的变化。一旦习惯了以任务为中心的工作方式,您很可能会发现工作效率有了极大的提高。您的工作变得井井有条,可以统筹管理数十个协作任务并跟踪进程,这些事情都变得非常容易。
接下来的小节讲解 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 网页为您的连接器投票。
创建自己的连接器。
安装和设置
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,并且可以独立地选择用于问题跟踪器的连接器。软件开发人员很可能要同时安装这两个特性。
当从更新站点选择要安装的特性时,可以选择一个或多个要使用的任务储存库。注意,正如 Mylyn Downloads 页面提示的,您可能需要添加额外的更新站点,以获得所需的连接器。当安装推荐的 Task-Focused UI 特性时,还应该选择所有可安装到当前 Eclipse 版本的桥接器。(关于桥接器的详细信息,请参阅 第 2 部分)。重新启动 Eclipse 3.3 或更高版本之后,可以看到图 3 所示的欢迎屏幕。如果当前使用的是 Eclipse 3.2,那么可以从 Help 菜单手动打开这个欢迎屏幕。
任务和查询
Mylyn 提供了使用两种类型任务的支持:
本地任务存储在 Eclipse 工作区,提供基本的任务管理特性,例如调度。本地任务是私有的,并只对您可见。
储存库任务存储在与一个外部应用程序或服务器对应的一个任务储存库中。储存库任务常常在多人之间共享,但是仍然提供所有的本地任务功能,例如个人调度和注解。
本节展示如何创建和编辑本地任务,并考察用于使用储存库任务的可用特性。这里谈到的特性的可用性取决于连接器的 集成级别,所以只需参考那些适用的特性。无论连接器集成级别是多少,都可以使用 任务管理和个人计划 中讨论的 Mylyn 的所有任务管理功能。
本地任务初解
安装 Mylyn 之后,遵循以下步骤:
在 Task List 视图上单击 New Task 工具栏按钮,创建一个新任务。
选择 Local Tasks 储存库。
输入一个任务概要。
单击 Eclipse 工具栏上的 Save 或按 Ctrl+S,保存更新后的描述。
创建本地任务的快捷方式是 Insert 键,或者也可以从 Web 浏览器中将文本或 URL 拖放到 Task List 中。新任务的描述将由相应 Web 页面的标题自动填充。(在 Firefox 中,只需常规的拖动动作;而在 Internet Explorer 中,在拖动的同时还需按下 Ctrl 键。)在 Task List 中双击任务可以打开任务编辑器,在该编辑器中可以创建注解、粘贴相关超链接或者调度特定日期的任务。默认情况下,新创建的任务是在创建之日调度的。
创建了十几个或者更多的本地任务之后,您可能想通过创建类别 来组织它们。如果创建任务时没有在 Task List 中选择类别,那么该任务被放入到 Uncategorized 容器中。可以使用 Task List 中的 Move to 弹出菜单或者任务编辑器或者通过拖放操作将一个创建好的任务转移到另一个类别中。
要将本地任务标记为已完成,可以使用任务的弹出菜单 或者任务编辑器。 默认情况下,被标记为已完成的任务会被过滤掉,但是也可以通过 Task List 的视图菜单(使用 Task List 视图工具栏右侧的倒三角形打开)选择不过滤它们。为了避免凌乱,不要显示那些不显示任何任务的类别(例如,所包含的任务全部完成的类别)。使用 Task List 顶端的 Find: 框访问被过滤的任务。最后,可以通过任务编辑器为本地任务设置优先级和计划信息。任务管理和个人计划 小节将更深入地讨论计划。
为了熟悉 Mylyn 的图标模式,可以使用 Task List 视图菜单中的 Show UI Legend 动作。 我将在整个文章中引用该图标模式。
添加任务储存库
不同任务储存库在功能和任务管理的指代方面可能有较大差别。Mylyn 的任务管理功能提供了一种统一的方式使用多种储存库,包括:
本地任务:用于使用存储在 Eclipse 工作区的简单任务的一种特殊的储存库。
共享任务:如果您的团队使用共享任务储存库,例如 Bugzilla 服务器,那么可以使用这种储存库来与其他人协作完成任务。
项目管理任务:有些连接器,例如 XPlanner,提供用于将任务组织到项目阶段和用户事件中的任务管理功能。
bug 和增强报告:这是一种特殊的任务,通常在产品用户与支持团队之间共享。Mylyn 提供集成的 bug 报告,以帮助跟踪与其它任务一起归档的 bug 报告。
要创建一个任务储存库,可以打开 Task Repositories 视图(Window > Show View > Mylyn > Task Repositories),或者使用一个包含它的透视图,例如 Team Synchronizing 透视图。打开后,使用视图的工具栏添加一个新的储存库。然后,可以输入储存库凭证和任何其它连接细节,或者从可用模板中选择一个模板。
查询储存库
成功地添加了任务储存库之后,就可以通过 Task List 的弹出菜单中的 New Query 动作创建查询来访问那个储存库上的任务。例如,可以编写一个查询来访问指定到我的电子邮箱地址的所有 Bugzilla 报告。
设置参数并单击 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。搜索视图随之打开,在该视图中可以打开与搜索匹配的任务。要改进搜索,只需再次打开 Search 对话框,以恢复之前的搜索条件。可以在 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 视图中。如果发现匹配,可以打开它,作出注释,而不是创建新的 bug 报告。
编辑和同步
在打开 一个 Bugzilla 任务时,您将注意到在编辑器上有一个 Bugzilla 和一个 Planning 选项卡。储存库连接器提供一个富编辑器,例如这个 Bugzilla 选项卡,用于编辑在储存库上共享的任务信息。而且,Planning 选项卡提供使用本地任务创建个人注解的相同功能。
当查看 bug 上的注释时,可以使用 Outline 视图在注释之间导航,但是未读注释的自动折叠意味着可以在 Task Editor 中进行大多数导航操作。对其它任务和其它结构化元素(例如 Java 栈跟踪元素)的引用被设置为超链接。超链接的语法特定于连接器。通常,在任务编辑器左上角出现的引用可用于对 bug 进行超链接。连接器的 Web UI 支持的其它语法也受支持。始终支持 task <key> 语法。
如果连接器支持离线编辑,则 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 动作启用该功能。聚焦模式导致只有与工作周相关的任务才可以显示。这包括以下任务:
预定在本周执行或者超过预定日期的任务
有新的更改和注释的储存库任务
任务被着色和分类,以帮助您快速确定下一步任务:
逾期任务为红色,总是显示在列表的顶部。
调度为在今天执行的任务以蓝色突出显示。
调度为在本周靠后时间执行的任务为黑色。
今天完成的任务为绿色。
之前完成的任务为灰色。
每天执行预定的任务
通过轻松地调度和推迟任务,并将视图限制为显示给定工作周内预定的任务,Mylyn 帮助您全盘考虑优先级。为了突出工作日,Mylyn 用蓝色高亮显示所有在当天调度的任务。由于在聚焦模式下工作时不大可能看到滚动条,因而 Task List 保持展开,所以您总是知道应该考虑对什么作出响应或者下一步执行什么。
考虑使用 Mylyn 的聚焦功能管理工作周的示例流程:
在工作周的开始,任务列表包含很多红色的任务,这些任务是之前定在本周执行或者推迟到本周执行的。
红色不是令人愉快的颜色,所以您使用上下文菜单将每个任务安排在今天或本周靠后某一天执行。当所有红色都消失之后(定在今天执行的任务变成了蓝色,定在本周靠后时间执行的任务变成黑色),您可以查看这周的日程安排,确认它符合实际,必要时推迟或委托他人执行任务。
当 Task List 被激活时,可以将鼠标悬停在 Task List 顶端附近的绿色进度条上(如图 11 所示),以检查是否为工作周安排了太多的任务。如果有些任务要比其它任务花费更长的时间,那么可以打开任务的 Planning 区,调整预计时间,这样可以相应地调整工作周进度条。
在工作日的最后,所有已经完成的任务变成了令人愉快的绿色。然后,您可以检查剩下的蓝色或红色的任务,将它们推迟到明天或更靠后的日期。
在第二天的开始,安排在这一天的所有任务都为蓝色,而所有逾期的任务为红色。在安排工作日时,您会将某些任务推迟到本周靠后的日期,因此可见的蓝色任务表示您可以当天完成的所有任务。任务完成后变为绿色。
在工作周结束时,滚动条应该会消失,列表上的大多数任务应该都变成绿色。
由于任务调度是任务管理最重要的部分,Mylyn 在 Task List 中提供了 Scheduled 表示,它根据到期日期而不是类别和查询来组织任务。在聚焦模式下,这种表示会显示这一周每天必须完成的所有任务。这对于平衡整周的工作负载很有用。它的另 一个优点是当您使用共享任务时可以避免分心,因为不会显示有新注释但是未调度的任务。要检查新到来的任务,需要切换回 Categorized 表示,重新确定优先次序,然后再重新审视时间表。当不在聚焦模式下,可以使用 scheduled 表示来平衡未来工作周的任务负载 —— 例如,通过将鼠标悬停在 Next Week 容器上检查有多少任务被推迟。
创建工作集
到目前为止,本文描述的所有 功能都是将 Task List 当作一个统一的相关任务的集合,您可以灵活地调度这些任务。此外,可以用查询来组织任务,还可以进一步嵌套子任务,前提是储存库连接器提供这种支持(例如 Bugzilla 连接器就提供这种支持;可以从 Task List 的视图菜单中启用该选项)。但是,由于 Mylyn 2.0 对工作集(working sets)的支持,还可以对由完全不相关的任务组成的集合进行处理。假设您在开发一个产品和两个不同的开源项目。您可能想把工作日的大多数时间花在最重要 的产品上,但是还想跟进其它项目。Mylyn 的工作集使您可以组织与一个特定产品或项目相关的查询和类别,并提供限定在 Eclipse 工作区中显示的文件和其它资源的数量的功能。
使用 Task List 顶端的切换条,创建包括相关查询、类别和工作区资源的工作集。只要 Eclipse 视图被设置为显示 Window Working Set(默认设置),切换 Mylyn 工作集可导致 Task List 和 Eclipse 都只显示属于工作集的任务和项目。例如,如果为一个开源项目设置了一个工作集,并用下拉列表启用该功能,那么 Eclipse Task List、Package Explorer 和 Problems 视图都只显示与那个项目相关的内容。Task List Find 只显示工作集中的匹配项。甚至可以通过 Search (Ctrl+H) 只查找工作集中的内容,如果工作区较大的话,这样做很有用。换句话说,整个 Eclipse 只显示与您创建的工作集相关的东西。工作集可以减少工作区的凌乱,并且可以避免使用多个工作区。
过滤、分类和搜索
除了一些自动化功能外,Mylyn 还提供手动分类和过滤功能:
通过视图菜单中的 Sort by 项,根据 Priority 之类的属性分类。
使用视图菜单中的 Filter Priority Lower Than 项,根据优先级进行过滤。
通过视图菜单过滤所有 Archive 类别和完成的任务(建议启用该功能,在聚焦模式下会自动启用)。
通过单击 Go Into 过滤特定类别或查询中的任务(在聚焦模式下同样适用)。
通过拖放操作手动分类;将储存库任务分类到各类别中。
手动搜索和过滤会增加重复切换不同过滤器和分类器的负担。对于默认模式下的操作不建议使用,但是它们对于计划和组织任务的确有用。注意,当 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 导出任务。
一旦任务成为您的 Eclipse 体验中的集成部分,您很可能会注意到许多重复性行为都是以所处理的任务的上下文 为中心的。多任务处理是当今知识工作中很普遍的一部分,它常常需要创建和重新创建与当前任务相关的上下文。任务的上下文是指在处理任务时需要引用的所有文 件、搜索结果和其它相关信息。例如,在编程时,可能只想看到与正在修复的 bug 相关的 Java™ 元素。当完成修复时,您可能希望以独立于当天处理的其它任务的方式提交这些更改。或者,希望通过只运行与对任务作出的更改相关的测试来节省时间。
正如 Mylyn 可以帮助您聚焦工作周所包含的任务一样,它可以使 Eclipse 工作区聚焦与当前任务相关的工件上。安装 Mylyn 的 Task-Focused UI 之后,只需指出活动的任务,您所使用的所有文件都将自动添加到该任务的上下文中。管理上下文是为了精确地表示出对所从事的各种工件的聚焦程度,即使对长期 运行的任务也是如此。当切换任务时,上下文将被保存,这使您可以通过一次单击进行多任务处理,并且轻松地与其他人共享特定于任务的知识。
本文解释了 Mylar 如何无缝地将其置于 Eclipse UI 之上来凸现编程任务的上下文。本文首先解释 Mylyn 管理上下文的机制,然后介绍兴趣修饰、视图过滤、编辑器管理和上下文驱动的单元测试套件等 UI 工具。在文章的最后,展示了如何综合运用 Mylar 的任务管理和上下文管理来协助团队协作。
单击 Focus on Active Task 按钮可以使 Eclipse Package Explorer 只显示活动任务的上下文中的元素。
可以通过 Task List 切换活动任务。
切换后,Eclipse 视图和编辑器将聚焦于新激活的任务的上下文。
更改集将被自动管理,以反映任务上下文中的更改。
折叠功能和上下文可以帮助视图聚焦相关的元素。
以任务为中心的编程
设想一下,假设您正在将更改封装到新功能里,来应对迫近的代码冻结期限。在工作中,创建此功能时,构建了关于所有修改过的类和方法以及所有访问过的 API 的颇有价值的知识。由于在使用 Mylar,这个知识会自动地在任务上下文中获取到。任务要完成时,却出现了一个严重的 bug,需要立即给予注意。
您通过单击激活 bug 报告,并开始调查该问题。在 Mylar 的富任务编辑器中浏览该 bug 加了超链接的堆栈跟踪,新的任务上下文被探查和诊断结果所填充。当单击 Mylyn 的自动化 Context Test Suite(该套件运行与已创建的任务上下文结构相关的单元测试)时,您发现这个 bug 位于一个同事的代码中,而不在您的代码中。由于 Mylyn 提供了对任务的修改历史的链接,您可以立即查看该同事的任务,它对应于出现问题的更改。通过再一次单击,将该 bug 再分配给同事并共享由您的诊断得出的任务上下文。完成这些都未离开 Eclipse,所以通过单击 Task List 的 Back 按钮可以立即回到之前任务的上下文。同时,您的同事也恰在您停止的地方拾起该 bug 报告。这只是程序员使用 Task-Focused UI 轻松工作和协作的场景之一。
接下来的小节展示如何利用 Mylyn 的上下文管理功能以任务为中心的方式工作。虽然这里的例子基于 Java 开发,但其中的概念和大多数特性同样适用于可能使用的任何基于文件的工件。(请参阅 支持的工具,了解更多细节。)
兴趣等级模型
Mylyn 中的任务上下文管理基于这样的思想:开发人员与系统的交互可以转换为一个兴趣等级(degree-of-interest)模型,在该模型中,系统中的每 个元素都根据其与手头任务的兴趣等级来衡量其权重。这种相关度加权形成了与任务相关的所有元素的上下文。然后,就可以通过突出最重要的元素、过滤无关紧要 的元素以及允许在感兴趣的元素上执行操作(例如,只提交相关更改)来使任务上下文聚焦于 UI。任务上下文是在您工作时以一种可预测的方式构建的:当您激活一个任务时,您选择或编辑的每个元素 —— 例如文件或 Java 方法 —— 就成为任务上下文的一部分。和元素交互越多,该元素相对于任务的兴趣等级就越高。如果一个元素的兴趣级别足够高,那么它就成为一个里程碑 (landmark),这是一个隐式创建的书签。每一次交互也导致组成任务的所有元素已积累的兴趣逐渐衰减,这样兴趣元素的集合就会同当前的兴趣相匹配, 而不会无限制的扩张下去。
使任务上下文模型简单易用的关键特征是它具有可预测性并且一目了然:您期望看到的内容就显示在眼前,每 当您开始处理一个元素时,就立即可以看到该元素填充了上下文。还可以直接操纵元素的兴趣等级,或者使元素变得不相关,或者显式地将元素标记为里程碑。换句 话说,您已经熟悉的 bookmark/starring/tagging UI 没有任何损失。但是,一旦您习惯使用 Mylyn,您很可能会发现自己对那些手动管理任务上下文的机制的依赖性大大减少。
兴趣修饰和过滤
Mylyn 的上下文管理功能使用传统的 Eclipse 视图以一种新的方式来凸现信息。您只需通过一次单击激活任务,就可以使 Eclipse UI 聚焦于那个任务。然后,您与之交互的每个元素都成为任务上下文的一部分。Mylar 兴趣修饰器随后使用字体着色来高亮显示每个元素从交互中积累的兴趣等级。非兴趣元素以灰色显示,兴趣元素以黑色显示,里程碑为粗体。
尽管只高亮显示在减少信息过载方面有其局限性,但它还是一直应用于所有能看到诸如 Java 成员和文件等元素的视图中。这便于您在查看一长串的元素时快速挑选任务上下文中的元素。例如,当查看搜索结果时,可以立即发现最感兴趣的元素,因为它们以 粗体修饰为里程碑形式(参见 图 2)。
仅仅使用修饰还不足以减少包含几十万个文件的大型工作区中的信息超载。一些结构化视图,例如 Eclipse 的 Project Explorer,在浏览大型层次结构内容方面已变得令人难以置信的高效。超载问题与那些视图无关,而应该归因于开发人员使用的巨大的信息系统并不匹配与 任何给定编程任务相关的相对较少的信息。对于这种不匹配,最明显的表现是,大量时间浪费在反复滚动以及展开/折叠庞大的树视图以查找完成工作所需的信息。
Mylyn 的目标是消除所有不需要的滚动和单击操作。为此, Task-Focused UI 提供基于兴趣的过滤和结构化视图管理。通过 Focus on Active Task 按钮激活后,这些功能可以过滤掉所有不感兴趣的元素,从而将相应的视图聚焦于活动任务的上下文。例如,聚焦模式确保 Package Explorer 只显示您正在处理的内容:属于任务的一部分的所有源文件、库文件和方法。除了过滤外,当应用聚焦时,Mylyn 还自动维护树视图的展开状态,所以您不需要手动地展开和折叠树节点就能看到感兴趣的元素。
开始在视图上使用聚焦模式后,您将注意到兴 趣模型如何随着工作而演进。一个元素的被选中次数越多,元素的兴趣等级就越高,直到它变为粗体的里程碑。低兴趣的元素(如只选过一次的搜索命中结果)将在 兴趣等级中衰减并从过滤过的视图中消失,这确保该视图不会被非兴趣元素所胀满。由于任务上下文在一种可预见的模式下被积极地管理,上下文只包括了有兴趣等 级的元素,即使在长期运行的任务中也是如此。尽管设计 Mylar 的任务上下文模型是为了能够一直反映当前与任务相关的东西,但也可以手动地增加或减少元素的兴趣等级(例如,通过使用元素的上下文菜单行为或使用快捷键 Ctrl+Alt+Shift+ 向上/向下的箭头)。
以任务为中心的工作区
在深入探讨 Mylyn 提供的用于支持 Java 开发的高级集成之前,您需要大体了解在处理纯文本文件时,Task-Focused UI 对 Eclipse 工作区的关键贡献。图 2 演示了这些关键概念:
在左侧,Project Explorer 视图聚焦于活动任务,它只显示感兴趣的文件,并高亮显示里程碑。在这里,可以使用 Alt+Click 机制临时显示一个名为 presentations 的目录中的所有文件,以便选择其它感兴趣的文件。
在右侧,Task List 显示一个活动任务。当该任务停止活动时,Package Explorer 视图上的焦点被关闭,当前打开的所有文件被关闭。如果一个新的任务被激活,则重新应用焦点,用于处理那个任务的所有打开的编辑器立即恢复。
本文后面的内容以 Java 开发为例,较详细地阐述如何以以任务为中心的方式工作。但是,任务激活、视图聚焦和编辑器管理等概念是使用 Mylyn 的最值得注意的关键方面。您只需理解任务激活的概念,就可以开始使用以任务为中心的方式工作。这种小但重要的工作方式的改变会立即使您获益:当您切换任务 时,您在工作中建立起来的所有有价值的上下文不再会丢失。
技巧: 配置 Task-Focused UI
默认情况下大多数 Task-Focused UI 特性都是打开的,但是可以通过视图或编辑器中相应的按钮或者偏好设置关闭它们。要了解更详细的信息,请参阅 Mylyn FAQ 。
在 Java 开发中使用 Mylyn
将 Mylyn 用于 Java 编程的开发人员常常使 Package Explorer 处于聚焦模式。因此,默认情况下,当激活一个任务时,Focus on Active Task 按钮自动打开,当将一个任务变为不活动时,该按钮自动关闭。当该功能打开时,只能看到上下文中的 Java 元素。当选择一个 Java 类时,不管是通过浏览还是通过常用的 Open Type 机制(Ctrl+Shift+T),这种类型就成为上下文的一部分,并显示在过滤后的 Package Explorer 中。您选择和编辑的每个方法都被添加到任务上下文中,因此会显示在 Package Explorer 中。
当视图在聚焦模式时,Eclipse 用于打开元素的工具运行良好(使用 Ctrl+Shift+T 打开一个类型,使用 Ctrl+Shift+R 打开一项资源,Ctrl+O 用于就地打开大纲,Ctrl+T 用于就地打开层次结构)。为使在 Open Type 对话框中选择类型更加简单,感兴趣的类型被自动放在列表的最上面。当切换任务时,列表中包含新任务感兴趣的类型。当没有活动任务时,该列表恢复为最近使用 类型的 Eclipse 全局列表。
如果使用 Java Browsing 透视图,请使用窗口的工具栏按钮,通过单击将三种 Java 元素视图设为聚焦模式,而不必逐个聚焦每个视图。
自动折叠和内容辅助排序
Eclipse 成熟的 Java 编辑器使您可以在编辑器中处理大多数结构导航。此外,Mylyn 还提供了自动折叠和内容辅助排序,以帮助 Java 编辑器聚焦与当前任务相关的元素。如果打开窗口工具栏中 Mylyn 的 Automatically Fold Uninteresting Elements 按钮,那么在编辑器中只有感兴趣的元素被展开。这可以增加编辑器的信息密度,并且更易于导航大型文件中的声明,而不必打开 Outline 视图。当选择一个元素时,它立即成为任务上下文的一部分,并且被展开。
与视图中的过滤相似,Mylyn 还根据兴趣等级对 Java 内容辅助建议进行排序。在兴趣分隔符下的所有条目都使用 Java Development Tools 的标准排序试探法进行排序。这意味着,只需按几次向下箭头键就可以选择感兴趣的建议。如果在选择建议前开始输入,该列表会恢复为典型排序。还应注意到,在 图 4 中,诸如 getTask() 等感兴趣的方法在编辑器中也是展开的。公开元素兴趣等级的各种机制间的一致性有助于 Focused UI 变得可预见且易于使用。
自动编辑器和透视图管理
Mylar 也使用任务上下文来动态地管理和任务相关的打开编辑器的数目。当文件中的元素从兴趣等级中衰减,该编辑器会自动关闭。当停用一个任务时,它所有的编辑器都 会关闭,任务激活时重新打开。减少元素的兴趣等级会关闭其编辑器,且反之亦然,关闭一个文件也会减少其兴趣等级。这可能需要一点时间才能适应,但是这意味 着您不再需要自己管理打开的编辑器的状态,并且打开的编辑器的数量也不至于太多。确保所有打开的编辑器与感兴趣的元素相对应,这还使您可以使用 Eclipse 的编辑器导航功能在感兴趣的文件之间导航。例如,如果 Package Explorer 之类的导航视图不可见,可以使用 Ctrl+E 和 Ctrl+F6 方便地在编辑器之间切换。
同样,Mylar 也能通过恢复上次完成一项任务时激活的透视图(通过单击 Window > Preferences > Mylyn > Context 启用)来管理 Eclipse 的透视图。当不同的任务对应于 Eclipse 提供的不同视图(例如,有些任务对应于 Java 开发,有些任务对应于 PHP 开发)时,这一点很有用。当使用 Mylyn 的 Planning 透视图时,该功能特别管用。如果在没有活动任务时切换到 Planning 透视图,那么当停止要处理的下一个任务时,就会自动切换到那个透视图。使用 Planning 透视图可以更容易地发现接下来要处理哪个任务,因为这个透视图会将任务编辑器和 Task List 的区域最大化。
使用 Ant、PDE 和其它源文件
Mylyn 的聚焦功能可以应用于所有在 Eclipse SDK 中显示上下文的视图:Package Explorer、Navigator、Project Explorer、Outline、Problems、Tasks、Debug、Packages、Types 和 Members。任何树视图的聚焦模式,如 Project Explorer 都添加了兴趣修饰、过滤和展开管理。在聚焦模式下,列表视图,例如 Problems,也会按照兴趣等级分类。由于这种通用的支持,即使定制的桥接器不支持您的工具(见 支持的工具),仍然可以将 Mylyn 用于非 Java 项目,例如 PHP 开发。本节简要地概述如何将 Mylyn 用于使用其它语言和工具的编程。要了解更多信息,请访问 参考资料 中的 Mylyn Extensions 链接。
注意,图 5 中的 Project Explorer 视图只显示任务上下文中的文件,这里包括一些图像和 XML 文件。打开的文件是 build.xml,该文件由数十个 Ant 声明组成。在 Outline 视图中,只能看到您正在处理的声明,而不是许多不感兴趣的声明。Problems 视图也聚焦于活动任务,只能看到感兴趣的东西(如所有的错误及警告或任务上下文中其他的元素标记),而不是被数百条无关的警告堆满而超载。最 后,Eclipse Tasks 视图也处于聚焦模式,因而将只看到与任务上下文相关的标记,而不会看到数百条不会立即去做的 to-do 标记。
Context Test Suite
在以任务为中心的方式下编程更易于频繁运行单元测试。通常来说,单元测试实践让您为一个或多个当前正在从事的枯燥测试创建一个新的测试启动程序。其他的 测试方案是:在一个项目上运行所有测试,这会错过一些相关测试;或运行一整套测试,这很慢。为解决这些问题,Mylar 在任务上下文中自动维护了元素的单元测试套件 —— 称为 Context Test Suite—— 并在操作任务时使重复运行测试变得很简单(用快捷键 F11)。
要启用该特性,为 JUnit Plug-in 测试或普通 JUnit 测试创建一个 Context Test Suite。Context Test Suite 被自动更新,以包括当前活动上下文中的所有测试用例。
将上下文用于协作
协作性工具都是关于共享信息的,任务上下文能聚焦于该信息而阻止信息超载和分散。开发人员不断来回发送电子邮件、即时消息及文件,来交换执行日常任务所 需的必要消息。尽管 Mylar 仍没有排除对即时消息或电子邮件的需要,但它能够通过将它们锁定在任务周围来简化一些协作活动。由于任务定义了清晰、易于理解的工作单元,且任务上下文定 义了与工作相关的信息,所以用单击来共享任务上下文的功能能够减少协作通信负担。
演示了 Mylyn 的任务管理如何将基于 Web 的储存库(如 Bugzilla)集成起来,从而提供了您期待从电子邮件客户机中得到的那种协作集成程度和响应程度。这一节则解释 Mylar 对跟踪更改集和任务活动的自动支持(联合了对上下文共享的支持)是如何进一步便利了团队工作及获取专门技术的。通常,您可以根据需要以及 Mylar 同源文件及任务存储库集成的程度挑选要使用的功能。
自动化的更改集
更改集 是一项用于对资源分组的内置的 Eclipse 工具,可以在 Synchronize 视图中对其进行操作,以提交、更新或创建补丁。除非在一个静态的项目中工作,否则手动管理更改集常常得不偿失。Mylar 通过自动管理更改集便利了对源存储库的操作。一旦激活一项任务,该任务的更改集即被添加,并随后显示在 Synchronize 视图中。操作该任务时做出的更改被添加到该更改集中。可以使用位于视图的 Change Set 节点的上下文菜单来覆盖、提交或创建一个补丁。由团队成员做出的更改按照任务分组显示,可以通过右键单击一个引入的更改集来打开相应的任务。如果有了更 改,但任务停用,更改集不变,使您可以同时操作多项传出更改。Mylar 确保在上下文和更改集之间的一对一映射,所以如果将一份文件手动地添加到更改集中(通过 Synchronize 视图中的上下文菜单),该文件也会被添加到上下文中。当前支持的源存储库是 CVS 和 Subversion(包括 Subclipse 和 Subversive)。
尽管一开始效果也许不明显,Mylar 使用上下文将任务和资源绑到一起的方法将对您工作的方式产生根本性影响。例如,对于 Mylar 项目本身,不需要编写提交消息,因为它们是由 Mylar 的更改集集成(使用 Window > Preferences > Mylyn > Team 页面编辑用于生成自动提交消息的模板)自动生成的。这使我们能够通过单击从 History 视图导航至与修订相对应的任务,这节省了跟踪更改及修订至原始任务的时间。相反地,这也使得可以通过 CVS 日志查询所有针对一个特定任务更改过的文件。这个功能与 Eclipse 用于显示 Team Annotations 的功能和 Mylyn 的普通超链接相结合,意味着您将大量减少花费在查找与一个更改相关的 bug 或任务上的时间,因为通常只需一次单击即可完成。(注意,为了在弹出的文本编辑器中显示超链接,必须按下 Ctrl 键,如果要将弹出窗口放在最前面,需要按 F2 键)。
共享上下文
任务上下文获取执行任务时创建的知识。重新激 活一个任务会立即将您带回到该任务的上下文,而不是迫使您恢复与该任务相关的那部分系统。如果半途将任务移交给团队成员,任务上下文会为他或她提供一个起 点。由于上下文是从交互中创建的,而不仅从更改中创建,每个任务上下文都包含了相关信息,如处理该任务时访问过的 API 以及引用过的文档。为支持这个及类似的协作场景(如结对编程),上下文能被轻易地共享。可以通过 Task List中的上下文菜单或通过单击任务编辑器中相应的复选框来激活上下文共享:
当使用支持附件的任务存储库连接器时,可以将任务 上下文附加在 bug 报告中来轻易地实现共享。当获取一个共享上下文时,可以从所有可用的上下文中选择(如果当前有多个上下文的话)。例如,在 Mylar 项目中,我们将上下文附在每一个解决了的 bug 报告中,并且要求每一个贡献的补丁都要附上上下文。这种通过上下文共享专门技术的方法使应用补丁、与团队成员协作处理 bug 报告、在结对编程会话结束后清理代码变得更加简单。所有已解决的 bug 都存储了一个上下文,这一事实意味着只要 bug 被重新打开或类似的错误发生,我们都能立即恢复并使用过去的技术。
结束语
在这个由两部分组成的文章中,我介绍了如何 用 Mylar 进行以任务为中心的编程。我展示了 Mylar 是如何通过将任务作为 Eclipse 中头等重要的部分对待而让您日常的工作变得相当地简单。我也介绍了 Mylar 如何使用 Eclipse 视图来帮助您聚焦于手边的任务,并为个人及团队的使用凸现这些任务的上下文。
Mylar 背后的哲学是少就是多。它将集成的任务管理和自动上下文管理工具结合使用,使您能够在不丢失上下文的情况下进行多任务处理,并确保您只需要查看感兴趣的信 息。一个针对于将 Mylar 用于日常工作的业内开发人员所做的现场用户的研究已经验证了 Mylar 的任务上下文模型(参见 参考资料)。根据统计,这些用户的生产率有了显著的提高。而且,由于进行了数千个 bug/增强报告,Mylyn 2.0 很快成熟起来,满足其快速增长的用户社区的需要。自从在 2004 年 8 月创建 0.1 原型以来,我一直将 Mylyn 用于我的所有工作。和很多其它 Mylyn 用户一样,我已经无法想象还要手动寻找并识别工作中的相关信息的情景了。我完全依赖 Mylyn 来管理工作中的大量以任务为中心的交互和多任务处理。
如果 Mylar 支持您的任务存储库,它能使您的日常工作变得更加简单、更加有效且更加专注。如果它不支持您的任务存储库,您可以试着用它来完成个人任务。不管何种情况, 都请使用 Bugzilla 集成来给出回馈并为您愿意看到被支持的其他连接器投票。(参见 参考资料)。您的贡献将帮助我们进一步改进 Mylyn,因为它将持续围绕严密的回馈机制快速发展,该工具本身允许我们通过用户社区建立这种回馈机制。其他 Mylyn 提交者和我一样,都期待收到您的回馈。
致谢
Mylyn 能获得成功并且走到现在,很大程度上得益于大量的用户参与,他/她们报告 bug 并贡献补丁。正是这种协作让 Mylar 从一个研究原型发展成为了 Eclipse 用户在日常工作中所依赖的一个重要部分。
Athen O'Shea、Robert Elves、Gail Murphy 和 Ducky Sherwood 对本文提供了有帮助的回馈。
关于作者
Mik Kersten 是 Tasktop Technologies 公司的总裁和 CTO,Eclipse Mylyn 项目主管,AspectJ 项目的提交者,并且是 Eclipse Architecture 委员会的成员。在 Xerox PARC 担任研究科学家期间,Mik 创建了第一个面向方面的编程工具支持,并实现了面向 JBuilder、JBuilder、NetBeans、Visual Studio 和 Emacs 的 AspectJ 插件。在 British Columbia 大学攻读计算机科学博士学位期间,他创建了 Mylyn 和 Task-Focused UI 技术。Mik 的兴趣是构建一些工具,使在大型系统上的工作变得更加简单轻松。
http://www.ibm.com/developerworks/cn/java/j-mylyn1/index.html