Как захватить формулы и поддержать формулу оценки в веб-приложении Java - PullRequest
0 голосов
/ 17 ноября 2018

У нас есть требование включить инструмент на базе Excel в веб-приложение Java. Этот инструмент Excel имеет набор основных данных и пару выходных результатов, используя вычисления формул для основных данных.

Основные данные могут быть записаны в базу данных с помощью реляционных таблиц. Мы ищем лучший способ обеспечить возможность сбора, проверки и оценки. формул.

Пока что рассмотрено использование скриптовых движков nashorn и поддержка формул с использованием eval. Мы хотели бы знать, как люди живут в других местах.

Ответы [ 2 ]

0 голосов
/ 17 ноября 2018

Зависит от того, насколько велики ваши данные и какой у вас требуемый SLA.Также о том, какие формулы / другие функции вы хотите поддерживать.

Например, рассмотрим функцию типа sum or max.Теперь основные данные находятся в некоторой таблице отношений, содержащей 10 тыс. Строк.Вы можете получить все эти данные в приложении Java и сделать сумму (или запустить любую функцию).Однако представьте, если таблица содержит 500К строк.Это заняло бы некоторое время для потоковой передачи всех 500К строк в приложение Java, но потребляет много ресурсов процессора и пропускную способность сети (ресурсы базы данных, локальные ресурсы процессора).Лучше оптимизированный сценарий в этом случае будет индексировать этот столбец в базе данных и позволить базе данных сделать всю тяжелую работу за вас.

Лично я не люблю использовать eval.Я бы лучше проанализировал пользовательский ввод, чтобы определить, какие действия предпринять.

Я предполагаю, что данные не велики, чтобы использовать большие инструменты данных.

0 голосов
/ 17 ноября 2018

Я искал и нашел две возможные библиотеки, которые могут быть полезны для вас, пожалуйста, посмотрите.

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

...