Разработка JavaScript для блокировки анализов на основе формулы

При попытке пользователя ввести или изменить формулу столбца Oracle Analytics вызывает функцию validateAnalysisFormula для проверки операции. Можно настроить функцию validateAnalysisFormula для проверки и блокировки формул на основе определенных критериев. Если функция возвращает значение true, формула принимается. Если проверка не пройдена, функция возвращает значение false, формула отклоняется и отображается пользовательское сообщение.

Чтобы отобразить сообщение и разрешить пользователям продолжить, функция должна вернуть значение true. Чтобы заблокировать запрос, функция должна вернуть значение false или отобразить сообщение. Для исследования и проверки формулы в функции можно использовать строку JavaScript и методы регулярных выражений.

Служебные функции доступны для того, чтобы функция блокировки запроса могла проверять наличие фильтров, столбцов и т. д. См. раздел "Служебные функции проверки".

Например, следующий код показывает, как заблокировать запрос, если пользователь вводит недопустимую формулу.

// This is a formula blocking function. It makes sure the user doesn't enter an unacceptable formula.
function validateAnalysisFormula(sFormula, sAggRule)
{
   // don't allow the use of concat || in our formulas
   var concatRe = /\|\|/gi;
   var nConcat = sFormula.search(concatRe);
   if (nConcat >= 0)
      return "You used concatenation (character position " + nConcat + "). That isn't allowed.";
   // no case statements
   var caseRe = /CASE.+END/gi;
   if (sFormula.search(caseRe) >= 0)
      return "Don't use a case statement.";
   // Check for a function syntax: aggrule(formula) aggrule shouldn't contain a '.'
   var castRe = /^\s*\w+\s*\(.+\)\s*$/gi;
   if (sFormula.search(castRe) >= 0)
      return "Don't use a function syntax such as RANK() or SUM().";
    return true;
}