Простая обработка событий процесса
Материал из BiTel WiKi
(Новая страница: «Разрешение на правку процесса в различных статусах различным группам, исполнителю либо а…») |
|||
Строка 39: | Строка 39: | ||
onProcessEvent.{@cnt}.ifExpression=processLink.getStatusProcessLinkedForSame( 6, 30 ) == 3 && processLink.getStatusProcessLinkedForSame( 6, 31 ) == 3 && processLink.getStatusProcessLinkedForSame( 6, 32 ) == 3 | onProcessEvent.{@cnt}.ifExpression=processLink.getStatusProcessLinkedForSame( 6, 30 ) == 3 && processLink.getStatusProcessLinkedForSame( 6, 31 ) == 3 && processLink.getStatusProcessLinkedForSame( 6, 32 ) == 3 | ||
onProcessEvent.{@cnt}.commands=linkedProcess:6:setStatus:3 | onProcessEvent.{@cnt}.commands=linkedProcess:6:setStatus:3 | ||
+ | </source> | ||
+ | |||
+ | Отправка СМС сообщения по созданию процесса, в случае наличия в значениях спискового параметра с кодом 26 1, 2 или 3. Используется операция пересечения множеств. Номер для СМС получается из параметра с кодом 20 типа Phone. | ||
+ | <source lang="bash"> | ||
+ | onProcessEvent.1.events=createFinished | ||
+ | onProcessEvent.1.ifExpression=cu.intersection(processParam.listValueIds(26), {1,2,3}).size() > 0 | ||
+ | onProcessEvent.1.doExpression=<<END | ||
+ | phone=processParam.getParamPhoneNoFormat(20); | ||
+ | if(phone) { | ||
+ | mtsc.sendSms(phone, "Заявка №".concat( process.getId().toString() ).concat( " принята" )); | ||
+ | } | ||
+ | END | ||
+ | </source> | ||
+ | |||
+ | Установка значения параметра типа text. | ||
+ | <source lang="bash"> | ||
+ | onProcessEvent.2.doExpression=<<END | ||
+ | dao = new("ru.bgcrm.dao.ParamValueDAO", conSet.getConnection()); | ||
+ | dao.updateParamText(process.getId(), 63, "тест"); | ||
+ | END | ||
+ | </source> | ||
+ | |||
+ | Установка значения параметра типа list. | ||
+ | <source lang="bash"> | ||
+ | onProcessEvent.2.doExpression=<<END | ||
+ | dao = new("ru.bgcrm.dao.ParamValueDAO", conSet.getConnection()); | ||
+ | dao.updateParamList(process.getId(), 63, {1}); | ||
+ | END | ||
</source> | </source> |
Версия 21:28, 28 февраля 2016
Разрешение на правку процесса в различных статусах различным группам, исполнителю либо администратору и запрет правки закрытого процесса.
onProcessEvent.1.checkExpression=process.getStatusId() !~ [9, 13, 36,39] or 8 =~ user.getGroupIds() onProcessEvent.1.checkErrorMessage=В этом статусе разрешена правка только сотрудникам КС onProcessEvent.2.checkExpression=process.getStatusId() != 9 or user.getId() =~ process.getExecutorIds() or 33 =~ user.getPermsetIds() onProcessEvent.2.checkErrorMessage=В этом статусе разрешена правка только исполнителем процесса либо администратором КС onProcessEvent.3.checkExpression=empty process.getCloseTime() onProcessEvent.3.checkErrorMessage=Запрещена правка закрытого процесса
Добавление текущего пользователя в исполнители и установка в статус с кодом 40, если процесс создан как привязанный к другому процессу.
onProcessEvent.1.events=createdAsLink onProcessEvent.1.commands=addExecutors:{@ctxUserId};setStatus:40
Изменение статуса процесса на 3 при получении в него нового сообщения. При привязке договора - копирование значений параметров с кодами 27 и 12 в описание процесса.
onProcessEvent.1.events=messageAdded onProcessEvent.1.ifExpression=process.getStatusId() != 3 onProcessEvent.1.commands=setStatus:3 # onProcessEvent.2.events=linkAdded onProcessEvent.2.commands=bgbilling:linkedContractParamToDescription:bg:27;bgbilling:linkedContractParamToDescription:bg:12
Отправка EMail по появлению нового сообщения в процессе.
onProcessEvent.1.events=messageAdded onProcessEvent.1.commands=emailNotifyExecutors:21:Новые сообщения в процессе
Команда может быть предварена префиксом, изменяющим изменяемый процесс.
linkedProcess:<typeId> - процесс с типом <typeId>, к которому привязан данный процесс, пример: # # закрытие БП, если закрыты три процесса "Контроль возврата", "Изготовение бух. акт", "Знакомстов с аккаунт менеджером" onProcessEvent.{@inc:cnt}.events=statusChanged:3 onProcessEvent.{@cnt}.ifExpression=processLink.getStatusProcessLinkedForSame( 6, 30 ) == 3 && processLink.getStatusProcessLinkedForSame( 6, 31 ) == 3 && processLink.getStatusProcessLinkedForSame( 6, 32 ) == 3 onProcessEvent.{@cnt}.commands=linkedProcess:6:setStatus:3
Отправка СМС сообщения по созданию процесса, в случае наличия в значениях спискового параметра с кодом 26 1, 2 или 3. Используется операция пересечения множеств. Номер для СМС получается из параметра с кодом 20 типа Phone.
onProcessEvent.1.events=createFinished onProcessEvent.1.ifExpression=cu.intersection(processParam.listValueIds(26), {1,2,3}).size() > 0 onProcessEvent.1.doExpression=<<END phone=processParam.getParamPhoneNoFormat(20); if(phone) { mtsc.sendSms(phone, "Заявка №".concat( process.getId().toString() ).concat( " принята" )); } END
Установка значения параметра типа text.
onProcessEvent.2.doExpression=<<END dao = new("ru.bgcrm.dao.ParamValueDAO", conSet.getConnection()); dao.updateParamText(process.getId(), 63, "тест"); END
Установка значения параметра типа list.
onProcessEvent.2.doExpression=<<END dao = new("ru.bgcrm.dao.ParamValueDAO", conSet.getConnection()); dao.updateParamList(process.getId(), 63, {1}); END