65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 Wiki 进行知识共享和 SQL Server 数据库文档

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.89/5 (59投票s)

2004年2月8日

23分钟阅读

viewsIcon

454927

downloadIcon

2699

本文介绍了如何使用 Wiki 进行知识共享和数据库架构文档。

Wiki home page

引言

本文介绍了如何使用 Wiki 进行知识共享和数据库架构文档。

与 CodeProject 的一般文章不同,本文更多地是关于改进开发实践,而不是代码本身。我们将讨论什么是 Wiki 以及如何使用它。希望通过本文的概述,您能够了解它如何帮助您和您的团队共享信息。

在 Wiki 概述之后,我将讨论如何定制一个免费的 Microsoft Active Server Pages (ASP) 实现,并向 Wiki 添加一个自定义宏,用于显示 SQL Server 2000 数据库中的表信息。接着将介绍如何安装代码并设置您自己的 Wiki。

需要指出的是,我并非 Wiki 实现的作者,本文中我只提出了一些小的定制和添加;我不会深入探讨此 Wiki 的内部实现。

我们将使用 Laurens Pit 创建的 Open Wiki 作为我们 Wiki 的基础;它运行在 Microsoft Internet Information Server (IIS) 上。另请注意,我是在 Laurens Pit 制定的 许可条款 下使用 Open Wiki 代码的,他不对此处提出的更改进行认可或推广。标准的 Open Wiki 许可仍然适用,包括:“本软件由版权所有者和贡献者“按原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、特定用途适用性的暗示保证。在任何情况下,摄政王或贡献者均不对任何直接、间接、偶然、特殊、惩戒性或后果性损害(包括但不限于采购替代商品或服务;使用、数据或利润损失;或业务中断)承担责任,无论其原因以及基于何种责任理论,无论是合同、严格责任或侵权(包括疏忽或其他),即使已被告知此类损害的可能性。


好了,言归正传……

什么是 Wiki?

简而言之,

“Wiki 是一种在线协作工具——一个网站,用户只需使用网络浏览器(无需编程知识)即可即时更改和发布页面。页面会自动创建并相互链接。

Wiki 是一种协作式开放内容讨论。这意味着什么?

  • 它是协作式的,因为它依赖于读者的贡献——越多越好!
  • 它是“开放内容”,因为任何人都可以为网站内容做出贡献。

它允许任何人改进网页,并消除了 Web 作为单向通信媒体的局限性。”


那么这到底对我们意味着什么呢?嗯,我曾将 Wiki 用于我参与的多个不同项目的信息共享,事实证明,它比传统文档更适合作为需求和开发信息的存储库。

通常,一个人会编写某个特定功能的工作原理,然后将其保存为 Microsoft Word 文档,放在某个文件共享中。当人们不知道在哪里找到这些信息时,问题就出现了,而且保持其最新似乎是一项繁重的工作。

通过使用 Wiki,您可以创建一个集中存放项目所有文档的位置,只需向他人提供 URL 即可共享。最好的部分是,如果他们有任何新信息或发现错误,他们就可以更新和添加内容。我们将在接下来的章节中讨论这在实践中如何运作。

Wiki 为何有效?

再次引用一下,

“Wiki Wiki(或简称‘Wiki’)的理念是,当每个人都被允许甚至鼓励撰写和重构任何页面时,内容的质量会得到提高。

如果人们不勇敢,Wiki 就无法运作。你必须积极主动地进行修改,纠正语法,添加事实,并使语言精准。没关系——这是每个人都期望的。所以你不应该问,“为什么这些页面没有经过校对?”——你应该直接修正它。这确实需要一定的礼貌,但令人惊讶的是,它奏效了。

让我们绝对清楚:如果有人写了一篇质量低劣的文章,不要担心他们的感受。更正它,补充它,如果它完全是浪费时间,直接用更好的内容替换它。这正是 Wiki 的全部意义!而且无论如何,什么都不会丢失——它都保留在页面的版本历史中,因此必要时可以恢复。当然,其他人也会大胆无情地编辑你写的东西。不要往心里去。他们和我们所有人一样,只是想让 Wiki 的内容尽善尽美。”


最初的 WikiWikiWebWard Cunningham 建立,他发明并命名了 Wiki 概念,并制作了 Wiki Wiki 服务器的第一个实现。但还有许多其他的,包括免费的和商业的。在 Google 上快速搜索一下会提供更多信息。

Snipsnap (Java SourceForge) 和 FlexWiki (ASP.NET) 是其他开放实现,Atlassian 最近发布了 Confluence,一个令人印象深刻的商业 Wiki 系统。


甚至在互联网上还有一个 Wiki 百科全书供人们贡献。


尽管互联网上有很多 Wiki,人们似乎也没有滥用它们;但我建议先在您的团队内部启动一个,并与信任的读者一起熟悉它。

活文档

如果有人读过 Microsoft Press 的书,《分析需求和定义 Microsoft® .NET 解决方案架构,MCSD 考试 70-300》,他们应该听说过“活文档”这个术语。

Microsoft 解决方案框架 (MSF) 的 流程模型 提出了软件开发的最佳实践和理念。其中之一就是创建活文档,并让项目所有相关方共享信息和时间表。使用 Wiki 绝对有助于这一过程,您可以将 MSF 模板 作为许多页面和章节的起点。

Microsoft Technet 对 MSF 及其如何帮助您的开发流程有很好的概述。

背景

我非常赞成项目上的出色文档;有些开发人员喜欢保留一些零碎信息,认为这让他们变得不可或缺。但我喜欢这样想,如果我能分享我的领域特定知识,我希望能转向其他新的激动人心的项目,而不会带走开发知识。

也许有点奇怪,我实际上“喜欢”编写文档,作为软件开发不同方面的一部分:需求收集、设计、规划、编码、测试和发布。当我参与的系统发布时,无论是内部发布还是作为产品项目外部发布,都应该将其视为一个完整的作品,其中实际的应用程序、培训、文档和支持元素都以最高水平制作。

所以这也许就是为什么我认为 Wiki 在让所有相关方了解情况方面能起到巨大帮助。


我们将使用的 Open Wiki 实现提供了所有基本的 Wiki 功能,也是我们将进行定制的代码库。您可以在 http://www.openwiki.com/ 在线试用 Open Wiki。

您可以从那里下载最新版本,它带有一个自动安装包。如果您想了解 Open Wiki 的实际功能,其网站是一个很好的起点,之后您可能想直接查看 ASP 源代码。ASP 页面并不多,因为大部分功能是通过 XSL 转换来实现的,这些转换从数据库中存储的 XML 构建出各个页面。

Openwiki website

此 Wiki 的基本功能

我们对最初的 Open Wiki 代码做了一些细微改动。

在我合作过的不同团队中,我们发现尽管 Wiki 旨在简洁明了,但添加一点颜色、设计和布局在最初吸引用户方面大有裨益。

因此,我们从上面干净的白色外观中添加了一些图像,并修改了几个页面的 XSL 文件,主要是 ow\xsl\ow.xsl

我们来谈谈页面的布局。顶部是横幅,您可以根据需要更改两张图片,替换项目标题和公司标志,即 ow\images\banner_logo.gifbanner_title.gif

接下来是主要部分,“首页”显然会将您带回起始页,“最近更改”将显示网站不同页面的修改历史。

如果您需要搜索网站中包含的信息,可以使用“查找页面”部分或右侧的搜索框。

网站所有页面的完整“标题索引”始终可用,还有一个“沙盒”区域,您可以在其中尝试 Wiki 页面标记的运作方式。

您可以设置“偏好设置”并访问 Wiki 编辑各个方面的“帮助”。这些部分将在本文后面详细讨论。

在版块横幅下方是一个面包屑导航,允许您导航回最近浏览的页面。

最后,还有“编辑页面”、“查看修订历史”、“打印”或“比较页面版本差异”的选项,以及页面最后编辑的日期。

同样,这些链接在页面底部也重复出现。

编辑你的第一个页面

现在我们来看看这种即时编辑和更新内容是如何工作的。

要编辑页面,您不需要访问网页 HTML 或类似的东西,您只需直接在网站中编辑内容。

您可以双击页面正文的任何位置或点击编辑链接。

不过在此之前,请导航到“沙盒”页面,您可以在这里尝试学习 Wiki 编辑的工作原理。

双击页面,它将变为编辑布局,如下所示

您只需直接在编辑文本区域中输入,并使用特殊的 Wiki 样式和宏标记信息。

例如,在一个单词周围加上两个星号(**)会使其在页面中显示为粗体

还有特殊的宏可用,例如 <TableOfContents>,它可以写出页面中的所有标题。

如果您点击“格式化帮助”链接,您可以找到所有可用的不同样式。

尝试在编辑区输入如下内容

许多人想知道为什么不直接使用 HTML 标签,例如 <b> <i> 等。但是对于非技术人员来说,学习这些标签需要相当多的时间,而 Wiki 格式化则更简单。

点击“保存”按钮后,页面将重新显示,看起来应该像这样

使用 Wiki 共享知识的真正好处在于,人们可以非常轻松地更改内容,正因为如此,人们倾向于努力保持其最新,特别是当他们在阅读时发现错误时。

通过点击差异(diff)链接,我们可以看到页面在编辑前是如何变化的。红色的划线文本已被删除,新的蓝色文本已插入。所有修订都保留下来,这意味着我们可以轻松地查看文档随时间的变化,并在必要时回滚。

创建你的第一个页面

现在我们已经编辑了一个页面,接下来看看如何创建一个新页面。这项任务常常让人们感到困惑,因为并没有一个明确的“新建页面”命令。

创建新页面的主要方法是,直接在您想要链接的“当前页面”中输入“新页面”的名称,如果名称符合设定的模式,它将自动处理。

模式是一个或多个大写字母,然后是一个或多个小写字母,再是一个大写字母,然后是任意字母(大写或小写)。

换句话说,只需将单词像这样连在一起(SmashWordsTogetherLikeSo)。

请注意,如果名称符合此模式,但与您当前查看的页面标题相同,则该名称不会被超链接。

一旦您提交了一个包含新链接名称的页面,您会注意到该名称后面出现一个问号(且名称仍以“连在一起”的形式存在)。

这意味着页面尚未定义,但如果您点击问号,它将自动生成(问号将从引用页面消失,并变成一个适当的链接——文本将“拆开”)。

如果你想写一个连字词但不想它被链接,只需执行以下操作之一

  • 在名称前使用波浪号 (~) 字符,例如 ~BatchJobs
  • 使用 <nowiki> 标签,例如 <nowiki>BatchJobs</nowiki>

点击问号超链接,它将带您到新创建的页面,您可以准备添加内容。

我们来看看其他链接到新页面的方法。

重命名链接

有时,让链接以不同于目标页面的名称出现会很有用。例如,您可能希望链接显示为“点击此处”而不是页面名称。您可以通过将链接括在方括号中并附加您希望显示的名称来实现这一点

[TutorialInfo How to use the system]

单字链接

要链接到单字页面,请使用两个方括号,如下所示

[[Rollout]]

应该看起来像这样:

查找页面

另一种方法是在“查找页面”部分,您可以搜索页面,如果页面不存在,Wiki 将创建它。

因此,正如您所见,维护现有内容和创建新内容都非常容易。这两个元素结合在一起,鼓励人们保持信息的相关性和正确性。


Wiki 版块

现在让我们更深入地了解前面讨论过的 Wiki 网站的不同部分。

最近更改

此页面显示网站最近 7 天、30 天或 90 天的修订。它对于查找网站或项目最新的添加或修改非常有用。

查找页面

当 Wiki 中只有少量页面时,导航起来似乎相当容易,但像往常一样,能够搜索特定单词或页面仍然很有用。

您可以按页面标题搜索,执行全文搜索(包括正则表达式),或者直接输入页面名称。全文搜索始终在横幅的右侧可用。

标题索引

页面也按字母顺序在此处列出,因此您也可以通过这种方式查找信息。

沙盒

您可以在这里测试内容,并尝试不同的 Wiki 标记元素如何影响页面布局。

用户偏好设置

虽然页面编辑可以是匿名的,但了解是谁编辑了页面通常会有所帮助,所以您应该在这里设置您的用户名和其他偏好设置。

帮助

由于编辑和格式化 Wiki 使用一种新型标记,您在首次使用时可能需要参考帮助页面。这些页面详细说明了如何格式化文本和表格,以及如何创建和链接页面。


RSS – 简易信息聚合

使用 Open Wiki 免费获得的一个很棒的功能是内置的 RSS 订阅源,它允许用户获取网站最新更改的订阅源。

点击网站右下角的 RSS 图像,您可以查看 RSS XML 内容。


RSS 是一种网络内容聚合格式;其名称是 Really Simple Syndication 的首字母缩写。

RSS 是 XML 的一种方言,所有 RSS 文件必须符合万维网联盟 (W3C) 网站上发布的 XML 1.0 规范。

但 RSS 的真正好处在于您使用聚合器来组合和浏览多个 Feed。

我使用 SharpReader,它使用 .NET 框架编写,由 Luke Hutteman 创建,作为 RSS 新闻阅读器。

它将自动轮询订阅的订阅源以获取新更改,并允许您在一个方便的位置查看来自多个提供商的内容。

您可能还听说过博客(weblogs),这是一种许多人现在发布的在线日记。这些也倾向于提供更改的 RSS 源;请参阅 http://blogs.msdn.com/ 以获取 Microsoft 博主的列表。

我推荐阅读 Raymond Chen 的历史文章,了解 Windows 为什么会以这种方式工作,以及 Tim Sneath 的文章,了解 Microsoft UK .NET 的最新动态。

模板

如果您创建一个以“Template”结尾的新页面,它将自动成为一个模板,您只需点击下方所示的链接,即可将其用于其他新页面

例如,我创建了一个会议模板,以便会议纪要可以轻松地以标准格式编写。请注意,模板不支持后续继承更改,但它们可以作为页面内容的方便起点。

Open Wiki 包含一些特殊的“宏”操作,如果名称出现在一对左右尖括号 <...> 之间,它们就会被识别。例如,<TableOfContents>

有些宏接受一个或多个参数。这些参数直接跟在宏名称后面,并用一对左右括号 (...) 括起来,用逗号分隔。例如,<FullSearch("^Help")><RecentChanges(10,30)>

有关内置命令的更多信息,请参阅“帮助 > 宏”页面。

有关编写自己的宏的帮助,请参阅文件 ow\my\mymacros.asp 顶部的注释。

我们添加了几个有用的额外宏,包括在页面中包含图像的功能和 进度条,请参阅 Open Wiki 网站以获取更多示例。

Sub MacroImageP(pParam)
   gMacroReturn = "<div style=""width:100%;overflow-x:auto"">" & _
                  "<img src=""images/" & pParam & """ border=""0"" alt=""" & _
		  pParam & """/></div>"
End Sub 

然后您可以通过从页面调用它来使用它

如果您正在使用 Wiki 跟踪项目中不同任务的进度,一个快速简单的解决方案就是使用这个小宏。开发人员可以轻松更新它,以指示他们是否已开始或即将完成任务。

Sub MacroProgressBarPP(pWidth, pPercent)
   If pPercent < 0 Or pPercent > 100 Then 
      gMacroReturn = "<ow:error>ProgressBar error: pPercent must be " &_
"[0..100]</ow:error>" Else gMacroReturn = "<ow:progressbar pbWidth=""" & pWidth &_
""" pbPercent=""" & _ pPercent & """ pbPercentLeft=""" & 100-pPercent & """ />" End If End Sub

<xsl:template match="ow:progressbar"> 
   <table border="1" cellpadding="0" cellspacing="0">
      <xsl:attribute name="width"><xsl:value-of select="@pbWidth"/>
      </xsl:attribute>
      <tr> 
         <td height="10" bgColor="#0000ff"><xsl:attribute name="width">
         <xsl:value-of select="@pbPercent"/>%</xsl:attribute> </td>
         <xsl:if test="@pbPercentLeft!=0"> 
            <td height="10" bgColor="#ffffff"><xsl:attribute name="width">
            <xsl:value-of select="@pbPercentLeft"/>%</xsl:attribute> </td>
         </xsl:if> 
      </tr>
   </table>
</xsl:template> 

这将在页面上显示如下


SQL Server 架构文档宏

最后,我们来谈谈一些代码和新功能!

在系统开发中,数据库架构和关系的文档工作往往落后于开发,但对于未来的维护却至关重要。

为了解决这个问题,我编写了一个自定义宏,很像 Open Wiki 内置的 <Include(pageName)> 宏。不同之处在于,这个宏读取 SQL Server 数据库架构,根据需要创建页面信息。

因此,您可以在页面中输入 <DatabaseTable(authors)>,如果该表存在于与 Wiki 表相同的数据库中,该宏将生成一个页面,详细说明架构信息。

这很好地满足了我的需求,因为我倾向于将 Wiki 基本表包含在我为每个项目设置的 Wiki 数据库中,但您可以根据自己的需求编辑宏。现在,当访问该页面时,它会生成如下所示的信息,详细说明列、索引和存储过程依赖项,以及表中前五行数据。

这极大地减轻了您尝试使文档与数据库架构信息保持同步的工作;显然,您还可以根据需要添加额外的注释或链接到 Wiki 中包含更详细信息的其他页面。

我将简要讨论宏的内部机制,但它并非旨在成为设计最佳的功能,所以请提前见谅。

我将以下代码添加到 ow/my/mymacros.asp。它基本上构建了一个大型 HTML 字符串(高效地!)包含表信息。

Sub MacroDatabaseTableP(pParam)

   Dim oConn
   Dim oCmd
   Dim oParam

   Dim oRsColumns
   Dim oRsPrimary

   Set oConn = Server.CreateObject("ADODB.Connection")
   oConn.Open OPENWIKI_DB
   oConn.CursorLocation = adUseClient

   Set oCmd = Server.CreateObject("ADODB.Command")
   Set oCmd.ActiveConnection = oConn
   oCmd.CommandText = "wikidbschema"
   oCmd.CommandType = adCmdStoredProc

   Set oParam = Server.CreateObject("ADODB.Parameter")
   With oParam
      .Name = "tablename"
      .Type = 8 ' adBSTR

      .Size = 255
      .Direction = 1 'adParamInput

      .Value = pParam
   End With

   Call oCmd.Parameters.Append(oParam)

   'If Err.Number <> 0 then

      ' Response.Write (Err.Description)

   'End If


   Set oRsColumns = oCmd.Execute

   If oRsColumns.EOF = True Then
      gMacroReturn = FormatXMLString("Table '" & pParam & "' does not exist.")
      Exit Sub
   End If

   gMacroReturn = gMacroReturn & "<table><tr style=""font:8pt""><td> <b>"
   gMacroReturn = gMacroReturn & "Column</b> </td><td> <b>Data Type</b> "
   gMacroReturn = gMacroReturn & "</td><td> <b><nobr>Allow NULLs</nobr></b> "
   gMacroReturn = gMacroReturn & "</td><td><b>Default</b></td></tr>"

   Do Until oRsColumns.EOF

      gMacroReturn = gMacroReturn & "<tr valign=""TOP"" style=""font:8pt"">"
      gMacroReturn = gMacroReturn & "<td>" & oRsColumns("column_name") & "</td>"
      gMacroReturn = gMacroReturn & "<td><nobr>" & oRsColumns("data_type") & _
		     " (" & oRsColumns("length") & ")"
      gMacroReturn = gMacroReturn & "</nobr></td>"

     ' Allows NULLs

      If oRsColumns("is_nullable") = "Y" Then
         gMacroReturn = gMacroReturn & "<td align=""MIDDLE"">" & _
			"<img src=""images/wiki/tick.gif""></img></td>"
      Else
         gMacroReturn = gMacroReturn & "<td align=""MIDDLE"">" & _ 
			"<img src=""images/wiki/notick.gif""></img></td>"
      End If

      If IsNull(oRsColumns("default_value")) Then
         gMacroReturn = gMacroReturn & "<td align=""MIDDLE"">&#160;</td>"
      Else
         gMacroReturn = gMacroReturn & "<td align=""MIDDLE""><nobr>" & _
			oRsColumns("default_value") & "</nobr></td>"
      End if

      gMacroReturn = gMacroReturn & "</tr>"
      oRsColumns.MoveNext

   Loop

   gMacroReturn = gMacroReturn & "</table>"

  ...
Exit Sub

它可以拉回更多关于表的架构信息;但我只保留了列名、主键、索引和前五行数据。

在研究如何最好地提取架构信息时,我查看了 sp_help,还使用了 SQL Server 跟踪分析器,以查看 SQL 企业管理器在查看表属性时使用了哪些系统命令来获取信息。

Exec sp_MShelpcolumns N'[dbo].[discounts]' 
Exec sp_MStablekeys N'[dbo].[discount]'

但最终我决定使用 SQLServerCentral 的数据库文档脚本和一些额外的 SQL。通过重写宏,肯定可以添加更多的安全检查和效率,但它能满足我的需求。


在你的机器上设置 Wiki

对于非技术人员来说,尝试设置 Open Wiki 可能会相当令人生畏。您需要确保安装了某些软件,决定使用哪种数据库后端作为存储,并配置基本设置;但说实话,这并不难。

假设您具备一定的知识水平,因为本文是为 CodeProject 网站编写的。您可以从 http://www.openwiki.com/ 下载一个安装程序,它可以自动在 IIS 等下创建虚拟目录,但我将手动解释它。

要在您自己的机器上运行 Open Wiki,您需要

  • Microsoft PWS(个人网页服务器)或 Microsoft IIS 4.0 或更高版本。
  • 安装了 VBScript 5.5 或更高版本。
  • 安装了 MSXML 解析器 3.0 SP2 或更高版本。
  • 像 Microsoft Access、Microsoft SQL Server(或 MSDE)或 Oracle 这样的数据库。

如果您有 Windows XP Professional(或 Windows 2000/3 Server),则可以通过控制面板 > 添加或删除程序 > 添加/删除 Windows 组件并选择 IIS 来安装 IIS。请记住,如果您安装 IIS,则应注意定期检查并安装任何 IIS 热修复或其它补丁,以及任何正常的 Windows 关键更新。

接下来,如果您安装了 Internet Explorer 5.5 SP2 或 IE 6 浏览器,那么您应该有 Access、SQL Server 和 Oracle 的 MDAC 驱动程序。请注意,我只使用过 Access 或 SQL Server 作为 Wiki 数据存储。

如果安装了 MSXML Parser 4.0,则应将文件 ow/owconfig_default.asp 中的常量 MSXML_VERSION 更改为值 4,即 MSXML_VERSION = 4

 

现在我们已经安装了所有必需的组件,请在您的 Web 服务器根目录(即 c:\inetpub\wwwroot\)下创建一个名为 wiki 的新目录。您稍后可以更改此目录,但我们先让它运行起来。

将文章下载中的文件复制到这个新目录。然后用记事本或其他文本编辑器打开文件 ow/owconfig_default.asp

以下是您可能希望在配置文件中编辑的一些行,包括项目标题。

<%
' Following are all the configuration items with default values set.

' "The Truth about MS Access" : http://www.15seconds.com/Issue/010514.htm


' OPENWIKI_DB = "Driver={Microsoft Access Driver (*.mdb)};" & _

                "DBQ=e:\data\openwiki\OpenWiki.mdb"
' OPENWIKI_DB = "Driver={SQL Server};server=mymachine;uid=openwiki;" & _

		"pwd=openwiki;database=OpenWiki"
' OPENWIKI_DB = "Driver={Microsoft ODBC for Oracle};Server=OW;" & _

		"Uid=laurens;Pwd=aphex2twin;"
' OPENWIKI_DB = "MySystemDSName"


OPENWIKI_DB = "Provider=SQLOLEDB.1;Integrated Security=SSPI;" & _
	      "Persist Security Info=False;Initial Catalog=wiki;" & _
	      "Data Source=(local)"
OPENWIKI_DB_SYNTAX = DB_SQLSERVER ' see owpreamble.asp for possible 

				  ' values  

OPENWIKI_TITLE = "Project Title" ' title of your wiki

...
OPENWIKI_MAXTEXT = 204800 ' Maximum 200K texts

...
OPENWIKI_DAYSTOKEEP = 30 ' Number of days to keep old revisions

MSXML_VERSION = 3 ' use 4 if you've installed MSXML v4.0

...
gReadPassword = "" ' use empty string "" if anyone may read

gEditPassword = "" ' use empty string "" if anyone may edit

...

gDefaultBookmarks = "Home RecentChanges FindPage TitleIndex SandBox" & _
		    " UserPreferences Help"

' Major system options

cReadOnly = 0 ' 1 = readonly wiki 0 = editable wiki

...
cFreeLinks = 1 ' 1 = use [[word]] links 0 = LinkPattern only

cWikiLinks = 1 ' 1 = use LinkPattern 0 = possibly allow [[word]] only

... 
cCacheXSL = 0 ' 1 = cache stylesheet 0 = don't cache stylesheet

cCacheXML = 0 ' 1 = cache partial results 0 = do not cache partial results

... 
cAllowRSSExport = 1 ' 1 = allow RSS feed 0 = do not export your pages to RSS

... 
cEmbeddedMode = 0 ' 1 = embed the wiki into another app 0 = process 

		  'browser request

...
%> 

您还可以通过更改图片,即 ow\images\banner_logo.gifbanner_title.gif,来更改横幅中的两个徽标文件。

您必须配置要用于存储页面内容的数据库,我已经将 Access .mdb 文件和 SQL Server 备份文件包含在一个名为 data 的目录中。因此,请根据需要更新 OPENWIKI_DBOPENWIKI_DB_SYNTAX

一方面,Access 更容易设置,因为您只需复制文件,不需要 SQL Server,但正确设置权限让 IIS 进程能够读/写文件有时会很麻烦。请查看 Open Wiki 网站上的 安装建议 以获取进一步讨论。我将假设如果您使用 SQL Server,您知道如何使用 SQL Server 企业管理器恢复数据库。

然后我们就可以开始使用了,确保 IIS 已启动,并且 SQL Server(如果正在使用)也已启动,然后浏览到 https:///wiki,您就可以开始了。

如果人们在设置过程中遇到问题,请留言或给我发邮件,我将更新本文,提供更详细的逐步指南。

进一步增强

本文对原始 Open Wiki 所做的更改很小;我们增强了页面设计,并添加了几个宏,包括一个用于记录 SQL Server 2000 数据库架构信息的宏。

但进一步的改进可能包括

  • 更好地整合图像,而不是必须直接将它们保存到 Web 服务器并通过宏链接它们,即只需能够从剪贴板粘贴。
  • 集成拼写检查,尽管使用 IESpell 效果很好。
  • 富文本编辑,尽管不确定这是否会削弱关键的简洁性。
  • 将整个网站打印为一份文档以供参考。
  • 能够向页面添加不属于页面主体的评论。
  • 查找孤立页面,即未从其他页面链接的页面。
  • 扩展宏支持,同时也记录 Microsoft Access 或 Oracle 数据库设计。
  • 记录额外的数据库信息,包括存储过程和触发器等。
  • 基于团队和角色的页面编辑和查看权限。
  • 添加颜色支持以标记文本。
  • 网站使用统计,即最受欢迎的页面、用户数量等。
  • 基于个人或每日观察条件进行更改的电子邮件通知。
  • 不依赖 IIS/VBScript/MSXML,使其更具可移植性,更易于托管。
  • 无需安装额外的 COM 对象即可上传附件的能力。

关注点

尽管本文并非纯粹关于编程,但我仍希望您会觉得它有用,并能看到如何将这些技术应用于您的团队或公司,以更好地利用知识。

首先,我要向 Open Wiki 的开发者 Laurens Pit 致以最崇高的敬意,感谢他最初提供了代码并使其易于定制。作为 XML 和 XSL 使用的范例,它非常出色,尽管我通常不是 XSLT 的最大拥护者。

我不想让文章没有任何我自己编写的代码,所以我想到可以写一下额外的宏如何帮助文档数据库架构信息。

通过在使用 SQL Server 企业管理器时跟踪 SQL Server,我能够捕获它是如何访问表架构信息本身的,从而推断出如何最好地自动查询数据。


一旦您改用 Wiki,您就不会想再回到在文件共享上放置 Microsoft Word 文档,那里没人知道它是否是最新文档,或者上次更改是什么时候以及更改了什么。

使用中心网站进行知识共享已成为一种非常流行的技术,诸如 Microsoft Sharepoint Portal Server 等产品也能帮助您实现这一点。现在,Wiki 的发明者 Ward Cunningham 受雇于微软,我们未来很可能会在他们的新产品中看到更多 Wiki 类型的功能。

参考文献

  • Wiki,Ward Cunningham 在此首次开始这一切。
  • Open Wiki,一个免费的 Wiki 实现,本文基于此。
  • Microsoft 解决方案框架 (MSF) 提供了一套深入的系统设计方法论。
  • SharpReader,一个 RSS 新闻聚合器和阅读器。
  • Apple,为一些标准页面提供图标。

结论

在互联网时代,很容易错过不断变化的趋势,并认为每个人都听说过 Wiki 和博客,但事实并非如此。

我希望本文能为人们提供一个关于 Wiki 的良好概述,以及他们如何通过使用 Wiki 来共享知识。它可以仅供您自己、您的团队或您的整个公司使用。但下次有人来询问您的项目以及您正在做什么时,如果能给他们一个包含您所有最新文档的 URL,那不是很好吗?

最后,我想再次强调,我没有编写此 Wiki 实现的代码,我在此仅简要概述了如何使用它、更改的外观以及用于数据库架构文档的自定义宏。

谢谢,希望这篇文章不会太长!

历史

2004年2月8日 首次发布到 Code Project。

© . All rights reserved.