将 OneNote 2007 与文档管理系统集成

Alex Simmons, Microsoft Corporation

适用于: Microsoft Office OneNote 2007

摘要:了解如何创建 Microsoft Office OneNote 2007 加载项,以将 OneNote 与文档管理系统集成。阅读 OneNote 概要,并基于 OneNote API 设计选项。

本页内容

关于 OneNote 文件层次结构 关于 OneNote 文件层次结构
关于 OneNote 文件 关于 OneNote 文件
可能的设计选项 可能的设计选项
结束语 结束语
其他资源 其他资源

关于 OneNote 文件层次结构

在 Microsoft Office OneNote 2007 文件层次中,“节”相当于单个的 OneNote 文件,并且拥有文件扩展名 .one。但在 OneNote 用户界面 (UI) 中,最大组织单元是笔记本。每个笔记本中可以有许多节,这取决于用户首选项。

在 OneNote UI 中,基本上有五种不同类型的组织结构:

  • 笔记本

  • 节(.one 文件)

  • 节组

  • 子页

对于哪些结构类型可以存在于其他结构片段中,存在如下的层次结构规则:

笔记本可包含:

    • 子页

  • 节组

    • 节组

节组可包含:

    • 子页

  • 节组

节可包含:

  • 子页

用户可以有多个笔记本。默认情况下,OneNote 提供三个笔记本。每个笔记本含有如下默认节和页作为引导内容:

  • Work(工作)

  • Personal(个人)

  • OneNote Best Practices(OneNote 最佳实施方案)

下面是对文件系统中每个 UI 结构片段的表述:

  • 笔记本始终是文件夹。

  • 节组始终是文件夹。

  • 节始终是 .one 文件,并且一直都是笔记本(文件夹)或节组(文件夹)的子项。

在 OneNote 2007 Beta 2 中,如果有文件附件存储在节中的任何页上,则会创建一个丛集文件夹作为 .one 文件的同级。此丛集文件夹含有该节的页上所存储文件的副本,并且必须随着该节的移动而相应移动。如果丛集文件夹未移动因而始终是该节文件的同级,则当您试图在 OneNote UI 中打开附件时,这些附件不会再起作用。

OneNote 2007 发行版本的一个改动就是将附件同 .one 文件一起存储。除非节存储在 Microsoft Office SharePoint Server 2007 库中,否则丛集文件夹将不再存在,这种情况下,用来存储附件的丛集文件夹将由 OneNote 自动创建。

关于 OneNote 文件

不能关闭 OneNote 应用程序,也不能关闭节、节组、页或者子页。但是可以关闭笔记本。

用户一般不会选择关闭笔记本。他们通常会让笔记本无限期地打开,这样每次关闭并重新打开 OneNote 时,UI 中显示的文件将保持不变。通常,用户只会在他们完成了某个项目或者很少查看该笔记本以及只想看到较少的笔记本时才关闭笔记本,目的是将其从 UI 中删除。

与其他 Microsoft Office 文件类型不同,用户不能打开、编辑然后关闭 OneNote 文件。应认为用户未关闭这些文件。

文件自动保存

对文件所做的任何更改都将自动得到保存。每隔一段时间间隔就会自动进行保存,该时间间隔因文件实际存储位置而异:

  • 本地驱动器:5 秒

  • UNC 共享:30 秒

  • SharePoint 库:10 分钟

  • HTTP 共享:10 分钟

默认情况下,笔记本存储在用户的“我的文档”文件夹下。

使用 OneNote 缓存

当 OneNote 将更改保存到文件时,它首先将更改保存到 OneNote 缓存,然后进行复制并与实际 .one 文件合并。.one 文件可能存储在本地驱动器、共享或 SharePoint 库中。缓存可以让用户连续访问他们的笔记本,而与文件实际存储位置或者用户是在线还是离线无关。用户可以离线编辑文件,OneNote 会在文件再次可用时自动将这些更改并入文件。这也避免了 OneNote 每次进行复制时从缓存写入整个文件。只需复制更改内容并合并到实际文件中即可。

如果您的文档管理系统支持 SMB/CIFS 或 WebDAV,或许可以直接打开存储在文件管理系统中的文件。但是,如果您的版本历史记录模型要为每个版本的文件都创建一个副本,则此过程不会顺利执行,因为 OneNote 会在编辑这些打开(和签出)的文件时不断对其进行更新。

默认情况下,缓存文件存储在 C:\Documents and Settings\user name\Local Settings\Application Data\Microsoft\OneNote\12.0。

  • 缓存文件名:OneNoteOfflineCache.onecache

  • 缓存丛集文件夹名:OneNoteOfflineCache_Files

注意:

实现以下两项不需要使用缓存或了解缓存知识。此信息仅供澄清所述内容。

文件附件和 .one 文件

OneNote UI 中显示的每个节都有一个 .one 文件。如果有插入到节中的附件(插入的文件,或音频/视频记录文件),则这些附件会同时存储到 .one 文件中。当用户打开、编辑、保存和关闭附件(例如 Microsoft Office Word .doc 文件)时,OneNote 会更新存储在 .one 文件中的附件的副本。

注意:

对于 OneNote 2007 的 Beta 2 版本,发布 .one 文件时不会包括任何文件附件。这些附件会被保存到丛集文件夹中。OneNote 2007 发行版本将它们作为 .one 文件的一部分保存。

为现有 OneNote 工具栏添加按钮

自定义加载项可以为 OneNote 工具栏添加多个按钮,但有以下限制:

  • 必须将按钮添加到现有工具栏上。OneNote 不支持以编程方式创建自己的工具栏。

  • 按钮显示在指定工具栏的末端。

可能的设计选项

以下是针对两种不同方案进行优化的解决方法:

  • **方案一:签出文件可见。**如果您的客户通常一次只处理文件管理系统中的几个文件,并且这几个文件不经常变动,则可以考虑只在 OneNote 中显示签出文件。

  • **方案二:所有文件均可见。**如果您的诸多客户彼此合作频繁,并且许多参与者都更新同一组文件,则您会希望使存储在文件管理系统中指定项目的所有 OneNote 文件均能在 OneNote 中看到。此选项可以让参与者看到其他人在 OneNote 中所做的更改和创建的新文件。

方案一:签出文件可见

此方法与从文档管理系统中签入或签出标准文档类型文件(例如 .doc 文件)的方法类似。当用户从文档管理系统签出文件以在 OneNote 中进行编辑时,OneNote 将在笔记本中创建一个名为“Checked Out Notes”(签出笔记)的副本。当文件签出时,用户可根据需要更改文件,包括从 OneNote 缓存对其进行离线编辑。用户甚至可以将文件移动到一个共享笔记本中,以使其他能访问此共享笔记本的人员可以使用 OneNote 多用户编辑功能进行合作。当用户结束编辑并签入文件时,OneNote 会从 UI 中删除这些文件,并将已更改文件的副本保存到文档管理系统中。此模型只在 UI 中显示从文档管理系统中签出的文件。

OneNote 2007 Beta 2 不会将文件附件(例如嵌入的 .doc 文件、音频或视频记录)作为 .one 文件的一部分进行保存。对于 OneNote 2007 Beta 2,您可以使用 .one 格式进行测试,但要明确文件附件将不再是 .one 文件的一部分。

方案二:所有文件均可见

虽然此方法更费力,但它却提供了将 OneNote 与文档管理系统集成的最佳解决方案。

选择此方法时会认为您的文档管理系统在其 UI 中包括相当于“项目”的对象。文档管理系统与 OneNote 的映射即是文档管理系统中的“项目名”与 OneNote 中的“笔记本名”的映射。

此方法为一个 OneNote 笔记本中的特殊项目显示存储在文档管理系统中的所有 OneNote 文件。默认情况下,为用户提供文档管理系统中存储的 OneNote 文件的只读视图。当文件在文档管理系统上进行更新时,加载项会定期查询文档管理系统并更新 OneNote 中笔记的视图。

用户可以从 OneNote 签出 OneNote 文件、对这些文件进行更新,然后再签回这些文件,这样便可更新存储在文档管理系统中的文件。在方案一中,用户也可以利用 OneNote 笔记中的现有内容在文档管理系统中创建附加文件,方法是将笔记保存到文档管理系统中。在此模型中,加载项必须执行以下操作:

  • 在文档管理系统中查询更改并更新用户计算机上的文件。

  • 为用户计算机上未签出的 .one 文件设置只读状态。

  • 遵循相同的签出、签入过程,并将这些过程保存为方案一。

下面一节大致描述了如何实现此方案。尽管未提供逐步说明,但目的在于讲述其实现的可能性,并启发您为文档管理系统和 OneNote 客户创建更好的体验。

实现方案一:签出文件可见

要实现此方案,需要为 OneNote UI 添加三个按钮:

  • Save Notes to DMS(将笔记保存到 DMS)

  • Check Out(签出)

  • Check In(签入)

1. OneNote 中的文档管理按钮

.

以下部分将说明所需的按钮行为。

按钮行为:将笔记保存到 DMS

情况 1 :当前页面是签出文件的一部分

加载项在文件中找到指示文件已签出的属性。

加载项将发布本地文件并替换存储在文档管理系统中的文件,且不签入文件。

根据文档管理系统跟踪版本历史记录的方式,您可能不希望替换存储在文档管理系统中的文件。可能想要原样保留该版本,并将新版本 .one 文件保存到文档管理系统中。

情况 2 :当前页面不在签出文件中

加载项在文件中未找到指示文件已签出的属性。

方法一(推荐)。向用户提供具有范围选项的对话框。用户可以将当前选择内容、页面、页面组或节作为一个新文件保存到文档管理系统中。选择范围后,用户可以浏览文档管理系统的层次结构,以选择文件的保存位置及名称。符合特定范围的新文件将保存到文档管理系统中。

保存文件以后,将出现另一个对话框,询问用户是否希望签出文件以继续编辑存储在文档管理系统中的版本。

如果用户签出文件,OneNote 将打开指定文件夹(例如“Checked Out Notes”(签出笔记)文件夹)中的文件,这与用户使用“Check Out”(签出)按钮签出文件完全相同。

如果用户不签出文件,则用户将停留在当前页面,且无法编辑存储在文档管理系统中的文件。

方法二(备选)。根据上下文假定范围,不为用户提供控制范围的选项。在这种情况下,将默认选项设置为节(在 OneNote 中相当于文件)是一个逻辑选择。

可通过使用 Publish 方法将 OneNote 文件保存到文档管理系统中:

  • OneNote 2007 Beta 2 将 .one 文件发布到文档管理系统中。附件和音频文件会放置在 .one 文件旁的丛集文件夹中。

  • OneNote 2007 的发行版本会将 .one 文件发布到文档管理系统中。附件和音频文件包括在 .one 文件中。

按钮行为:签出

按“Check Out”(签出)按钮将打开一个对话框,在该对话框中用户可浏览其文档管理系统以签出文件。随后加载项会将指定文件复制到指定的文件夹笔记本中,例如“Checked Out Notes”(签出笔记)文件夹。

如果笔记本尚不存在:

  • 方法一(推荐)。按“Check Out”(签出)按钮时会提示用户指定该笔记本的创建位置,随后在指定位置创建笔记本并将签出文件复制到该位置。

  • 方法二(备选)。按“Check Out”(签出)按钮时会在用户的“我的文档”文件夹中(\OneNote Notebooks 目录下)创建新的笔记本,并将签出文件复制到该位置。

如果笔记本已经存在,则按“Check Out”(签出)按钮会将文件复制到笔记本中。

应在文件上存储一个属性,以便加载项可在文件签出时快速而可信地告知该属性。

  • OneNote 2007 Beta 2 会将 .one 文件复制到指定的笔记本中。您还必须将包含附件和音频文件的文件夹复制到 .one 文件旁的文件夹中,以使它们能够正常工作。

  • OneNote 2007 的发行版本会将 .one 文件保存到指定的笔记本中。

加载项将打开所复制的 .one 文件,并打开节中上次修改的页面。

按钮行为:签入

单击“Check In”(签入)按钮应将文件保存回文档管理系统中,采用的方式与单击“Save Notes to DMS”(将笔记保存到 DMS)按钮相同。

它还应从指定的签出笔记本中删除文件(如果创建了丛集文件夹,还会将相应丛集文件夹删除)。

如果当前节(用户正在查看的节)不是签出文件,则禁用该按钮。

用户可将签出文件从默认笔记本移动到任何其他已打开的笔记本中。还应能从该位置签入文件并在签入之后将其从笔记本中删除。

也应创建文件的隐式签入。

目前,多数与 Microsoft Office 集成的文档管理系统会在文件关闭时自动签入打开的文件。

  • 方法一(推荐)。如果用户关闭 OneNote 时仍有签出的文件,则会向用户显示一个对话框,其中包含以下选项:

    • Check In(签入)文件签入。

    • Save only(仅保存)文件保存到文档管理系统中,但文件仍处于签出状态。

    • Keep Checked Out(保持签出)。文件仍处于签出状态;不被保存或签入。不执行任何操作。文件会一直存储在指定的笔记本中,并可在下次 OneNote 打开时供用户使用。

    可能您还希望提供一个复选框,该复选框包含不再次提示此操作的选项以及设置默认操作的方式。

  • 方法二(备选)。签入文件。

如何实现

当 OneNote 关闭时,它将调用所有活动的加载项以进行释放。当加载项获得释放调用时,它不会立即释放。它将执行以下操作:

  1. 打开一个对话框,提示用户指明如何处理打开的文件。

  2. 如果用户选择保持文件处于签出状态,请转至步骤 8。

  3. 显示一个进度计或对话框,其中显示“Checking in the file to the document management system”(正在将文件签入文档管理系统)或“Saving the file to the document management system”(正在将文件保存到文档管理系统)。

  4. 将文件发布到文档管理系统。

  5. 如果用户选择保存但不签入,请转至步骤 8。

  6. 如果用户选择签入,会将文件签回文档管理系统。

  7. 从 OneNote 层次结构中删除本地存储的文件。

  8. 关闭进度对话框。

  9. 完成加载项释放,以使 OneNote 能够关闭。

尽管 OneNote 用户可以打开多个 OneNote 窗口,并且所有这些 OneNote 窗口均可显示加载项按钮,但在关闭其中一个窗口时,加载项并不接收释放调用,除非该窗口是最后一个打开的窗口(此即表明 OneNote 进程即将关闭)。因此,加载项并不会在每个 OneNote 会话中接收多次释放调用。

查看存储在文档管理系统中的 .one 文件

存储在文档管理系统中的所有 .one 文件都应标记为只读。这样,当用户打开文件进行查看时,将无法在 OneNote 中编辑文件,并且可能弄不清是否可签入其对文件所做的更改。OneNote 会在“Recently Viewed Notes”(最近查看的笔记)文件夹中自动打开此类文件。

如果用户已将文件签出,则直接从文档管理系统中打开的文件仍会在“Recently Viewed Notes”(最近查看的笔记)文件夹中打开。

加载项还可以查看文件当前是否已由该用户签出,如果是,则将用户导航到已签出文件,而不是打开“Recently Viewed Notes”(最近查看的笔记)文件夹。

在文档管理系统中签入或签出文件

用户从文档管理系统 UI 访问存储在文档管理系统中的 .one 文件的权限与访问其他类型文件的权限相同。他们应能从文档管理系统直接签入或签出 .one 文件。为此,文档管理系统必须使用加载项签出文档管理系统中的文件,并在 OneNote 中将文件打开。当签出发生在 OneNote 的加载项 UI 中时也采用与此相同的方式。

实现方案二:所有文件均可见

您可以重复利用前一方案中所述的许多相同策略。本部分描述实现方案二所特有的详细信息:所有文件均可见。

添加 DMS 项目按钮

要实现此方案,您需要添加一个额外的按钮,即“Open DMS Project”(打开 DMS 项目)按钮。如果用户单击此按钮,则用户可浏览文档管理系统并选择项目。在本例中,术语“项目”用于描述文档管理系统中的一种组织形式。具有某种形式的父层次结构是很有用的,这可使添加到文档管理系统同一项目中的新文件显示在 OneNote 的同一项目笔记本中。加载项的作者应基于文档管理系统的组织决定仔细查看这一层次结构的最佳方式。您希望:

  • 确保加载项将所有 .one 文件复制到 OneNote 中的新笔记本中。

  • 让用户为笔记本命名并指定保存位置。或者,可选择将项目名称用作笔记本名称,并将其保存到 OneNote 文件的默认位置。

  • 确保复制到笔记本中的文件在明确签出前为只读文件。可在文件系统中使用 API 设置只读属性。

如果文档管理系统的项目中存在组织结构(例如不同 OneNote 文件的嵌套文件夹),则您可在 OneNote 中复制此结构,方法是在笔记本文件夹中创建相同的文件夹结构。在 OneNote UI 中,这些文件夹将映射到节组。节组可包含其他节组或节,从而使您可以复制在文档管理系统中可能遇到的组织结构。

OneNote 与文档管理系统同步

由于 OneNote 默认情况下以只读方式在文档管理系统中打开文件,所以您只能在用户签入新版本文件时才能在文档管理系统中保存对文件的更改。

加载项应定期查询文档管理系统以检查新文件或更新后的文件。如果可能,您还会希望文档管理系统直接通知加载项,而不是让加载项查询文档管理系统。

如果加载项发现新文件或更新后的文件,则它应将新文件复制到 OneNote 笔记本中,替换旧文件(如果存在)。更新后的文件在 OneNote 中应仍为只读。

OneNote 中签出文件

如果用户在查看只读文件时单击“Check Out”(签出),则加载项应在签出文件之前查询文档管理系统,以查找文件更新:

  • 如果用户具有最新版本,则加载项应删除 OneNote 中文件的只读属性。可在文件系统中使用 API 设置只读属性。

  • 如果文档管理系统中的版本是最新版本,则加载项应下载文件的最新副本,然后再删除文件的只读属性。

  • 如果文档管理系统中的文件由另一用户签出,则加载项应将该信息提示给用户。

签出之后,加载项应在文档管理系统中将该文件标记为已签出。

应明确的是,虽然并不常见,但通过使用文件系统,用户能够对用户未签出的只读 OneNote 文件进行写访问。由于这可能导致文档管理系统与 OneNote 中的版本不匹配,所以加载项应定期检查该属性,并警告用户如果使未签出文件可写入,所做更改可能会在签入或签出文件时丢失。

OneNote 中显示签出状态

OneNote 没有状态栏或传统的“文件属性”对话框。

在 OneNote UI 中显示文件签出状态的最佳方式就是在文件名中添加字符串 (checked out)。OneNote API 支持更改由加载项插入的文件名称。

您应决定是更新存储在文档管理系统中的名称还是只更新 OneNote 中的文件的名称。如果文档管理系统将文件报告为签出,则加载项只能重命名在 OneNote 中打开的文件,而不能重命名文档管理系统中的实际文件。

加载项还可以将签出文件的人员的用户名添加到文件名中作为附加信息,例如 (checked out by user name)。

OneNote 签入文件

如果用户单击“Check In”(签入),则加载项应将 文件发布到文档管理系统中,如方案一中所述:签出文件可见。

加载项不应象方案一那样删除该文件的 OneNote 副本,而应将文件标记为只读。

OneNote 中跟踪文档管理系统文件

除了为签出文件附加属性外,还应为所有从文档管理系统中打开的文件附加特殊属性,以便在加载项查询文档管理系统时,即使用户将文件移动到不同笔记本中,也能轻松在 OneNote 中找到这些文件。

第二个属性可特定于文档管理系统项目,也可以是一种常规文档管理系统关联。

OneNote 中查看或访问其他应用程序

OneNote 不是一个文件浏览器。OneNote UI 只能列出笔记本、节和节组。

如果有其他文件类型存储在文档管理系统项目中,但没有存储在 OneNote 丛集文件夹中,则 OneNote 无法显示这些文件。

加载项可以在现有节中创建自己的只读节或页面以显示其他项目文件,还可将这些节或页面直接与文档管理系统中的文件超链接。这是加载项在进行查询时需要检查和更新的另一项。因为加载项可以直接从 OneNote 页面中添加或删除内容,所以它可以使超链接列表与文档管理系统中的文件保持同步。

但是,不应以这种方式创建指向存储在 OneNote 丛集文件夹中的文件的链接。这些文件代表 OneNote 页面上的附件,因此如果这些文件包括在超链接列表中,将使用户混淆。

结束语

OneNote 2007 有多种方式使用文档管理系统。希望本文提供的一些概念使您能为客户创建最佳体验。

其他资源

Microsoft Office 开发人员中心:OneNote 开发人员门户(英文)

© 2006 Microsoft Corporation 版权所有。保留所有权利。使用规定。

转到原英文页面