SPLWare / esProc

esProc SPL is a scripting language for data processing, with well-designed rich library functions and powerful syntax, which can be executed in a Java program through JDBC interface and computing independently.
http://doc.scudata.com/esproc/
Apache License 2.0
4.54k stars 323 forks source link

[建议]esProc项目拆分成多模块 #36

Open entropy-cloud opened 1 year ago

entropy-cloud commented 1 year ago

Nop低代码平台中包含了一个开源的中国式报表引擎NopReport。我在NopReport中集成了集算器的功能,可以使用SPL为NopReport提供数据。介绍视频 https://www.bilibili.com/video/BV1Km4y1m7y2/。在集成SPL的过程中,我感觉有一些可以改进的地方

  1. SPL的设计器可以和运行时分开,这样更容易升级到高版本JDK上,也便于集成到Quarkus等框架中,使用GraalVM技术编译为exe。

  2. SPL的配置文件可以按照可逆计算原理进行改造,这样esProcFunctions_zh.xml这样的配置可以内置在jar包中,但是我们需要增强的时候,可以采用如下方式进行扩展

    <funcs x:extends="raw:/config/esProcFunctions_zh.xml">
    这里只写扩展配置,可以覆盖系统内置配置
    </funcs> 

    具体原理可以参见我的文章 XDSL:通用的领域特定语言设计

  3. SPL可以将编译和运行分开。这样编译得到某种AST语法树之后,可以增加一些语义方面的限制和校验,比如限制文件路径必须符合某种模式等。或者在Context上增加一个ResourceLoader机制,把文件获取完全隔离到某个用户可定制的接口中,而不是直接在home目录下拼接子目录。目前的代码实现似乎是有安全漏洞的,通过../../../这种相对路径似乎可以突破目录限制访问到外部目录。

jbx1279 commented 1 year ago

不明觉厉,不会答复了:(