Эффективный способ хранения формулы для расчета финансовых отчетов? - PullRequest
0 голосов
/ 01 января 2012

Мы разрабатываем систему, которая будет составлять финансовые отчеты и другие финансовые вопросы.Мы разрабатываем приложение на Java / Java EE, в частности на JBoss Seam (Richfaces, a4j) + Javascript и других технологиях.

Теперь у нас есть много или формулы для расчета счетов финансовой отчетности.Нам нужно создать что-то, что можно использовать для хранения формул и их использования простым способом или в структуре данных, чтобы формулы не убивали приложение с фиксированными числами / ссылками во всем коде.(Вопрос обеспечения работоспособности.)

Теперь у нас есть формулы в листе MS Excel.Там у нас есть общие формулы из Excel (= A30 + B40).Каждая строка в Excel - это учетная запись, которую мы в конечном итоге будем хранить в таблице базы данных SQL-сервера (account), но основной момент здесь заключается в том, как хранить / управлять формулами для лучшего использования, чем где-либо в жестком коде.

Я знаю, что финансовая система делает это, но я не мог найти много информации об этом.

Ответы [ 3 ]

3 голосов
/ 01 января 2012

Если ваша основная задача - это возможность обслуживания формул, я могу подумать о двух разных подходах, которые могут помочь.

  • Сохраните формулы в Excel и используйте что-то вроде Apache POI для записи значений втаблицу, затем прочитайте обратно оцененные формулы.(См. http://poi.apache.org/spreadsheet/eval.html.) Не уверен, насколько хорошо это масштабируется или работает, но явным преимуществом является то, что если ваш клиент постоянно настраивает формулы на листе Excel, изменения вступают в силу сразу, а не постоянно воспроизводят наверстывание.

  • Переведите формулы в Java POJO, но объедините их все в один класс или пакет чистой бизнес-логики без зависимостей Java EE, Seam или JSF.повторяйте перевод на Java каждый раз, когда изменяется версия Excel, по крайней мере, все это в одном месте с четким отображением между исходным источником Excel. Вы также можете использовать язык сценариев, чтобы позволить изменять формулы без цикла перезапуска / повторного развертывания.

1 голос
/ 01 января 2012

Звучит как отличное приложение для функции, либо в коде приложения, либо в виде функции sql. Я настоятельно рекомендую хранить ваши функции в коде Java вместо SQL, так как это намного проще для тестирования и изменения. Правда, встроенные функции sql могут работать лучше и могут выполняться в пакетном режиме, но производительность - это еще не все, как вы будете знать, когда будете их отлаживать или изменять.

1 голос
/ 01 января 2012

Однажды мы сделали что-то похожее, где сохранили формулы KPI в таблице SQL.Наша программа на C считала и запустила SQL из таблицы.

В наших KPI используются весовые коэффициенты для различных факторов, влияющих на статистику.Таким образом, мы могли бы изменить вес и формулу (добавление или удаление коэффициентов) без необходимости изменять программу.

...