Язык формул. Общие сведения
Описание языка формул Comindware
Настройка рабочей среды и пользовательского интерфейса Comindware Platform производится простым перетаскиванием элементов и не требует программирования.
В случае если ваш бизнес требует нетривиального подхода, воспользуйтесь возможностями языка формул Comindware, легкого, но эффективного языка программирования, встроенного в продукт.
С помощью формул вы сможете неограниченно масштабировать бизнес-процессы в согласии с нуждами вашего бизнеса.
Возможности языка формул Comindware:
- Изменение и определение значений атрибутов на основе данных, хранящихся в различных шаблонах записи.
- Проверка и изменение процессных данных.
- Задание временных рамок выполнения тех или иных процессных действий, например, разрешенные запросы в техподдержку могут закрываться автоматически после двух недель в неактивном состоянии.
- Назначение исполнителей задачи на основании того или иного условия (например, в зависимости от категории запроса).
- Настройка межпроцессного взаимодействия.
- Настройка вызова стороннего процесса внутри текущего.
- Настройка условий ветвления процесса.
- Защита платформы от негативного влияния человеческого фактора.
См. также:
- Литералы и функции в формулах. Справочник, описания, примеры
- Форматирование значений атрибутов в файле шаблона экспорта и формулах
- Системные атрибуты шаблона аккаунта
- Примеры формул
Контекст вычисления формул. Понятие и изменение
Понятие контекста всегда используется для настройки бизнес-логики и вычислений в Comindware Platform. В первую очередь, у любой информационной системы есть база данных, и чтобы получить какие-то данные из нее, нужно написать запрос к базе.
Контекст — это отправная точка запроса к базе данных. Границами контекста являются шаблоны записи, шаблоны процессов и пользовательские задачи, в которых пишется запрос (в форме вычисляемых атрибутов, правил на форме, фильтров и т.д.), и их нужно различать для правильного написания формулы.
$ — обозначение изначального контекста.
Для смены контекста используются атрибуты типа «Запись» или запроса вида from a in db. Чтобы поменять контекст на связанную запись, используются системные имена атрибутов типа «Запись» после $ и символы -> после системного имени атрибута. В сценариях можно менять контекст по самим атрибутам типа «Запись» или по выражению типа from a in db.
Примеры смены контекста
-
Пример 1: искомый атрибут находится в другом шаблоне, и в текущем контексте (шаблоне) есть ссылка на связанный шаблон.
$link->atributSystemNameЗдесь:
link: системное имя атрибута типа «Запись»;atributSystemName— системное имя атрибута в связанной записи.
Больше о вызове связанных данных читайте в статье Вызов связанных данных.
-
Пример 2: искомый атрибут находится в другом шаблоне записи, но в текущем контексте (шаблоне записи) нет ссылки на другой шаблон записи.
from a in db->recordTemplateSystemNamewhere EQUALS(a->attirbute1, $attribute2)select a->idЗдесь:
recordTemplateSystemName: системное имя искомого шаблона;attribute1: системное имя атрибута в искомом шаблоне;attribute2: системное имя атрибута в текущем шаблоне, с которым нужно сравнитьattribute1.
См. «Составление запросов на языке формул».
-
Пример 3: текущий контекст — это контекст задачи, а искомый атрибут находится в связанном с шаблоном процесса шаблоне записи.
$cmw.task.objectId->op.11Здесь
op.11— ID атрибута в связанном шаблоне записи. -
Пример 4: текущий контекст — это контекст процесса, а искомый атрибут находится в связанном шаблоне записи.
$$BusinessObject->attributeSystemNameЗдесь
attributeSystemName— системное имя атрибута в связанном шаблоне записи.
Основные правила написания формул
Работая с формулами в Comindware Platform, придерживайтесь следующих правил:
- В формулах используйте только идентификаторы и системные имена, а не отображаемые названия объектов.
- Для идентификаторов и системных имен учитывается регистр: буквы
Aиасчитаются разными. - Системные имена должны начинаться с буквы или символа подчеркивания (
_). В самом системном имени можно использовать латинские и русские буквы (A–Z,a–z,А–Я,а–я), числа (0–9) и символы подчеркивания (_). - Системные имена должны быть уникальны только в рамках одного шаблона. Системные атрибуты создаются автоматически под формализованными именами, такими как
id,_creationDate,_creator,_lastWriteDateи др. - Для того чтобы обратиться к тому или иному свойству текущего объекта, используйте оператор
$attributeSystemName($->attributeSystemName), где символ$представляет текущий шаблон, аattributeSystemName— системное имя атрибута этого шаблона. - Вы можете складывать и вычитать значения атрибутов типа «Дата и время» и «Длительность» между собой, руководствуясь следующей таблицей:
| Действие | Результат |
|---|---|
| Длительность +/- Длительность | Длительность |
| Дата и время +/- Длительность | Дата и время |
| Дата и время - Дата и время | Длительность |
См. также «Составление запросов на языке формул».
Вызов связанных данных
Для того чтобы обратиться к данным связанного шаблона записи через атрибут типа «Запись», который ссылается на этот шаблон, введите системное имя атрибута типа «Запись», символ -> и системное имя атрибута связанного шаблона записи.
Пример:
| Шаблоны записи | Атрибуты |
|---|---|
Staff (Персонал) |
Name (Имя) — системное имя атрибута с Ф. И. О. сотрудника. |
Cars (Автомобили) |
Driver (Водитель) — системное имя атрибута типа «Запись», ссылающегося на шаблон записи Staff (Персонал). |
Чтобы получить имя водителя для записи из шаблона «Автомобили», используйте следующее выражение:
$Driver->Name
Переходить по ссылкам можно неограниченное количество раз, но будьте внимательны, чтобы не образовалось зацикливание.
Составление запросов на языке формул
Здесь представлен синтаксис и примеры предложений и операторов для запросов на языке формул Comindware Platform.
Зарезервированные слова
Следующие слова нельзя использовать в запросе в качестве локальной переменной, так как они зарезервированы как системные:
and,ascending,between,by,db,descending,equals,from,group,in,into,item,join,let,on,orderby,select,source,where;- слова, начинающиеся с символа подчеркивания (
_); - имена функций и литералов;
Синтаксис запроса from where select
|
|
|
|---|---|
|
Описание |
Запрос должен начинаться с предложения
Примечание
|
|
Синтаксис |
|
|
Аргументы |
|
|
|
|
|
Описание |
Предложение Условие |
|
Синтаксис |
|
|
Аргументы |
|
|
|
|
|
Описание |
Предложение Предложение Предложение
|
|
Синтаксис |
|
|
Аргументы |
|
|
|
|
|
Описание |
Предложение Оператор В конечном результате учитываются как работа предыдущих операторов, так и любые выражения в самом операторе |
|
Синтаксис |
|
|
Аргументы |
|
Примеры запросов
-
Запрос записей районов Москвы с сортировкой по убыванию названия района.
from a in db->Citieswhere a->CityName == "Москва"orderby a->Districts->DistrictName descendingselect a->Districts -
Запрос названий и авторов книг, у которых указан автор, с сортировкой по возрастанию имени автора и выводом в формате «Название: название книги. Автор: имя автора».
from book in db->Bookswhere NOT(EMPTY(book->Author))orderby book->Author->Nameselect CONCAT(LIST('Название: ', book->Name, '. Автор: ', book->Author->Name)) -
Запрос просроченных отправлений (основной запрос) со склада в Сибири (вложенный запрос).
from shipment in (from warehouse in db->Warehouseswhere warehouse->Region == "Сибирь"select warehouse->shipments)where shipment->DeliveryDate < NOW() select shipment->id
Эта статья была полезна 1 чел.