• JWFD开源工作流矩阵引擎-遍历算法第二次修正代码


    1. public void ParamFileOutputValue(String paramfile) {
    2. String s = "";
    3. String sp = "";
    4. String ssp = "";
    5. List list = new ArrayList();
    6. int p = 0;
    7. int k = 0;
    8. int j = 0;
    9. //这个地方要修改为整个参数表的最大行数,而不是起始点行数!!
    10. s = this.ParamlineScanner(paramfile).substring(1, 2);
    11. p = Integer.parseInt(s);
    12. k = ParamlineScanOutput(paramfile);
    13. // System.out.println(ParamlineScanOutput(paramfile));
    14. // System.out.println(this.ParamlineScanner(paramfile).substring(4, 7));
    15. System.out.println("矩阵参数表遍历算法启动,输出:");
    16. /*
    17. 节点数字标签大于十位数,导致子字符串的序号发生变化,怎么形成动态的序号标签呢?
    18. 取出nodexx的长度,然后截取最后的字符串,无论多少位数,都可以进行对比.已经按照正则表达式的方法完成该修正代码
    19. 在处理复杂拓扑网络的时候,这个算法的长度是否与拓扑结构相关?固定的代码能否处理
    20. 不同的变化的拓扑结构,这个TEST888参数表作为矩阵引擎的测试数据,如果能够完全的遍历完成,那就非常好了
    21. 随着矩阵参数表的日益庞大,这个算法也越来越复杂,这种代码结构很显然存在巨大的缺陷,需要重新设计
    22. by comsci 2023.10.27
    23. 重新设计了一个递归子程序,嵌套使用,可以将矩阵参数表全部遍历完成
    24. String str = this.ParamSubscriptScanner(paramfile).get(p - 1).toString();
    25. String[] strs = str.split(",");
    26. System.out.println(strs[0].toString().substring(1));//第一个节点
    27. System.out.println(strs[1].toString().substring(0, strs[1].toString().length() - 1));//第二个节点
    28. */
    29. if (this.ParamlineScanner(paramfile).substring(4, 7).equals("起始点")) {
    30. System.out.println(this.ParamSubscriptScanner(paramfile).get(p - 1).toString());
    31. String str = this.ParamSubscriptScanner(paramfile).get(p - 1).toString();
    32. String[] strs = str.split(",");
    33. System.out.println("起始点的下一个邻接点是:" + strs[1].toString().substring(0, strs[1].toString().length() - 1));
    34. sp = strs[1].toString().substring(0, strs[1].toString().length() - 1);
    35. for (int i = 0; i <= k - 1; i++) {
    36. //输出所有的节点标签
    37. String str1 = this.ParamSubscriptScanner(paramfile).get(i).toString();
    38. String[] strs1 = str1.split(",");
    39. //进行对比,如何进行全部参数的对比,并输出?基本结构就是匹配之后再进行循环再匹配输出,可以形成一个独立的函数,然后取出来递归
    40. if (strs1[0].toString().substring(1).equals(sp)) {
    41. //输出下一批邻接点,继续进行搜索和对比,直到达到最后一个节点
    42. System.out.println("下一个邻接点是:" + strs1[1].toString().substring(0, strs1[1].toString().length() - 1));
    43. ssp = strs1[1].toString().substring(0, strs1[1].toString().length() - 1);
    44. ParamRecursionScanner(paramfile,ssp,j);
    45. }
    46. }
    47. }
    48. // 输出这行的节点标签内容:(node7,node6)的node7的下一个邻接点node6
    49. /*
    50. 下标:(7,6): 节点标签:(node7,node6): 节点状态:(0,0): 节点标志:起始点
    51. 取出substring node6,作为对比字符串,搜索所有的参数表行数据,进行对比,输出下一个邻接点
    52. */
    53. System.out.println("遍历算法未完全完工,敬请期待,该版本为测试版本");
    54. System.out.println("工作流矩阵引擎-遍历算法测试版本......待续");
    55. }
    56. //递归子函数
    57. public void ParamRecursionScanner(String paramfile, String ssp,int ss) {
    58. int k = 0;
    59. int s = ss;
    60. s++;
    61. k = ParamlineScanOutput(paramfile);
    62. for (int j = 0; j < k ; j++) {
    63. String str2 = this.ParamSubscriptScanner(paramfile).get(j).toString();
    64. String[] strs2 = str2.split(",");
    65. // System.out.println(strs2[1].toString().substring(0, strs2[1].toString().length() - 1));
    66. if (strs2[0].toString().substring(1).equals(ssp)) {
    67. System.out.println("第"+ s +"次邻接点是:" + strs2[1].toString().substring(0, strs2[1].toString().length() - 1));
    68. /*
    69. 判断当前节点是否是流程图的最后一个节点,如果不是,则递归,怎么判断当前节点是最后一个节点呢?
    70. node4不等于后续所有节点,则结束,否则继续递归
    71. */
    72. ParamRecursionScanner(paramfile,strs2[1].toString().substring(0, strs2[1].toString().length() - 1),s);
    73. // }
    74. }
    75. //
    76. }
    77. }

     请在上一次修正的src\org\jwfd\workflowEngines\Matrix\DataMatrix.java文件上面,覆盖原同名函数,如果运行不正确,请下载JWFD的矩阵引擎开发包或者修改配置参数文件,非常感谢大家的支持,我还将继续发布矩阵引擎的升级代码。。。

  • 相关阅读:
    linux内核中内存耗尽OOM killer
    【C】青蛙跳台阶和汉诺塔问题(递归)
    用VSCODE启动Java项目
    微服务之SpringBoot面试题
    Echarts与后台(mongoose)交互
    每日一题 337. 打家劫舍 III
    【Vue-Element-Admin】select模糊查询
    nginx-根据X-Forwarded-For设置访问黑白名单
    MTK Logo 逆向解析之 bin 转 rawx
    接口自动化测试的概述及流程梳理~
  • 原文地址:https://blog.csdn.net/comsci/article/details/134072908