既然是做开源软件的,我们的宗旨就是给大家分享设计和代码,那么现在我就用很简单扼要的语言来透露这个跳跃模式的设计原理
大家如果用过JWFD的ARC-自动运行控制器,或者看过代码,应该知道在ARC算法模块中有一个函数叫做SAN(),这个函数就是ARC的核心控制器,要实现跳跃模式,在SAN函数中一定要对LN链表数据结构进行操作,首先写一段代码,把ln中存储的流程节点序列输出到系统控制台中,然后把我们要进行跳跃的目标节点的NODEID(节点ID)插入到这个序列中,注意是插入
当我们的流程运行控制器在运行过程中,进行下一个节点的操作之前,有一个递归过程,而我们的跳跃过程就需要把递归函数中传递的下一个节点ID,替换成我们要跳跃的目标节点ID
这好像是一个插入排序的算法过程,请大家自己摸索一下,我很快将把详细设计放出来..
2014.8.15 补充 比如说 原来我们在ARC控制器对流程图进行处理过程中,扫描节点的序列是
N01,N02,N03,N04,N05,N06
按照正常次序,我们的递归函数是从N01到N06,按次序运行,直到完成任务
但是在加装了嵌入式脚本编译器和跳跃函数之后,这个正常的遍历次序就会发生一些变化
我们的跳跃函数可能会根据嵌入到N02这个节点中的线性方程的计算结果,把N06设置为N02节点的下一个访问节点,那么节点访问序列就会变成
N01,N02,N06,N03,N04,N05,N06,那么我们在跳跃访问N06节点之后,还会面临一个,如果恢复递归函数访问次序,N06节点还会被重复多访问一次,所以这里考虑引擎设计的时候,是否需要在跳跃完成之后,把节点序列中的N06节点全部删除呢?
==================================================================
我们工作流行业既然已经走到时代的前面....就不能够有所畏惧,前面的道路虽然更加曲折,但是希望却一直伴随着我们....