摘要:本文介绍 SQL 工作流应用程序的开发人员如何使用 Microsoft Office XP 中所带的 Microsoft 脚本调试程序来提高 Workflow Service for SQL Server 的调试功能。
简介
开发人员(在需要时)调试代码的速度快慢在很大程度上决定着快速部署解决方案的能力。Microsoft Office XP Developer 并不具有集成的调试程序;然而,您可以使用“即时调试”进程来调试事件脚本所使用的 Microsoft® Visual Basic® Scripting Edition (VBScript)。
本文介绍的进程存在某些局限性,例如必须在安装工作流服务的同一台计算机上进行调试,并需要切换回 Microsoft Office XP 开发环境以更改代码。虽然存在着这些限制,您仍将发现这极有助于提高您对 SQL 工作流事件脚本的调试能力,并能高效地部署 SQL 工作流应用程序。
安装所需软件
要成功调试 SQL 工作流应用程序中的脚本,需要首先在运行 SQL 工作流服务的服务器上安装 Microsoft 脚本编辑器 (MSE)。
要安装 MSE,必须在该计算机上安装 Office 应用程序,如 Microsoft Word 2002。安装 Word 2002 后,打开“工具”菜单,指向“宏”,然后单击“Microsoft 脚本编辑器”。
如果未安装该选件,系统将提示您安装该程序。按照要求安装 Microsoft 脚本编辑器 (MSE)。随后,可以使用 ALT+SHIFT+F11 从任意 Microsoft Office XP 应用程序快速启动 MSE。
启动 MSE 后,从菜单栏选择“调试”选项。该选项下有一个菜单项,名为“安装 Web 调试程序”。此菜单项只在初次运行时显示。随后,将显示调试选项。这些将在本文后面进行讨论。
注意:安装 Web 调试组件后需要重新启动 MSE。在出现重新启动 MSE 的提示后,单击“是”按钮。如果需要,可以手动地重新启动 MSE,方法是在任意 Office XP 应用程序中按 ALT+SHIFT+F11;您还可以搜索文件 mse7.exe,然后直接执行该文件。
要验证是否已安装 Web 调试程序,请单击“调试”菜单项;选项列表随即应显示各项,如“开始”、“进程”等。
要使 MSE 调试程序捕获脚本错误,您必须启用 JIT 选项。
要启用 JIT 选项来捕获脚本错误,请执行以下操作:
打开“工具”菜单。
指向“选项”。
单击“调试”。选择“调试”后,右侧面板将显示一个名为“JIT 设置”的按钮。
单击“JIT 设置”按钮,将显示“JIT 调试设置”对话框。
在“JIT 调试设置”对话框中,选择程序类型“脚本”,并确保选中“启用附加”和“启用 JIT 调试”复选框。
这样,在出现错误时,这些设置就可使 SQL 工作流脚本中断运行,并在 MSE 中显示错误行。
调试工作流应用程序
要成功完成调试,必须先创建 SQL 工作流解决方案(如果尚未创建)。有关如何创建 SQL 工作流解决方案以及如何向其中添加脚本的信息,请阅读 Microsoft Office XP Developer 附带的文档。
注意:建议将工作流进程作为单独进程来运行。要实现此目的,可以在 Microsoft Office XP Developer 开发环境中将工作流的 SeparateProcess 属性更改为 True。
有了工作流应用程序后,将以下脚本添加到 Sub Create1_OnCreate:
Dim intA
Dim intB
Dim intC
intA = 5
intB = 10
intA = intA – 5
intC = intB / intA
此代码的作用是模拟除零错误,这种错误通常导致脚本运行失败,并使您无法进行进一步的操作。现在按照这些步骤来模拟错误如何发生以及如何进行调试:
保存该工作流并尝试将记录添加到启用工作流的数据库中。
一旦您尝试保存记录,“即时调试”对话框就会提示您选择可能使用的调试程序。选择 MSE 实例,然后单击“是”。
下一个对话框将显示正在调试的进程名称和程序类型。选择“脚本”,然后单击“确定”。
单击“确定”后,调试程序将显示错误消息“Microsoft VBScript runtime error: Division by zero”(Microsoft VBScript 发生运行时错误:除数为零),并显示“中断”和“继续”按钮。您会看到在编辑器中装载了 SQL 工作流事件脚本。还可看到导致该错误的脚本行。
按“中断”继续进行调试。该脚本文件将装载到“项目资源管理器”的“其它文件”节点下,名称为 MOD Workflow Engine—Event Script。
可以检查这些变量/表达式的值,方法是按 CTRL+ALT+Q 来启动 QuickWatch。在“表达式”列表中,键入变量名(如 IntA 或 IntB)以便查看其当前值。
要忽略该错误并继续执行此代码,请将“显示下一个语句”箭头移动到下一行,然后按 F5 以便继续执行代码的其余部分。
附加到已在执行的代码
可以将 MSE 附加到已在运行的代码,然后逐步检查该代码以便确定所执行的代码路径。以下为所需进行的步骤:
启动 MSE,打开“调试”菜单,然后单击“进程”。
这将显示该计算机当前运行的所有进程的列表。
在可用进程列表中,搜索并选择标题为 MOD Workflow Engine,类型为 T-SQL、Win32 和 Script 的 modhost.exe。
注意:脚本引擎必须已在运行,才能显示在此列表中。必须至少对该脚本引擎进行一次调用,脚本引擎才会运行。如果它未出现在列表中,则需执行一次工作流操作,如添加记录或更改状态,以便触发事件脚本。
单击“附加”按钮。
在“附加到进程”对话框中,确保选择了“脚本”,然后单击“确定”。进程 modhost.exe 即被添加到“已调试进程”列表的底部。
单击“中断”按钮。
这可确保一旦执行了任何代码,它都将中断于调试程序。这适用于任何代码,不管有无错误。此功能非常有用,因为一旦事件代码开始执行,调试程序就将停止该代码。开发人员就可以逐步进行检查,查看各步骤的顺序以及变量值,并捕获任何脚本错误。
关闭“进程”对话框,然后重新尝试将记录添加到启用了工作流的表中。
这次您可能会注意到有所不同。“脚本调试程序”启动更加迅速,并在代码的第一行中断运行。然后,您就可以根据 MSE 调试程序所提供的“步骤”选项来控制代码流。