Zeta Helpdesk
一个用于管理带有工单和事件的支持请求的应用程序。
(请参阅下方的版本历史记录了解最新更改)
图片:Zeta Helpdesk 的主窗口,显示当前任务选项卡
引言
不久前,在 2005 年初,我们这家(7 人)小公司觉得需要某种方式来收集、记录并最终结算我们为客户开发的众多应用程序和网站所收到的支持请求。
当然,我研究过免费/廉价的应用程序。我没有找到合适的(可能每个程序员在寻找自己可以开发的应用程序时都会这样)。然后我又找了更多,还是没找到。
现在,这个想法诞生了:开发我自己的应用程序来满足我们现有和未来的需求。我希望达到以下目标:
- 一开始就相当简单,以便快速获得一个满足我们绝对最低要求的可运行版本,从而使我的同事能够快速使用该应用程序。
- 保持应用程序的持续开发,在我有时间并且我们知道还需要什么时添加功能。
- 让应用程序免费提供给所有人,没有任何限制,让任何人都可以出于任何原因使用它,包括商业用途、重新分发或重用源代码。
- 尽量保持功能列表的通用性,以便广大用户可以使用它,但同时也要调整它以适应我们公司的基础设施。
- 使用最新的 .NET 版本和 Visual Studio .NET 2005,这样我就可以在一个实际项目中学习新功能。
- 称其为“Zeta Helpdesk”(或“ZetaHelpdesk”,取决于上下文)
随着我实现新功能和构建应用程序的新版本,我将不断更新本文。有关更改,请参阅版本历史记录。
应用程序的范围
您在本文中找到的版本是快照版本。请一直牢记这一点!它没有经过深入测试,安装过程(尤其是设置数据库)可能会有些困难。
简而言之,以下各项可能产生负面影响:
- 该应用程序不像商业应用程序那样经过测试(尽管我一直在尽力提高质量)
- 该应用程序没有“完成”,而是不断增强(我一直在尽力避免版本之间出现任何不兼容的更改)
- 可能存在高薪的系统工程师撰写数百页的规范文档和白皮书来指定一个“帮助台系统”需要具备哪些功能才能成为真正的帮助台系统。此版本*不是*。相反,我称之为“帮助台”,因为它对我们来说是一个帮助台系统。它包含的功能以及我将来要添加的功能反映了我们的实际需求,而不是理论文档。
尽管如此,我们自己每天都在使用该应用程序,并且该应用程序在满足我们需求方面非常稳定。因此,您应该能够成功安装并使用该应用程序。
我鼓励所有正在寻找轻量级帮助台系统的人使用此应用程序。我会尽力尽快回复您在本文底部评论区中写的所有支持请求。
图片:Zeta Helpdesk 的主窗口,显示工单选项卡
我所说的“帮助台系统”
如前所述,我对帮助台系统的核心定义是基于实际的视图(*我的*实际视图),而不是理论视图。
- 记录传入的支持请求,这些请求可能通过电话或电子邮件到达。
- 有一个“工单”来收集单个支持请求。
- 为每个工单设置一个或多个“事件”来记录工单的进度(例如,传入请求、解决请求的步骤等)。
本文介绍的应用程序具有比这些更多的功能(并且将来还会添加),但这只是我的核心定义。
应用程序功能
Zeta Helpdesk 应用程序包含以下功能块:
- Customers
每个客户都有关联的联系数据,并且可以将其关联为零个或多个子项(联系人)。- 联系人
联系人是客户的子项。
- 联系人
- 工单
工单是单个传入的支持请求。- 事件
事件是工单进度中的单个步骤(例如,传入请求、解决请求的步骤)。
- 事件
- 项目
项目是一种更长期的“工单”。Zeta Helpdesk 中存在项目是因为我需要某种方式来记录我们为各种客户进行的小型项目。- 任务
项目包含一个或多个任务,这些任务代表项目中的单个条目,例如项目的可计费里程碑。
- 任务
- 报告
报告可用于以图形方式或列表方式显示各种信息。例如,显示给定月份所有可计费的工单。 - 杂项
例如搜索、打印等。
前三项目前已实现并运行。并非深入运行,但运行良好。在“杂项”项中,打印功能正在运行,搜索功能是我接下来要实现的。
图片:Zeta Helpdesk 的工单编辑窗口
搜索工单
(已于 2005-10-20 添加)。搜索工单的对话框现在以一个非常简单的第一个版本工作。
图片:工单搜索对话框
代码
在这个文章的第一个版本中,请原谅我没有写太多关于代码的内容。随着应用程序的发展和代码的增强,我将增强这部分内容。尽管如此,我相信代码是相当稳定和“好”的。
Zeta Helpdesk 应用程序本身是使用最新的 Visual Studio .NET 2005 开发的,这是 2005 年 9 月的版本候选版 (RC)。因此,本文附件中的编译版本需要 Visual Studio .NET 2005 RC 附带的“dotnetfx.exe”。
数据库访问代码
在我迄今为止编写的所有 .NET 1.1 应用程序中,我都使用了自己开发的包装器来访问 ADO.NET 类。我真的尝试过给 Visual Studio .NET 2005 的数据库相关类、向导、包装器、强类型数据集等一个机会。但在多次尝试后,我又回到了自己经过充分测试和验证的类。
我真的很讨厌 Visual Studio .NET 2005 附带的所有这些与数据库相关的代码。也许有一天我会再试一次,但目前我没有时间进行实验。
图片:Zeta Helpdesk 的工单事件编辑窗口
杂项
如果您曾经需要 Windows Forms 的 TimeSpanPicker
控件(我曾经搜索过但未成功),该应用程序包含一个库,其中有一个 TimeSpanPicker 控件,我的同事(Stephan Ruhland)在几个月前开发了它。
目前尚未包含此控件的源代码,但如果您确实需要源代码,可以暂时使用 Lutz Roeder 的.NET Reflector 查看(或者也许询问 Stephan 发布它也会有帮助)。
基础库
由于下方评论区的要求,我现在已将 Zeta Helpdesk 使用的基础库作为单独的文章发布。如果您想在自己的项目中使用此基础库,请查看那里。
安装
该应用程序本身目前没有安装程序(即没有“setup.exe”)。相反,请执行以下步骤来获得一个可运行的版本:
- 确保您的系统满足要求
- Microsoft .NET Framework 2.0 (RC)
- 可选:Visual Studio .NET 2005
- SQL Server 2000、MSDE 2000、SQL Server 2005 或 SQL Server 2005 Express(我正在 SQL Server 2000 实例上开发)
- 下载“ZetaHelpDeskSql.zip”脚本,并使用 Microsoft SQL Server 查询分析器在一个正在运行的 SQL Server 实例上执行它。如果您无法访问 Server Query Analyzer(例如,因为您有 MSDE 或 SQL Server 2005 Express,或者仅仅是因为您很懒),请参考下面的小节。
- 下载并解压“ZetaHelpDeskSource.zip”文件。
- 调整“ZetaHelpDesk.Main.exe.config”配置文件,使其指向正确的 SQL Server 实例以及用于存放附件的文件夹。此外,您还可以配置日志记录。如果您计划编译自己的版本,只需调整“App.config”文件即可。(我将在本文的更新中添加更详细的配置说明)。
- 可选地,使用 Visual Studio .NET 2005 编译您自己的版本,或者直接使用预编译的可执行文件。
- 配置 Zeta Helpdesk 用户:目前,您必须在数据库中手动创建用户,因为编辑用户的 GUI 仍然缺失。为此,请使用 SQL Server 企业管理器并在“Users”表中手动添加一个或多个用户。如果您在“SamName”和“DomainName”字段中输入您 Windows 用户帐户的值,则登录 Zeta Helpdesk 系统将自动进行,不会显示额外的登录对话框。
数据库安装(增强方法)
由于收到了 Sven 的回复,他无法访问 SQL Server 查询分析器,因此我增强了该应用程序,添加了一个新对话框,可以直接通过 Zeta Helpdesk 设置数据库。
图片:从 Zeta Helpdesk 中执行 SQL 查询
要使用集成方法,请通过单击“Tools”主菜单,然后单击“Execute SQL query”菜单项来打开“Execute SQL query”对话框。打开“ZetaHelpDesk.sql”脚本并执行它。
当您首次启动 Zeta Helpdesk(处于未配置状态)时,它很可能会弹出一个异常窗口。此窗口有一个下拉菜单(左下角的按钮),该菜单会打开一个配置菜单。
图片:带下拉菜单的异常窗口
使用“Execute SQL query”菜单项来显示上述对话框。
更新/错误报告
为了简化您向我(软件作者)报告错误和获取软件更新的过程,我添加了以下三个功能/项目:
- 检查更新
您现在可以使用“Help”主菜单中的“Check for updates”菜单项来检查我们服务器上更新版本的应用程序。更新检查是通过标准的 WebService 调用完成的(目前不支持代理配置 - 我将来会添加)。更新不包含源代码文件,仅包含可执行文件。有关源代码文件,请仍然查看此 CodeProject 文章。
图片:更新 Zeta Helpdesk 应用程序
- UpdateConverter 类一个内部类,我在其中跟踪更改,它会检查内部升级状态,并且每当您下载新升级并对数据库进行修改时,您将在应用程序启动时看到一个消息框,询问您是否确认数据库升级。因此,您将永远不需要手动添加表,因为结构会发生变化。
图片:更新数据库结构
- 将日志文件发送给作者我添加了发送 Zeta Helpdesk 应用程序生成的日志文件的功能(除非您在“.config”文件中将其关闭)。这同样是通过运行在我们服务器上的标准 WebService 完成的。通常,您会在发生错误时调用此功能,并且希望通过使我能够查看您的日志文件来告诉我上下文。
隐私声明:日志文件可能(或可能不)包含您归类为“私有”的数据。如果您有任何疑虑,请不要使用此功能。(当然,我永远不会将日志文件用于修复错误以外的任何其他用途!)
结论
在本文中,我介绍了我帮助台系统“Zeta Helpdesk”的第一个版本。
开发此应用程序一直并且仍然非常有趣。我希望这是您毕生寻找的帮助台工具。或者有一天它会成为您选择的系统!目前它正处于重/中等开发阶段;也就是说,我将不时添加和调整/重构功能,使其成为一个更“完整”的应用程序。当然,我会快速修复任何出现的错误。只需在下方的评论区中写出来即可。
此外,请通知我任何建议、提示、问题、错误、增强功能或任何您想提供反馈的内容!**谢谢!**
请记住:您的反馈将驱动我的开发工作和方向。
许可证
我对所有这些许可证规定不太在意。但如果您在意,如果您能遵守以下条款,将不胜感激:
随意使用软件和源代码;例如,安装它、编译它、增强它、将源代码的部分内容纳入您自己的项目中。如果您计划销售您增强后的版本,我当然很高兴能获得您赚取的钱的一部分,或者您只是提及我的名字。但这完全取决于您。
这适用于您可以在 CodeProject 网站本文中下载的所有源代码和二进制文件。
历史
- 2005-11-28:为了极大地改善用户在报告错误给我(软件作者)和获取软件更新方面的体验,我添加了手动检查更新以及在有可用更新时自动下载和安装更新的功能。我还添加了将应用程序生成的日志文件发送给我进行进一步检查的功能。请参阅上面的更新部分。
- 2005-11-28:
当您在创建数据库时遇到问题或遇到数据库错误时,请参阅 computerguru92382 的评论。
此外,我添加了一个直接向我报告错误的表单。每当发生异常时,异常消息框现在都有一个菜单项(通过左下角的按钮)可以直接向我发送错误信息。这是通过运行在我们服务器上的标准 WebService 完成的。
图片:报告错误的菜单项
- 2005-11-08:
为异常窗口添加了下拉菜单,以便首次使用者仍然可以配置应用程序设置和数据库设置。谢谢,David!
- 2005-10-29:
使用 .NET Framework 2.0 RTM(最终版本)重新编译。您可以从Microsoft 下载页面下载 .NET Framework 2.0 可再发行组件(很可能是这个)。
- 2005-10-24:添加了基础库的链接。有关详细信息,请参阅上方。
- 2005-10-20:
添加了搜索工单的对话框。有关详细信息,请参阅上方。请注意,我还添加了一个名为“SearchSimpleForTickets”的新存储过程。请使用更新的 SQL 脚本将其添加到您的数据库中。
- 2005-10-07:
添加了缺失的 SQL 脚本并增强了源代码,以期修复提到的错误。感谢 Sean Goldin 和 berndke。
- 2005-10-08:
添加了直接从 Zeta Helpdesk 中设置数据库的对话框。
- 2005-10-07:
初始发布。