Оглавление | ||||
---|---|---|---|---|
|
JEXL
Якорь | ||||
---|---|---|---|---|
|
JEXL - язык коротких выражений.
Используется для написания в конфигурации макросов условных выражений, гибкого вычисления небольших строк. Помимо операторов, описание которых доступно по ссылке в конце раздела, язык поддерживает обращение к функциям Java - объектов, переданных на вход обработчика в зависимости от условий.
Для вызова функции Java объекта необходимо ввести название объекта в контексте, точку и непосредственно вызов функции. Для вызова статического метода класса указывается имя класса с точкой.
Пример использования выражения:
Блок кода | ||||
---|---|---|---|---|
| ||||
processCreateLink.1.title=Проект (Уфа)
processCreateLink.1.processTypeId=9260
processCreateLink.1.linkType=processDepend
processCreateLink.1.checkExpression=1 =~ processParam.addressCityIds( 90 ) and process.getStatusId() == 39
processCreateLink.1.copyParams=90,89,238
processCreateLink.1.copyLinks=1 |
В данном случае создание связанного процесса будет доступно только для процессов в статусе с кодом 39 и с наличием адреса в параметре с кодом 90 с городом 1.
В JEXL процессор всегда передаются объекты:
- u - статический контекст объекта
- возможность вызова статических функций;Crm_javadoc Name ru.bgcrm.util.Utils - tu - статический контекст объекта
- возможность вызова статических функций;Crm_javadoc Name ru.bgcrm.util.TimeUtils - su - статический контекст объекта org.apache.commons.lang.StringUtils - возможность вызова статических функций;
- сu - статический контекст объекта org.apache.commons.collections.CollectionUtils - возможность вызова статических функций;
- NEW_LINE - перенос строки;
- NEW_LINE2 - два переноса строки.
Дополнительные объекты передаются в зависимости от места использования.
При необходимости выражения могут быть многострочными, при этом результат (если он есть) возвращается оператором return. Пример многострочного скрипта для простого обработчика событий процесса:
Блок кода | ||||
---|---|---|---|---|
| ||||
onProcessEvent.2.doExpression=<<END
dao = new("ru.bgcrm.dao.ParamValueDAO", conSet.getConnection());
dao.updateParamText(process.getId(), 63, "тест");
END |
Часто необходимая информация (детальное описание - по ссылкам далее):
- оператор [] - создание массива, {} - HashSet, подойдёт на место Collection;
- функция new (см. пример выше) - создание объекта класса, конструктор может быть с параметрами;
- операторы проверки наличия объектов в коллекциях: =~ , !~
Методы вызываются у объектов классов с помощью точки, для вызова статического метода используется объект типа java.lang.Class нужного класса, который может быть создан просто записью полного имени класса. Небольшой пример, как вызывать статические методы ru.bgcrm.util.Utils.
Блок кода | ||||
---|---|---|---|---|
| ||||
u = ru.bgcrm.util.Utils;
v = u.parseInt(3); |
Подробная спецификация по языку:
http://commons.apache.org/jexl/reference/syntax.html#Functions
- https://commons.apache.org/proper/commons-jexl/apidocs/org/apache/commons/jexl3/package-summary.html
Примечание | |||||||
---|---|---|---|---|---|---|---|
Обратите внимание на вызов функции u.escapeXml - она преобразует все символы HTML разметки в спецпоследовательности. Если не использовать эту функцию для генерации HTML, возможны проблемы, в случае появления в описании процесса символов <,> либо кавычек. Пример:
|
Java REGEXP
Якорь | ||||
---|---|---|---|---|
|
...
http://www.opennet.ru/docs/RUS/perlre_man/ - регулярные выражения Perl, практически идентичны Java.
http://j2w.blogspot.com/2008/01/java.html - регулярные выражения Java.
http://docs.oracle.com/javase/1.5.0/docs/api/java/util/regex/Pattern.html - спецификация на английском.
Log4j
Log4j - библиотека логирования для Java. Настройка логирования производится в файле log4j.properties, изменение файла можно производить при работающем приложении. Вид файла при установке системы:
Блок кода | ||||
---|---|---|---|---|
| ||||
log4j.rootLogger=INFO, file
log4j.logger.ru.bgcrm=INFO, file
log4j.additivity.ru.bgcrm=false
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{MM-dd/HH:mm:ss} %5p [%t] %c{1} - %m%n
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{MM-dd/HH:mm:ss} %5p [%t] %c{1} - %m%n
log4j.appender.file.File=./log/bgcrm.log
log4j.appender.file.Append=true
log4j.appender.file.BufferedIO=false
log4j.appender.file.BufferSize=1024
log4j.appender.file.MaxBackupIndex=5
log4j.appender.file.MaxFileSize=10MB |
Сообщения в логе разделяются на уровни (в порядке возрастания): DEBUG, INFO, WARN, ERROR, FATAL. По-умолчанию настроен уровень INFO, т.е. выводятся информационные и ошибочные сообщения (INFO, FATAL, ERROR), отладка не выводится. Вывод осуществляется в файл log/bgcrm.log, который обрезается на размере 10МБ с созданием отдельных файлов.
Для включения вывода отладочной информации необходимо установить:
Блок кода | ||||
---|---|---|---|---|
| ||||
log4j.logger.ru.bgcrm=DEBUG, file |
В конфигурационном файле возможно изменять формат информации в файле, фильтр по классам и другие параметры логирования.
Ссылки:
http://artamonov.ru/2007/04/06/vvedenie-v-log4j/ - вводная статья на русском.
XSLT 2.0
Якорь | ||||
---|---|---|---|---|
|
Информация | ||
---|---|---|
| ||
Использование XSLT более не развивается в продукте. Первоначально использовалась для генерации документов в плагине Document, но в новых версиях вместо XSLT могут использоваться JSP шаблоны. |
XSLT - язык, основанный на формате XML. Его назначение - трансформация XML дерева с данными в какой-либо результирующий формат. Например: TXT, XHTML (HTML документ, соответсвующий правилам формата XML). Трансформация производится XSLT процессором.
...
http://ru.wikipedia.org/wiki/XSLT - статья в Wikipedia
http://www.xmlhack.ru/texts/02/xslt20/xslt20.html - отличия XSLT 2.0 от 1.0 версии
http://www.xmlhack.ru/texts/02/xpath20/xpath20.html - отличия XPath 2.0 от 1.0 вервсии
http://www.saxonica.com/documentation/functions/intro.xml - реализованные в процессере Saxon функции XSLT
http://www.w3.org/TR/xslt20/ - XSLT 2.0 спецификация
http://www.w3.org/TR/xpath20/ - XPath 2.0 спецификация
http://www.w3.org/TR/xpath-datamodel/ - модель данных XPath
JEXL
...
JEXL - язык коротких выражений.
Используется для написания в конфигурации макросов условных выражений, гибкого вычисления небольших строк. Помимо операторов, описание которых доступно по ссылке в конце раздела, язык поддерживает обращение к функциям Java - объектов, переданных на вход обработчика в зависимости от условий.
Для вызова функции Java объекта необходимо ввести название объекта в контексте, точку и непосредственно вызов функции. Для вызова статического метода класса указывается имя класса с точкой.
Пример использования выражения:
Блок кода | ||||
---|---|---|---|---|
| ||||
processCreateLink.1.title=Проект (Уфа)
processCreateLink.1.processTypeId=9260
processCreateLink.1.linkType=processDepend
processCreateLink.1.checkExpression=1 =~ processParam.addressCityIds( 90 ) and process.getStatusId() == 39
processCreateLink.1.copyParams=90,89,238
processCreateLink.1.copyLinks=1 |
В данном случае создание связанного процесса будет доступно только для процессов в статусе с кодом 39 и с наличием адреса в параметре с кодом 90 с городом 1.
В JEXL процессор всегда передаются объекты:
- u - статический контекст объекта
- возможность вызова статических функций;Crm_javadoc Name ru.bgcrm.util.Utils - tu - статический контекст объекта
- возможность вызова статических функций;Crm_javadoc Name ru.bgcrm.util.TimeUtils - su - статический контекст объекта org.apache.commons.lang.StringUtils - возможность вызова статических функций;
- сu - статический контекст объекта org.apache.commons.collections.CollectionUtils - возможность вызова статических функций;
- NEW_LINE - перенос строки;
- NEW_LINE2 - два переноса строки.
Дополнительные объекты передаются в зависимости от места использования.
Ссылки:
Примечание | |||||||
---|---|---|---|---|---|---|---|
Обратите внимание на вызов функции u.escapeXml - она преобразует все символы HTML разметки в спецпоследовательности. Если не использовать эту функцию для генерации HTML, возможны проблемы, в случае появления в описании процесса символов <,> либо кавычек. Пример:
|
Log4j
Log4j - библиотека логирования для Java. Настройка логирования производится в файле log4j.properties, изменение файла можно производить при работающем приложении. Вид файла при установке системы:
Блок кода | ||||
---|---|---|---|---|
| ||||
log4j.rootLogger=INFO, file
log4j.logger.ru.bgcrm=INFO, file
log4j.additivity.ru.bgcrm=false
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{MM-dd/HH:mm:ss} %5p [%t] %c{1} - %m%n
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{MM-dd/HH:mm:ss} %5p [%t] %c{1} - %m%n
log4j.appender.file.File=./log/bgcrm.log
log4j.appender.file.Append=true
log4j.appender.file.BufferedIO=false
log4j.appender.file.BufferSize=1024
log4j.appender.file.MaxBackupIndex=5
log4j.appender.file.MaxFileSize=10MB |
Сообщения в логе разделяются на уровни (в порядке возрастания): DEBUG, INFO, WARN, ERROR, FATAL. По-умолчанию настроен уровень INFO, т.е. выводятся информационные и ошибочные сообщения (INFO, FATAL, ERROR), отладка не выводится. Вывод осуществляется в файл log/bgcrm.log, который обрезается на размере 10МБ с созданием отдельных файлов.
Для включения вывода отладочной информации необходимо установить:
Блок кода | ||||
---|---|---|---|---|
| ||||
log4j.logger.ru.bgcrm=DEBUG, file |
В конфигурационном файле возможно изменять формат информации в файле, фильтр по классам и другие параметры логирования.
Ссылки:
http://artamonov.ru/2007/04/06/vvedenie-v-log4j/ - вводная статья на русском.