对工作流拓扑结构解析感兴趣的朋友可以下载附件,或者下载JWFD的全部代码进行分析
/* 流程图拓扑结构解析伪码描述算法
public java.util.ArrayList DFS(String graphid, String stepid, int j) {*********实现代码}
第一个参数是流程图ID,第二个是第一个开始节点ID
前驱路由点: 该点是N个节点的source点(N>1)
后驱路由点: 该点有N个节点的target点(N>1)
这个算法基本上可以解决分支和发散,与汇聚的流程图遍历问题
for(int i =0 i < 当前节点的邻接点个数){
if (该点是个前驱路由点) {
if (该点没有被访问过) {
设置访问次数加(从递归方法中获得的循环控制变量)
返回
}
else if( 如果已经访问过,但是访问次数<它的前驱节点总数){
设置访问次数加(从递归方法中获得的循环控制变量+1)
返回
}
else if(总计访问次数=它的前驱节点总数){
递归进入下一个节点的访问(把大循环体的,循环变量带进去递归方法中)
}
}
else if(如果是普通节点){
设置访问标志
递归进入下一个节点的访问(把大循环体的,循环变量带进去递归方法中)
}
}
}
*/
}
return dfs;
}
=====================线程方式伪码调用算法====================
设置DFS自动机运行的时间间隔......启动一个线程的时间间隔
创建一个线程
设置线程的时间间隔...运行时间间隔
将数据库中该流程的全部状态初始化为0
if(节点X的活动状态标志为1)
{调用处理节点客户端窗口,中断该DFS}
if(最后一个节点活动标志为1)
{返回流程结束的标志}
退出程序
============================================================