初识compileflow工作流

1.前言

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

2.入门CompileFlow

首先,需要引入代码包。


    com.alibaba.compileflow
    compileflow
    1.2.0

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

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

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

1.编辑bpm文件

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

初识compileflow工作流_第1张图片

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

将bpm文件切到ProcessFlow视图

初识compileflow工作流_第2张图片

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

初识compileflow工作流_第3张图片

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

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

初识compileflow工作流_第4张图片 

初识compileflow工作流_第5张图片 

第二步,创建连接节点。

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

初识compileflow工作流_第6张图片

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

初识compileflow工作流_第7张图片

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

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

初识compileflow工作流_第8张图片

 

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 context = new HashMap<>();
        context.put("account", account);

        try {
            //执行流程
            ProcessEngine processEngine = ProcessEngineFactory.getProcessEngine();
            Map 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认证通过
密码认证通过
验证码认证通过
认证通过

你可能感兴趣的:(Java,java)