如何在java web应用程序中捕获公式并支持公式评估



我们需要在java web应用程序中包含一个基于excel的工具。该excel工具具有一组主数据和两个使用主数据公式计算的结果输出。

主数据可以在带有关系表的数据库中捕获我们正在寻找提供捕获、验证和评估能力的最佳方式公式。

到目前为止,我们研究了使用脚本引擎nashorn,并使用eval提供公式支持。我们想知道其他地方的人们过得怎么样。

我搜索了两个可能对您有用的库,请看一看。

http://mathparser.org/

http://mathparser.org/mxparser-hello-world/mxparser-hello-world-java/

https://lallafa.objecthunter.net/exp4j/

https://lallafa.objecthunter.net/exp4j/#Evaluating_an_expression_asynchronously

取决于数据的大小和所需的SLA。还取决于您想要支持的公式/其他函数的类型。

例如,考虑像sum or max这样的函数。现在,主数据在一些包含10k行的关系表中。您可以在java应用程序中提取所有这些数据,并进行求和(或运行任何函数(。但是,想象一下,如果该表包含500K行。这将需要一些时间将所有50万行流式传输到Java应用程序,但会消耗大量的cpu和网络带宽(数据库资源、本地cpu资源(。在这种情况下,更好的优化方案是对数据库中的列进行索引,并让数据库为您完成所有的艰苦工作。

就我个人而言,我不喜欢使用eval。我更愿意解析用户输入来确定要采取的操作。

我假设数据不足以使用大数据工具。

最新更新