初识compileflow工作流

1.前言

在平时的开发中,我们会经常用到if...else...来做逻辑判断。但是当需要判断的条件太多时,代码中的if...else语句就会相当泛滥,不仅可读性差,而且会把整体逻辑搞得很混乱。这时,工作流引擎 技术出现了,可以通过可视化拖拽的方式来绘制流程图、并自动生成业务流程代码,而不用自己写 if else,大幅降低开发成本、非程序员也能用。

2.入门CompileFlow

首先,需要引入代码包。

<dependency>
    <groupId>com.alibaba.compileflow</groupId>
    <artifactId>compileflow</artifactId>
    <version>1.2.0</version>
</dependency>

然后,IDEA下载一个 Compileflow Designer 插件,这样就能可视化地编辑工作流了。

这里以账号认证为例,简单介绍下工作流引擎的使用。

为了描述简单,假设在进行账号认证时,首先需要判断用户名非空,然后判断密码非空,最后判断验证码非空,当以上三个条件都满足时,认证通过。

1.编辑bpm文件

在资源目录下新建一个bpm文件夹,创建一个名称为account.bpm的文件。

在这里,我们就能像画流程图一样设计我们的程序流程了。

将bpm文件切到ProcessFlow视图

 第一步,创建一个判断节点,双击进入编辑页面,修改名称为验证用户名:

注意选择classType为创建的验证工具类,下面的account为verifyName的输入参数,boolean为输出参数。

同理创建密码和验证码验证的判断节点。

 

 

第二步,创建连接节点。

以验证用户名为例,结果有通过和不通过,返回变量名为节点中定义的result。连接两个判断节点,点击连接线进行编辑,连接条件是result==true。

如果result==false,直接结束。同理,编辑所有连接线,状态如下:

这个就是我们比较熟悉的流程图了。 

最后,双击编辑页面空白处,配置全局参数。

 

2.编辑Java代码

1.节点绑定方法

public class AccountVerify {

    public boolean verifyName(Account account) {
        if (StringUtils.isNotEmpty(account.getName())) {
            System.out.println("name认证通过");
            return true;
        }
        System.out.println("name认证不通过");
        return false;
    }

    public boolean verifyPassword(Account account) {
        if (StringUtils.isNotEmpty(account.getPassword())) {
            System.out.println("密码认证通过");
            return true;
        }
        System.out.println("密码认证不通过");
        return false;
    }

    public boolean verifyVerificationCode(Account account) {
        if (StringUtils.isNotEmpty(account.getPassword())) {
            System.out.println("验证码认证通过");
            return true;
        }
        System.out.println("验证码认证不通过");
        return false;
    }

}

2.执行流程

public class CompileFlowTest {

    public static void main(String[] args) {
        Account account = new Account();
        account.setName("haha");
        account.setPassword("pwd");
        account.setVerificationCode("1111");

        //找到bpm文件的位置
        String code = "bpm.account";

        //设置上下文
        Map<String, Object> context = new HashMap<>();
        context.put("account", account);

        try {
            //执行流程
            ProcessEngine processEngine = ProcessEngineFactory.getProcessEngine();
            Map<String, Object> result = processEngine.start(code, context);

            if (Boolean.parseBoolean(result.get("result").toString())) {
                System.out.println("认证通过");
            } else {
                System.out.println("认证不通过");
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

执行结果

name认证通过
密码认证通过
验证码认证通过
认证通过

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值