天天看点

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

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

<a>mylyn 简介</a>

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

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

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

含活动任务的任务列表(task list)和当天计划好的 bugzilla 报告

由任务上下文管理的更改集

具有离线支持的富任务编辑器

eclipse package explorer 上以任务为中心的模式

<a><b>图 1. mylyn 的 task-focused ui </b></a>

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

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

<a href="http://www.ibm.com/developerworks/cn/java/j-mylyn1/#ibm-pcon">回页首</a>

<a>任务储存库连接器</a>

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

查询(queries):查询是用于将各组任务取回到 mylyn 的 task list 中的一种机制。查询编辑和检索功能特定于连接器,它们可以提供一个基于 eclipse 的查询设计器,或者从服务器中的一个帐户检索查询,或者同时提供这两种功能。 

富编辑(rich editing):可以用一个集成的编辑器编辑任务和查询。该功能提供任务和其它结构化元素的超链接,以及 eclipse 和桌面集成,例如拖放功能。提供富编辑的连接器仍然可以提供在 eclipse 的嵌入式浏览器中打开任务和查询的功能。 

离线(offline)支持:可以在断开连接的情况下工作,直接访问文件和查询,而不必等到与服务器建立连接。该功能还提供更改通知,可以使用 task list 作为任务收件箱,而不用依赖于电子邮件客户端。

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

<a>安装和设置</a>

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

<a><b>图 2. 选择 mylyn 特性和储存库连接器 </b></a>

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

<a><b>图 3. 欢迎屏幕</b></a>

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

<a>任务和查询</a>

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

本地任务存储在 eclipse 工作区,提供基本的任务管理特性,例如调度。本地任务是私有的,并只对您可见。

储存库任务存储在与一个外部应用程序或服务器对应的一个任务储存库中。储存库任务常常在多人之间共享,但是仍然提供所有的本地任务功能,例如个人调度和注解。

<a>本地任务初解</a>

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

在 task list 视图上单击 new task工具栏按钮,创建一个新任务。

选择 local tasks储存库。

输入一个任务概要。

单击 eclipse 工具栏上的 save或按 ctrl+s,保存更新后的描述。

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

<a><b>图 4. 编辑本地任务</b></a>

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

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

为了熟悉 mylyn 的图标模式,可以使用 task list 视图菜单中的 show ui legend动作(见图 5)。 我将在整个文章中引用该图标模式。

<a><b>图 5. mylyn ui 图例</b></a>

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

<a>添加任务储存库</a>

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

本地任务:用于使用存储在 eclipse 工作区的简单任务的一种特殊的储存库。

共享任务:如果您的团队使用共享任务储存库,例如 bugzilla 服务器,那么可以使用这种储存库来与其他人协作完成任务。 

项目管理任务:有些连接器,例如 xplanner,提供用于将任务组织到项目阶段和用户事件中的任务管理功能。

bug 和增强报告:这是一种特殊的任务,通常在产品用户与支持团队之间共享。mylyn 提供集成的 bug 报告,以帮助跟踪与其它任务一起归档的 bug 报告。

要创建一个任务储存库,可以打开 task repositories 视图(window &gt; show view &gt; mylyn &gt; task repositories),或者使用一个包含它的透视图,例如 team synchronizing 透视图。打开后,使用视图的工具栏添加一个新的储存库。然后,可以输入储存库凭证和任何其它连接细节,或者从可用模板中选择一个模板。图 6 中的 bugs.eclipse.org 储存库是在安装 mylyn 时自动创建的,这是为了便于报告 mylyn 和 eclipse 的 bug 和特性请求。

<a><b>图 6. 添加 eclipse.org bugzilla 储存库</b></a>

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

<a>查询储存库</a>

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

<a><b>图 7. 创建新的 bugzilla 查询</b></a>

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

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

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

对于可以通过 web 浏览器访问的连接器,mylyn 集成了用户已熟知的 web ui,如果 mylyn 的富编辑功能不支持某些操作,您可能需要依赖于这个 web ui。可以右键单击任何任务或查询,以便用 web 浏览器打开它(eclipse 浏览器设置位于 window &gt; preferences &gt; general &gt; web browser中),具有关联 url 的所有储存库任务都可以通过 task editor 的工具栏或者任务的弹出菜单上的 open with browser 动作打开。还可以用浏览器打开 bugzilla 查询(例如,假设您想将它粘帖到一封电子邮件中,以便使用 bugzilla web ui 对它进行改进)。然后,可以按照 new query 向导的提示粘帖它,从而使用更新后的 url 在 task list 中创建一个新的查询。

<a>搜索任务</a>

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

<a><b>图 8. 任务搜索和结果</b></a>

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

<a>创建储存库任务</a>

要创建新的储存库任务,可以在 task list 工具栏或 file &gt; 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 报告。

<a><b>图 9. 集成的 bug 报告和重复检测</b></a>

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

<a>编辑和同步</a>

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

<a><b>图 10. 储存库任务编辑器和内容辅助</b></a>

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

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

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

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

<a>附件</a>

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

<a>任务管理和个人计划</a>

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

为您正在开发的产品解决产品缺陷并分析特性

由您的同事完成的任务,这些同事包括您的搭档、上司或属下

针对您所使用的框架、api 和软件的 bug 报告

个人待办事项和提醒

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

<a>预定日期与到期日期</a>

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

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

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

<a>聚焦工作周任务</a>

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

当任务到达预定日期之后,任务和它的容器(例如一个查询)变成红色,桌面上显示一个弹出窗口作为提醒。(和其它 mylyn 颜色和字体设置一样,可以用 window &gt; preferences &gt; general &gt; appearance &gt; colors and fonts将任务设置为高亮显示)。当任务被推迟到将来的日期执行时,window &gt; mylyn &gt; tasks &gt; scheduling中设置的工作日起始时间决定任务被调度的时间。通过更改工作日的结束时间,可以确定被定为那天调度的任务在什么时间到期。

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

预定在本周执行或者超过预定日期的任务

有新的更改和注释的储存库任务

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

逾期任务为红色,总是显示在列表的顶部。

调度为在今天执行的任务以蓝色突出显示。

调度为在本周靠后时间执行的任务为黑色。

今天完成的任务为绿色。

之前完成的任务为灰色。

<a><b>图 11. 调度任务</b></a>

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

<a>每天执行预定的任务</a>

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

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

在工作周的开始,任务列表包含很多红色的任务,这些任务是之前定在本周执行或者推迟到本周执行的。

红色不是令人愉快的颜色,所以您使用上下文菜单将每个任务安排在今天或本周靠后某一天执行。当所有红色都消失之后(定在今天执行的任务变成了蓝色,定在本周靠后时间执行的任务变成黑色),您可以查看这周的日程安排,确认它符合实际,必要时推迟或委托他人执行任务。

当 task list 被激活时,可以将鼠标悬停在 task list 顶端附近的绿色进度条上(如图 11 所示),以检查是否为工作周安排了太多的任务。如果有些任务要比其它任务花费更长的时间,那么可以打开任务的 planning 区,调整预计时间,这样可以相应地调整工作周进度条。

在工作日的最后,所有已经完成的任务变成了令人愉快的绿色。然后,您可以检查剩下的蓝色或红色的任务,将它们推迟到明天或更靠后的日期。

在第二天的开始,安排在这一天的所有任务都为蓝色,而所有逾期的任务为红色。在安排工作日时,您会将某些任务推迟到本周靠后的日期,因此可见的蓝色任务表示您可以当天完成的所有任务。任务完成后变为绿色。

在工作周结束时,滚动条应该会消失,列表上的大多数任务应该都变成绿色。

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

<a>创建工作集</a>

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

<a><b>图 12. 编辑和切换工作集</b></a>

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

<a>过滤、分类和搜索</a>

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

通过视图菜单中的 sort by项,根据 priority 之类的属性分类。

使用视图菜单中的 filter priority lower than项,根据优先级进行过滤。

通过视图菜单过滤所有 archive 类别和完成的任务(建议启用该功能,在聚焦模式下会自动启用)。

通过单击 go into过滤特定类别或查询中的任务(在聚焦模式下同样适用)。

通过拖放操作手动分类;将储存库任务分类到各类别中。

图 13 显示了可用的手动 task list 过滤器:

<a><b>图 13. 手动 task list 过滤器</b></a>

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

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

<a>备份和导出</a>

聚焦模式使用得越频繁,您的 task list 就变得越有价值。默认情况下,task list 的自动备份已被启用,可以通过 window &gt; preferences &gt; mylyn &gt; tasks设置备份目录。 要从备份恢复 task list,可以选择相应的单选按钮,并选择一个备份快照。默认情况下,mylyn 每天为所有任务数据制作快照,并保留 30 天的备份(通过 preferences &gt; tasks配置)。可以通过单击 file &gt; export导出任务。

<a>第 1 部分结束语</a>

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

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