3.1 调试

调试是流程编辑运行过程中不可或缺的一个步骤,它可以让我们在流程正式运行前发现一些较难发现的问题。调试可被看作是一个试运行状态,在这个过程中您可以清晰地看到流程每一步的运行状态和结果,以便对不符合预期的逻辑进行补充或修改。

下面对调试过程中涉及的一些名词概念进行解释:

断点:在某一活动上的一个标记,指示在调试模式下,流程运行到此处应暂停下来。

逐语句:指在调试模式下,流程每一次仅向下运行一步。

逐过程:指在调试模式下,流程每一次向下运行一个流程块。如遇到循环活动时,逐过程会直接运行到整个循环结束并暂停下来,而逐语句会进入到循环内部的第一步并暂停下来。

变量跟踪:指在调试模式下,实时观察流程运行到某一步时所有当前可见变量及参数的值等信息。

继续:指在调试模式下,流程从当前暂停节点处继续运行,直到遇到下一个断点的时候暂停。若当前节点后无断点,则直接运行至流程结束。

停止:指在调试模式下,强制中止流程的运行。

下面用一个例子来展示调试功能的作用。首先配置一个包括两个活动的流程,该流程先去读取一个Excel文件里的内容,然后在输出窗口打印该Excel文件中的数据表的行数。Excel表格内容如下图所示。

img

img

直接运行流程。

img

看到结果,输出了4,也就是说程序认为我们的表格有4行。但我们的表格有5行内容,这是为什么呢?我们需要调试一下探个究竟。

点击逐语句,进入调试模式。

img

在写入行活动上加一个断点,点击继续,并将左侧视图调至变量跟踪。

img

可以看到Data的内容了,点击放大镜按钮弹出窗口查看。

img

每一个大括号括起来的内容表示数据表中的一行,其中逗号分隔的每行内容表示该行的一列,冒号前是列名,冒号后是值。通过调试我们发现,程序把数据表中的第一行当作表头处理了,即第一列的列名是“1”,第二列的列名是“我是第一个”,这是不符合我们的预期的。已经发现了问题,停止调试,查看读取Excel的活动属性。

img

我们看到“表头”属性被勾选了。该属性是指示读取的Excel表格的首行是否按表头进行处理,因为该属性被勾选,所以刚才我们看到的第一行数据内容变成了表头。去掉该属性,再次运行。

img

输出内容正确了,调试再看运行过程中读取的表格内容。

img

没有指定列名的列,程序会自动添加column1、column2等列名。我们看到这时表格的第一行也被当作数据处理了,符合我们的预期。我们通过调试很轻易就发现了问题并修复了流程中的bug。