首页 > 其他分享 >一个轻量级的脚本规则引擎工具 Aviator Script

一个轻量级的脚本规则引擎工具 Aviator Script

时间:2023-08-10 18:56:00浏览次数:43  
标签:map Script exp org import Aviator 轻量级

告别if else!试试这款轻量级流程引擎吧,跟SpringBoot绝配! (qq.com)

 

println("Hello Aviator Script!");

a=b+c;
println("a="+a);

执行:

package com.yuyi.advanced.pis;

import com.googlecode.aviator.AviatorEvaluator;
import com.googlecode.aviator.Expression;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.core.io.ClassPathResource;
import org.springframework.test.context.junit.jupiter.SpringExtension;

import java.io.IOException;
import java.util.HashMap;

@ExtendWith(SpringExtension.class)
class StarterApplicationTests {

    @Test
    void contextLoads() throws IOException {
        // 获取路径
        ClassPathResource classPathResource = new ClassPathResource("/script/hello.av");
        String scriptPath = classPathResource.getPath();
        // 编译
        Expression exp = AviatorEvaluator.getInstance().compileScript(scriptPath);
        // 上下问参数
        HashMap<String, Object> map = new HashMap<>();
        map.put("b",3000);
        map.put("c",3000);
        // 执行
        exp.execute(map);
    }

    @Test
    void compile(){
        // 定义脚本
        String script = "println(\"Hello Aviator Script\")";
        // 编译
        Expression exp = AviatorEvaluator.getInstance().compile(script);
        // 执行
        exp.execute();
    }

}

执行结果:

 

标签:map,Script,exp,org,import,Aviator,轻量级
From: https://www.cnblogs.com/gzhich2019/p/17621255.html

相关文章

  • JavaScript访问者模式:优雅地遍历对象
    JavaScript访问者模式JavaScript中的访问者模式是一种优雅的设计模式,它可以帮助我们遍历对象并执行特定操作。在本文中,我们将介绍访问者模式的概念、实现方式以及一个简单的示例。什么是访问者模式?访问者模式是一种行为型设计模式,它允许我们在不改变对象结构的情况下,定义新的操......
  • JavaScript常用校验类方法
    #前端常用校验类工具方法#邮箱exportconstisEmail=(s)=>{return/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((.[a-zA-Z0-9_-]{2,3}){1,2})$/.test(s)}123#手机号码exportconstisMobile=(s)=>{return/^1[0-9]{10}$/.test(s)}123#电话号码e......
  • 基于轻量级OpenPose的人体骨架提取
    1、项目源码及权重文件下载项目源码:https://github.com/Daniil-Osokin/lightweight-human-pose-estimation.pytorch/blob/master/demo.py权重文件:https://download.01.org/opencv/openvino_training_extensions/models/human_pose_estimation/checkpoint_iter_370000.pth需要注......
  • 使用 WebSockets、React 和 TypeScript 构建实时投票应用程序
    长话短说WebSocket允许您的应用程序具有“实时”功能,其中更新是即时的,因为它们是在开放的双向通道上传递的。这与CRUD应用程序不同,CRUD应用程序通常使用HTTP请求,必须建立连接、发送请求、接收响应,然后关闭连接。要在React应用程序中使用WebSockets,您需要一个专用服务器,例......
  • (笔记)Linux内核编译: scripts/kconfig/lxdialog/dialog.h:38:20: fatal error: curse
     一、问题描述在编译Linux内核时,使用makemenuconfig报错:scripts/kconfig/lxdialog/dialog.h:38:20:fatalerror:curses.h:Nosuchfileordirectortdyizhen1314@ubuntu:~/tronlong/AM57X/kernel/linux-4.9.65$makeARCH=armCROSS_COMPILE=arm-linux-gnueabihf-menuc......
  • Vulkan Descriptor绑定过程
    如果shader中的资源是这么排布的://vslayout(set=0,binding=0,std140)uniformUBO{mat4projection;mat4view;mat4model;}ubo;layout(location=0)invec3inPos;layout(location=0)outvec3outUVW;//fslayout(set=0,binding=1)uni......
  • 【JavaScript31】HTML DOM节点与节点属性
    前言DOM(DocumentObjectModel)文档对象模型,通过HTMLDOM,JavaScript能够访问和改变HTML文档的所有元素。当网页被加载时,浏览器会创建页面的文档对象模型(DocumentObjectModel)。HTMLDOM模型被结构化为对象树:DOM节点根据W3C的HTMLDOM标准,HTML文档中的所有内......
  • 【JavaScript30】promise
    在前端js中是可以发送网络请求的,如果前端js的请求是线性的请求(同步),网站的体验会很差。设计js发请求的那个人.选择了使用异步执行方式.大幅度的提升用户体验.console.log("我要发请求了");setTimeout(function(){console.log("服务器返回结果了");},2000);//假设......
  • SyntaxError: Error parsing JavaScript expression: Unexpected token, expected ","
    项目环境C:\Users\19139>node-vv18.16.0C:\Users\19139>pnpm-v8.2.0vue3+vite4打包报错"vue":"3.3.4","vite":"4.0.4","rollup":"^3.27.2",报错D:\work\demo>npmrunbuild>base-m......
  • 重学JavaScript Promise API
    在这篇教程中,我们将掌握如何在JavaScript中创建并使用Promise。我们将了解Promise链式调用、错误处理以及最近添加到语言中的一些Promise静态方法。什么是Promise?在JavaScript中,一些操作是异步的。这意味着当这些操作完成时,它们产出的结果或者值并不会立即生效。Promise是一......