ProcessListeners
v.7.6
Технические вопросы
7.x

Коллеги, добрый день!

Только начинаю осваивать BPM (и уже на версии 7.6).

Подскажите, как поле ProcessListeners нужно использовать?

Есть ли какое-то описание как оно используется?

Нравится

6 комментариев

Добрый день!

Данное поле является служебным, поэтому не рекомендуется его изменять. В нем хранится информация о процессах, которые могут быть запущены при:
1) изменении записи
2) удалении записи

"Демьяник Алексей Олегович" написал:поле является служебным

Алексей, здравствуйте!
Спасибо за ответ.
Если возможно, подскажите как узнать подробнее, что происходит с данным полем (ссылка на SDK, либо на схемы конфигурации, где можно по коду понять суть).

Доброе утро!

Для понимания, как обрабатывается данное поле, Вы можете просмотреть в BaseEntity методы TryProcessComplete и ProcessCompleteExecuting.

"Демьяник Алексей Олегович" написал:в BaseEntity методы TryProcessComplete и ProcessCompleteExecuting.

Алексей, добрый день! В пакете Base нашел объект BaseEntity, являющийся структурой базового объекта, где нет никаких методов

Добрый день!

В базовом объекте есть два вида свойств:
1) свойства объекта
2) процессы, запускаемые по событиям в объекте

Кнопки переключения между режимами отмечены желтым цветом:

Для того, чтобы просмотреть исходный код объекта, Вам необходимо в правом верхнем углу нажать "Дополнительно" -> "Открыть исходный код":

В открывшемся окне введите в строку поиска запрашиваемые методы.

В случае если ProcessListeners отрицательный, синхронизация мобильного приложения происходит не корректно, так как данное поле участвует в параметрах синхронизации:

...   [ProcessListeners] >= 0 ...

Показать все комментарии
RemindingsCheckInterval
Интервал проверки уведомлений
Системные настройки
7.x

Добрый день,
Подскажите, в каких единицах измеряется Системная настройка "Интервал проверки уведомлений RemindingsCheckInterval" ?

Нравится

2 комментария
Технические вопросы
7.x

Разбираясь с нюансами работы bpm'online, создал SVN хранилище, затем создал свой пакет.
Дальше - немного начудил :)
Удалил хранилище. Теперь хочу удалить пакет - не получается. Система ругается "хранилище не зарегистрировано".
Подскажите, как удалить пакет?

Нравится

3 комментария

Добрый день, Николай.

Есть два решения данной задачи.
1) Создать новое хранилище и указать к нему путь. Удалить пакет и зафиксировать изменения в хранилище.

2) В файле Web.config приложения (находится в папке WebApp на сервере приложения) изменить:

  <appSettings>
    <add key="UseSvn" value="true" />

на

  <appSettings>
    <add key="UseSvn" value="false" />

После, очистить Редис и удалить ненужный пакет.

Алексей, спасибо! Получилось :)

Андрей, данный комментарий, вероятно, уже устарел.

Подскажите, с какой проблемой вы сейчас столкнулись?

Показать все комментарии

Часто при необходимости показать в документации или переписке диаграмму процесса просто открывают её в дизайнере и делают скриншот. Таким образом нельзя сохранить большой процесс, не умещающийся целиком на экране в нормальном масштабе.

О возможности сохранить бизнес-процесс в виде графического файла зачастую не знают даже опытные пользователи системы. Но она есть.:wink:

Terrasoft 3.X:
3.X
Две кнопки, экспорт в BMP и в WMF.

bpm'online 5.X и 7.X:
5.X
Есть возможность выбрать формат JPEG, BMP или PNG.

Лучше всего выбирать формат BMP или PNG. В изображениях JPG возможны артефакты сжатия, процессы в WMF также выглядят не очень.

process

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

Нравится

Поделиться

0 комментариев
Показать все комментарии
LDAP
авторизация
Технические вопросы
7.x

Добрый день!
Такая ситуация:

1) Настроена синхронизация с LDAP, пользователи и контакты добавляются, лицензии назначены, но в систему войти под доменныйм паролем не удается. Неверное имя пользователя, причем если через базу сделать update пароля для LDAP-пользователя (ну взять от suervisor например), то система радостно запускает сотрудника.

2) Для импортируемых иp LDAP пользователей контрагент автоматически проставляется, а должность и тип "Сотрудник" нет.

Подскажите, в какую сторону копать?
Спасибо

Нравится

2 комментария

Здравствуйте.
1) При LDAP-авторизации BPM'online проверяет пароль не в базе данных, а обращается к домену и если получает ответ, что учётные данные пользователя корректны - разрешает вход в систему. Для возможности LDAP-авторизации нужно кроме настройки синхронизации, добавить в конфигурационный файл web.config (находится в корне директории с файлами сайта) провайдер авторизации - Ldap (важен регистр).
Пример:

 <auth providerNames="InternalUserPassword,Ldap"

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

Спасибо, Александр.
Добавление auth providerNames="InternalUserPassword,Ldap" решило все вопросы.

Показать все комментарии

Добрый день,

Каким образом можно удалить Обращения, если при их удалении пишется о том, что "Удаление элементов, используемых в других объектах невозможно".

можно, например, удалить данные сообщения напрямую в БД?

Нравится

2 комментария

Маргарита, здравствуйте!

Данное сообщение означает, что у записи присутствует связь с другими объектами. Например, запись задействована в БП или присутствует на детали у другого объекта.

Приложение предусматривает накопление данных, а не удаление.
Также если удалить записи, то могут возникнуть другие ошибки при работе с другими объектами, где данные записи присутствовали.

Если же необходимо удалить такие записи, то это возможно только через БД.

Необходимо выполнить скрипт на удаление, например:

Delete from "Case"
Where Number=’CR-1

Но выполнив скрипт запись не удалиться, а выдаст результат с ошибкой, что данная запись присутствует в конкретной таблице/колонке.
В результате необходимо с начала удалить запись (по ID записи) с связанных таблиц, а затем саму запись.

Спасибо Дмитрий за ваш ответ)

Показать все комментарии

Здравствуйте,

В примере ниже проверяется, что leftExpression равно value, одному value. Можно ли проверить, что leftExpression равно одному из многих значений, указанных в value, т.е. чтобы value был массивом значений? Пробовал писать что-то подобное "value": ["bla1", "bla2"] но, видимо, чего-то не хватало..

"UsrCandforVac": {
        "BindParameterVisibleUsrCandforVacByUsrCandGlobalStatus": {
                ruleType: BusinessRuleModule.enums.RuleType.BINDPARAMETER,
                property: BusinessRuleModule.enums.Property.VISIBLE,
                logical: Terrasoft.LogicalOperatorType.AND,
                "conditions": [{
                        "leftExpression": {
                                "type": BusinessRuleModule.enums.ValueType.ATTRIBUTE,
                                "attribute": "UsrCandGlobalStatus"
                        },
                        "comparisonType": Terrasoft.ComparisonType.EQUAL,
                        "rightExpression": {
                                "type": BusinessRuleModule.enums.ValueType.CONSTANT,
                                "value": "5fc83e17-0996-4642-bb22-1f93869c6ebc"
                        }
                }]
        }
}

Спасибо

Нравится

2 комментария

Добрый день!

К сожалению, значение "Value" не принимает массив. "Value" может принимать значение булево или один элемент значения.

Если Вам необходимо несколько значений, то Вы можете в массиве conditions добавлять необходимо количество раз код, который ниже:

{
                        "leftExpression": {
                                "type": BusinessRuleModule.enums.ValueType.ATTRIBUTE,
                                "attribute": "UsrCandGlobalStatus"
                        },
                        "comparisonType": Terrasoft.ComparisonType.EQUAL,
                        "rightExpression": {
                                "type": BusinessRuleModule.enums.ValueType.CONSTANT,
                                "value": "5fc83e17-0996-4642-bb22-1f93869c6ebc"
                        }
                }

но с разными значениями value.

Спасибо. Думаю подобное нужно реализовать в следующих версиях. И вообще синтаксис правил уж больно громоздкий. Похоже, лучше использовать много мелких функций практически во всех случаях..

Показать все комментарии
Сервис_Обращение_Приоритет_обращения_ITIL_service7.5.0
Технические вопросы
7.x

Добрый день,

Необходимо реализовать связь определенного Сервиса и Договора с конкретным Приоритетом обращения.
Например;
Сервис 1 Договор 1 всегда соответствует Приоритету Обращений "Высокий",
Сервис 1 Договор 2 всегда соответствует Приоритету Обращений "Критический",
Сервис 2 Договор 1,Договор 2 всегда соответствует Приоритету обращений "Низкий" и т.д.

т.е. при выборе Сервиса и Договора в Обращении, оно должно автоматически получать Приоритет по правилам указанным выше.

Каким образом лучше всего реализовать поставленную задачу?
можно ли обойтись без бизнес-процессов?

bpm'online ITIL service 7.5.0

Нравится

5 комментариев

На странице Сервсиса в Сервисном договоре, я добавила поле "Рекомендуемый приоритет" из справочника Приоритет Обращения.
как можно использовать это значение дальше?

Добрый день, Маргарита!

В коробочной версии программного продукта можно указать приоритет по умолчанию для всех обращений в соответствующей системной настройке.

В вашем кейсе пользовательскими средствами описанную Вами логику можно реализовать только при помощи бизнес-процесса. Настраиваемый процесс может устанавливать приоритет Обращения, в зависимости от значения поля "Рекомендуемый приоритет" в Сервисном договоре.

Настроенный процесс будет подобного вида:

1. Стартовый сигнал. Процесс должен стартовать при создании нового Обращения.
2. Чтение данных. Должны быть прочитаны данные Обращения.
3. Чтение данных. Прочитать данные Сервисного договора.
4. Изменение данных. В обращении указать приоритет из Сервисного договора.

Спасибо, Елена,

Что-то меняется, если я буду использовать рекомендуемый приоритет не из Сервисного договора, а именно из "Сервиса в договоре" ?

1. Стартовый сигнал. Процесс должен стартовать при создании нового Обращения.
2. Чтение данных. Должны быть прочитаны данные Обращения.
3. Чтение данных. Прочитать данные "Сервиса в Сервисном договоре" (есть ли отдельно такой объект???).
4. Изменение данных. В обращении указать приоритет из "Сервиса в сервисном договоре".

потому что нужны разные приоритеты для одного и того же сервиса в зависимости от договора в котором его предоставляют.

Еще столкнулась со следующей проблемой:

в деталь Сервис в сервисном договоре внесла изменения
http://*****/0/NUI/ViewModule.aspx?vm=DetailWizard#PageDesigner/eebab1d7-5d03-431c-82a0-7ded2ad9aad0

Добавила поле "Рекомендуемый приоритет" (UsrRecPriority), которое заполняется выбором из справочника Приоритет Обращения (файл вложение UsrRecPriority).
Сохранила изменения.

После этого невозможно стало открыть карточку Сервиса в сервисном договоре (В сервисном договоре выбираю Сервис -> Изменить и далее повисает загрузка)

Uncaught Terrasoft.NullOrEmptyException: Заголовок для подписи "UsrRecPriority8adadf8d-f129-4759-a983-ae4b85227674" не был найден.Ext.define.generateLabel @ ViewGeneratorV2.js:718Ext.define.generateControlLabel @ ViewGeneratorV2.js:1082Ext.define.generateModelItem @ ViewGeneratorV2.js:974Ext.define.generateStandardItem @ ViewGeneratorV2.js:444Ext.define.generateItem @ ViewGeneratorV2.js:348Ext.define.generateGridLayoutItem @ ViewGeneratorV2.js:558(anonymous function) @ ViewGeneratorV2.js:533Terrasoft.utils.common.each @ all-combined.js:177Ext.define.generateGridLayout @ ViewGeneratorV2.js:532Ext.define.generateStandardItem @ ViewGeneratorV2.js:387Ext.define.generateItem @ ViewGeneratorV2.js:348(anonymous function) @ ViewGeneratorV2.js:667Terrasoft.utils.common.each @ all-combined.js:177Ext.define.generateContainer @ ViewGeneratorV2.js:666Ext.define.generateStandardItem @ ViewGeneratorV2.js:405Ext.define.generateItem @ ViewGeneratorV2.js:348(anonymous function) @ ViewGeneratorV2.js:667Terrasoft.utils.common.each @ all-combined.js:177Ext.define.generateContainer @ ViewGeneratorV2.js:666Ext.define.generateStandardItem @ ViewGeneratorV2.js:405Ext.define.generateItem @ ViewGeneratorV2.js:348(anonymous function) @ ViewGeneratorV2.js:319Terrasoft.utils.common.each @ all-combined.js:177Ext.define.generateView @ ViewGeneratorV2.js:318(anonymous function) @ ViewGeneratorV2.js:2084(anonymous function) @ ViewGeneratorV2.js:306context.execCb @ require.js:1597Module.check @ require.js:845Module.enable @ require.js:1113Module.init @ require.js:758(anonymous function) @ require.js:1379
/core/d54981d60c4636c80f841807acce5440/Terrasoft/amd/core.js:555 user: Supervisor/7f3b869f-34f3-4f20-ab4d-7480a5fdf647
file: http://******/0/configuration/6b9e368ad158690f72393cdc46655ef4/ViewGeneratorV2.js
line: 718
message: Uncaught Terrasoft.NullOrEmptyException: Заголовок для подписи "UsrRecPriority8adadf8d-f129-4759-a983-ae4b85227674" не был найден.
date: Thu Jun 25 2015 12:53:11 GMT+0300 (RTZ 2 (зима))

Маргарита, для решения вопроса понадобится более глубокий анализ. Отправили Вам личное сообщение для координации дальнейших действий.

Показать все комментарии

Здравствуйте!

Часто встречается задача - менять видимость поля по определённому условию. Это можно сделать привязав функцию к свойству "visible" разметки, либо через правила. Дополнительно нужно стирать уже ненужное / некорректное значение из поля, когда visible = false. Я это делал через attributes -> depenedencies, подозреваю также, что можно прибиндиться на свойство "value" в разметке.

Вопрос - как лучше это сделать (сбрасывать значение когда поле становится невидимым?) Нет ли такой возможности в правилах bind parameter? Вот допустим в правилах фильтрации есть настройка "autoClean: true". Нет ли чего-то подобного в bind parameter rules?

Пример через правила.

"UsrCandforVac": {
        "BindParameterVisibleUsrCandforVacByUsrCandGlobalStatus": {
                ruleType: BusinessRuleModule.enums.RuleType.BINDPARAMETER,
                property: BusinessRuleModule.enums.Property.VISIBLE,
                logical: Terrasoft.LogicalOperatorType.AND,
                "conditions": [{
                        "leftExpression": {
                                "type": BusinessRuleModule.enums.ValueType.ATTRIBUTE,
                                "attribute": "UsrCandGlobalStatus"
                        },
                        "comparisonType": Terrasoft.ComparisonType.EQUAL,
                        "rightExpression": {
                                "type": BusinessRuleModule.enums.ValueType.CONSTANT,
                                "value": "5fc83e17-0996-4642-bb22-1f93869c6ebc" // UsrCandGlobalStatus == 'Employee'
                        }
                }]
        },

Спасибо

Нравится

2 комментария

Добрый день!

К сожалению, других на данный момент способов нет.
Если Вы хотите, чтобы данное поле очищалось при условии, то Вам необходимо биндиться на атрибут «Visible» и добавить собственный обработчик, который будет при false стирать значение.

Спасибо за ответ. Получается функция, которая должна отвечать за видимость и возвращать true/false, будет еще и совершать побочное действие - изменение значения :) Хотя, наверное это самый простой способ на данный момент..

Показать все комментарии
Технические вопросы
7.x

Добрый день!

Подскажите, делал ли кто-то интеграцию с ВКонтакте?
Версия 7.3

Нравится

1 комментарий

Добрый день, Александра!

По информации от руководителя команды проектных разработок, пока, примеров такой реализации нет.

Показать все комментарии