Skip to content
广告❤️成为赞助商

流程执行条件节点处理器

流程执行条件节点处理器,用于判断指定参数或KEY的条件下进入到不通分支执行的处理器。

  • 实现流程执行条件节点处理器接口 ConditionNodeHandler 默认实现支持 表单参数 + 执行参数 条件KEY 两种模式确认分支。
java
public interface ConditionNodeHandler {

    /**
     * 子类需要实现的方法,来处理具体的操作
     *
     * @param flowLongContext 流程引擎上下文
     * @param execution       执行对象
     * @param nodeModel       节点模型
     * @return true 成功 false 失败
     */
    Optional<ConditionNode> getConditionNode(FlowLongContext flowLongContext, Execution execution, NodeModel nodeModel);
}
  • 测试用例 test.mysql.TestConditionNode
java

public class TestConditionNode extends MysqlTest {

    @BeforeEach
    public void before() {
        processId = this.deployByResource("test/conditionEnd.json", testCreator);
    }

    @Test
    public void testKey() {
        // 启动发起
        flowLongEngine.startInstanceById(processId, test3Creator).ifPresent(instance -> {

            // 指定选择短期条件节点
            FlowDataTransfer.specifyConditionNodeKey("k007");

            // 人事审批
            this.executeActiveTasks(instance.getId(), test2Creator);

            FlwHisInstance histInstance = flowLongEngine.queryService().getHistInstance(instance.getId());
            Assertions.assertEquals("条件路由", histInstance.getCurrentNodeName());
        });
    }

    @Test
    public void testArgs() {
        // 启动发起
        flowLongEngine.startInstanceById(processId, test3Creator).ifPresent(instance -> {

            // 条件参数选择条件节点
            Map<String, Object> args = new HashMap<>();
            args.put("day", 8);

            // 人事审批
            this.executeActiveTasks(instance.getId(), test2Creator, args);

            // 领导审批
            this.executeActiveTasks(instance.getId(), testCreator, args);

            FlwHisInstance histInstance = flowLongEngine.queryService().getHistInstance(instance.getId());
            Assertions.assertEquals("领导审批结束", histInstance.getCurrentNodeName());
        });
    }
}

更适合中国人的工作流引擎