熬夜设计工作流的实现

      首先声明,有点标题党了~我熬夜做的不过是个演示程序罢了,为了应付学校项目的中期检查,演示工作流的编排和执行,仅具有“娱乐”价值,没有任何商业价值,估计也算不上“工作流”。演示用的方法调用就是简单的加法、减法和乘法。


      首先,我有一个图形化界面(借用的BPEL Designer的界面)用来绘制工作流程,如下图所示:


       接着,向工作节点添加调用的方法:右键节点->添加方法;

       最后做完图后,选择工具栏的“执行”按钮,即可按绘制的流程顺序执行下来。

 

      首先说数据结构。我定义的一个工作就是图上的一个节点,节点用来实现绘制功能的数据沿用这个设计工具本来的格式。为了实现流程的执行功能,我将原先节点的前驱后继只能有一个的链表式结构改成了用List实现,这样前驱后继都可以是多个了;添加“结果”和“操作”参数,来记忆执行该工作的结果以及描述该工作的操作。

 

      然后就是算法了。开始为这问题挺头疼的,后来偶然听说了“拓扑排序”,揣摩了一下,豁然开朗(编辑器会将画板上所有的节点存入一个Map中):

     1.从Map中遍历出所有前驱为零的节点压栈;

     2.从栈中推出一个,执行该节点的操作,将结果存入“结果”参数;

     3.扫描该节点的一个后继节点,查看它的所有前驱节点的’结果“参数是否为空?不为空转步骤4,否则返回上一层扫描。

     4.执行该节点,对该节点转步骤3操作。

      (头一回像算法书上写的那样描述算法,如有不妥,请前辈指出。)

 

      经过简单的测试,对于最终汇集到一个工作中去的工作流,即截图所示的方式,该算法似乎都没问题。

 

     天亮了,是不是该趴一会了……

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值