下面是SAN自动运行控制器的一个伪代码描述,让我们来看看,到底是什么地方可以改进一下
System.out.println("普通点的递归"+step_id); java.util.ArrayList lln = new java.util.ArrayList(); lln = gcm.ConditionDfs(step_id, graphid); ftcer.set_end_time(step_id, graphid); gcm.SAN(lln, graphid,step_id);
在流程调试器处理流程前进的按钮的代码中,我嵌入了上面的一段代码,在我们调用方法gcm.SAN()开始递归之前,我们对当前流程节点进行一些设置,这并不是我们讨论的重点,仅仅说一下,ftcer.set_end_time()这个函数是用来对当前节点设置时间的一个函数,通常我们在调用递归函数让流程开始流转之前,一般要对前面处理的节点进行一下时间值和处理状态值之类的设置(当然,如果我们需要对流程进行更加精细的控制,那么这种设置所需要的代码量就更大了),在这之后,我们才让流程进入下一个待处理的节点。
注意一点,我们是通过传递参数lln(lln是一个数组类型的数据,里面保存着一个或者多个正在被处理的流程图中的节点) 来控制递归过程的方向的,如果在这里我们修改一下lln这个参数所传递的节点(节点群),那么流程运行的方向就将发生变化,我们可以让lln数组里面的节点发生变化,如果我们截取lln数组的值,并将其修改,比如说当前流程正要进入下一个节点,那么我们把这里的下一个节点(如何获得当前节点的下一个节点,请参考JWFD工作流引擎API函数简要说明)替换为另外一个我们想让流程处理的节点,比如说让流程立即跳转到我们指定的一个节点那里去处理,而不按照流程的顺序来依次处理,那么这种处理模式就被大家称为-自由流或者随意流的流程控制模式