实战项目:设计实现一个流程编排框架(测试)

本文详细介绍了流程编排框架在不同场景下的应用,包括方法节点、Bean节点、条件节点、服务节点及子流程节点的执行过程与结果,展示了如何通过框架实现流程自动化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上几篇文章主要讲了《实战项目:设计实现一个流程编排框架(分析)》《实战项目:设计实现一个流程编排框架(设计》《实战项目:设计实现一个流程编排框架(实现)》,我们今天主要讲一下基于分析、设计、实现的框架怎么满足一些基本场景。

方法节点

流程

流程执行三个方法节点,每个节点做+1操作,初始化count=0,最后输出结果count=3;

文件定义

name: addCount
id: test1
desc: 方法节点执行
input: com.service.flow.sample.common.test1.Test1Input
output: com.service.flow.sample.common.test1.Test1Output
temp: com.service.flow.sample.common.test1.Test1Temp
startNode: node1
nodes:
  - node:
      id: node1
      name: methodNode1
      component: com.service.flow.sample.common.test1.Test1Component:count
      desc: 数量+1
      input: com.service.flow.sample.common.test1.Test1Input
      type: method
      next: node2
  - node:
      id: node2
      name: methodNode2
      component: com.service.flow.sample.common.test1.Test1Component:count
      desc: 数量+1
      input: com.service.flow.sample.common.test1.Test1Input
      type: method
      next: node3
  - node:
      id: node3
      name: methodNode3
      component: com.service.flow.sample.common.test1.Test1Component:count
      desc: 数量+1
      input: com.service.flow.sample.common.test1.Test1Input
      type: method

执行结果

2020-06-25 12:45:02.974  INFO 13808 --- [           main] com.service.flow.web.api.FlowHandler     : result:Test1Input{count=3}
2020-06-25 12:45:02.976  INFO 13808 --- [           main] com.service.flow.web.api.FlowHandler     : record:Flow:test1->Node:methodNode1->Node:methodNode2->Node:methodNode3
2020-06-25 12:45:02.976  INFO 13808 --- [           main] com.service.flow.web.api.FlowHandler     : totalTime:16ms

Bean节点

流程

流程执行三个bean节点,每个节点做+1操作,初始化count=0,最后输出结果count=3;

文件定义

name: addCount
id: test2
desc: bean节点执行
input: com.service.flow.sample.common.test2.Test2Input
output: com.service.flow.sample.common.test2.Test2Output
temp: com.service.flow.sample.common.test2.Test2Temp
startNode: node1
nodes:
  - node:
      id: node1
      name: beanNode1
      component: test2Component:count
      desc: 数量+1
      input: com.service.flow.sample.common.test2.Test2Input
      type: bean
      next: node2
  - node:
      id: node2
      name: beanNode2
      component: test2Component:count:count
      desc: 数量+1
      input: com.service.flow.sample.common.test2.Test2Input
      type: bean
      next: node3
  - node:
      id: node3
      name: beanNode3
      component: test2Component:count
      desc: 数量+1
      input: com.service.flow.sample.common.test2.Test2Input
      type: bean

执行结果

2020-06-25 12:45:32.976  INFO 11796 --- [           main] com.service.flow.web.api.FlowHandler     : result:Test1Input{count=3}
2020-06-25 12:45:32.977  INFO 11796 --- [           main] com.service.flow.web.api.FlowHandler     : record:Flow:test2->Node:beanNode1->Node:beanNode2->Node:beanNode3
2020-06-25 12:45:32.977  INFO 11796 --- [           main] com.service.flow.web.api.FlowHandler     : totalTime:14ms

条件节点(循环节点)

流程

流程开始执行条件节点,初始化count=0;beanNode2每次做+1操作,当count>=5时,执行节点beanNode3,做+5操作,结果count=10;

文件定义

name: loop
id: test3
desc: 循环点执行
input: com.service.flow.sample.common.test3.Test3Input
output: com.service.flow.sample.common.test3.Test3Output
temp: com.service.flow.sample.common.test3.Test3Temp
startNode: node1
nodes:
  - node:
      id: node1
      name: conditionNode1
      component: count<5:node2,count>=5:node3
      desc: 数量条件判断
      type: condition
  - node:
      id: node2
      name: methodNode2
      component: test3Component:count
      desc: 数量+1
      input: com.service.flow.sample.common.test3.Test3Input
      type: bean
      next: node1
  - node:
      id: node3
      name: methodNode3
      component: test3Component:count5
      desc: 数量+5
      input: com.service.flow.sample.common.test3.Test3Input
      type: bean

执行结果

2020-06-25 12:46:35.852  INFO 19920 --- [           main] com.service.flow.web.api.FlowHandler     : result:Test1Input{count=10}
2020-06-25 12:46:35.854  INFO 19920 --- [           main] com.service.flow.web.api.FlowHandler     : record:Flow:test3->Node:conditionNode1->Node:methodNode2->Node:conditionNode1->Node:methodNode2->Node:conditionNode1->Node:methodNode2->Node:conditionNode1->Node:methodNode2->Node:conditionNode1->Node:methodNode2->Node:conditionNode1->Node:methodNode3
2020-06-25 12:46:35.854  INFO 19920 --- [           main] com.service.flow.web.api.FlowHandler     : totalTime:63ms

服务节点

流程

现在服务结果没有具体实现,空跑交易,需要交易框架自己扩展;

文件定义

name: service
id: test4
desc: 服务节点执行
input: com.service.flow.sample.common.test3.Test3Input
output: com.service.flow.sample.common.test3.Test3Output
temp: com.service.flow.sample.common.test3.Test3Temp
startNode: node1
nodes:
  - node:
      id: node1
      name: serviceNode1
      component: /test:post:testApplication
      desc: 方法节点调用
      input: com.service.flow.sample.common.test3.Test3Input
      type: service

执行结果

2020-06-25 12:47:41.366  INFO 16272 --- [           main] com.service.flow.web.api.FlowHandler     : result:com.service.flow.model.BaseOutput@660591fb
2020-06-25 12:47:41.366  INFO 16272 --- [           main] com.service.flow.web.api.FlowHandler     : record:Flow:test4->Node:serviceNode1
2020-06-25 12:47:41.366  INFO 16272 --- [           main] com.service.flow.web.api.FlowHandler     : totalTime:14ms

子流程节点

流程

定一个一个子节点调用第一个流程,最终结果count=3

文件定义

name: subflow
id: test5
desc: 子流程节点执行
input: com.service.flow.sample.common.test3.Test3Input
output: com.service.flow.sample.common.test3.Test3Output
temp: com.service.flow.sample.common.test3.Test3Temp
startNode: node1
nodes:
  - node:
      id: node1
      name: subFlowNode1
      component: test3
      desc: 子流程节点
      input: com.service.flow.sample.common.test3.Test3Input
      type: subflow


执行结果

2020-06-25 12:54:36.163  INFO 17456 --- [           main] com.service.flow.web.api.FlowHandler     : result:Test1Input{count=3}
2020-06-25 12:54:36.165  INFO 17456 --- [           main] com.service.flow.web.api.FlowHandler     : record:Flow:test1->Node:methodNode1->Node:methodNode2->Node:methodNode3
2020-06-25 12:54:36.165  INFO 17456 --- [           main] com.service.flow.web.api.FlowHandler     : totalTime:7ms
2020-06-25 12:54:36.165  INFO 17456 --- [           main] com.service.flow.web.api.FlowHandler     : result:Test1Input{count=3}
2020-06-25 12:54:36.165  INFO 17456 --- [           main] com.service.flow.web.api.FlowHandler     : record:Flow:test5->Node:subFlowNode1
2020-06-25 12:54:36.165  INFO 17456 --- [           main] com.service.flow.web.api.FlowHandler     : totalTime:20ms
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值