Инциденты
процесс
Технические вопросы
5.x

Добрый день!
Почему может не запускаться автоматически процесс управления инцидентами.
Настроены ящик службы поддержки(указан в специальной настройке) и общий ящик.
У пользователя веб-портала в карточке контакт прописан e-mail.

Пользователь веб-портала заводит обращение, оператор назначает ответственного, переводит обращение в состояние в работе и т.п...
Но никакие e-mail сообщения пользователю не приходят,
и вообще сам процесс почему-то не запускается ( в журнале процессов нет о нем информации).

Версия 7.5.0.1138 transitions

Нравится

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

Дарья, добрый день.
Чтобы попытаться проанализировать эту ситуацию, пожалуйста, приложите скриншоты:
- настройки почты
- настройки процесса отправки почты
- настройки того процесса из которого вызывается отправка почты

что значит: "настройки процесса отправки почты" и "настройки того процесса,из которого вызывается отправка почты"?
Это стандартный процесс "Управление инцидентами" в стандартной версии bpm service desk itil transitions.
Это коробочная версия

настройки почты - заведены два почтовые записи, прикреплены к учетной записи Supervisor.
Один из этих ящиков указан как ящик службы поддержки в системной настройке,
у другого указано, что он общий.

Также в карточке контакта(пользователя веб-портала), который завел обращение, в средствах связи указан его ящик.

Дарья, добрый день!

Базовый процесс управления инцидентами стартует по следующим событиям:
1. Создано новое обращение, в котором указаны:
- Категория = Инцидент
- Состояние = Новое
- заполнены поля "Сервис" и "Ответственный" любыми значениями;
2. Изменено любое поле записи обращения, если по результатам сохранения в записи указаны:
- Категория = Инцидент
- Состояние = Новое
- заполнены поля "Сервис" и "Ответственный" любыми значениями.
В описанном Вами кейсе выполняется работа с существующей записью, но по результатам сохранения запись не соответствует выше перечисленным параметрам.

Рекомендую протестировать запуск и работу процесса повторно с учетом описанной логики.

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

А есть где-нибудь описание вообще этого процесса. Какие шаги, что происходит в том или ином случае.
В руководстве пользователя нет(

Например, процесс корпоративных продаж в руководстве к sales очень хорошо описан, и это удобно.
А вот про процесс управление инцидентов в руководстве к service desk написано пару строчек.

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

Дарья, ниже приведены комментарии по Вашим вопросам.

1. «А есть где-нибудь описание вообще этого процесса. Какие шаги, что происходит в том или ином случае.»

Процесс описан верхнеуровнево на ресурсе Terrasoft Academy (http://academy.terrasoft.ru/documents/?product=transitions&ver=7.5.0) в разделе Функциональность bpm’online ITIL service/Раздел [Обращения]/Бизнес-процесс управления инцидентами.
Если у Вас будут возникать дополнительные вопросы, то мы готовы ответить.

2. «Подскажите, пожалуйста, еще почему может не заполняться по умолчанию ответственный в обращении. У сервиса указан сервисный инженер и владелец. В какой момент должен заполниться ответственный по обращению на основании выбранного сервиса?»

Сервисные инженеры в сервисе указываются с целью порекомендовать специалисту поддержки, выполняющему классификацию обращения, в чью компетенцию входит обслуживание текущего сервиса. Иными словами, указав одного или несколько сервисных инженеров по определенному сервису, система не будет автоматически определять ответственно по обращению с таким сервисом, а ограничит список рекомендуемых специалистов для выбора.
Детально данная функциональность описана в параграфе «Подбор сервисных инженеров» раздела Функциональность bpm’online ITIL service/Раздел [Обращения]/Страница обращения на ресурсе Terrasoft Academy (http://academy.terrasoft.ru/documents/?product=transitions&ver=7.5.0)

Ответственный по обращению при этом устанавливается вручную.

Про верхнеуровневое описание процесса я знаю. Видела, спасибо.
Интересовало именно детальное( наподобие процесса корпоративных продаж).Жаль, что его нет.

Задам вопрос по инциденту и процессу тогда:
Если я правильно поняла, система не подставляет ответственного по обращению автоматически (даже если в сервисе указан только один сервисный инженер).
Тогда возникает следующий вопрос:
Вы писали, что базовый процесс по инциденту стартует в этих случаях.
1. Создано новое обращение, в котором указаны:
- Категория = Инцидент
- Состояние = Новое
- заполнены поля "Сервис" и "Ответственный" любыми значениями;
2. Изменено любое поле записи обращения, если по результатам сохранения в записи указаны:
- Категория = Инцидент
- Состояние = Новое
- заполнены поля "Сервис" и "Ответственный" любыми значениями.

Т.е. получается, что когда создается инцидент через веб-портал, то ответственный при создании инцидента не заполняется.
Процесс таким образом не стартовал пока еще, так как ответственный еще не заполнен.

Далее оператор видит обращение, и должен его обработать - назначить ответственного(так как там пусто).
В этот момент оператор ни в коем случае не должен переводить инцидент в состояние отличное от "новый", иначе процесс не стартует.
Т.е. например, человек увидев обращение, и выбрав в качестве ответственного себя, должен помнить, что ему не надо переводить пока обращение в другое состояние в этот момент. Правильно я понимаю?

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

Только если будете вносить изменения процесс нужно "Сохранить как новую версию"

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

Здравствуйте.
Использую 5 версию системы.
Подскажите можно ли в ней настраивать права доступа на отображения "детали" аналитика в каждом отдельном разделе?

Нравится

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

Здравствуйте.
Из интерфейса такая возможность не предусмотрена. Разве, что программно.

А как это программно сделать?

Здравствуйте,
Данная реализация может выглядеть следующим образом:
В процессе схемы BaseModulePage есть ScriptTask CreateAnalyticsTab.
В данном скрипте, перед созданием закладки, идет проверка параметра HasAnalytics
Добавляем проверку
bool canSeeAnalytic = UserConnection.DBSecurityEngine.GetCanExecuteOperation("CanSeeAnalytic",
UserConnection.CurrentUser.Id);
if (HasAnalytics && canSeeAnalytic) {
...
}
Далее, создаем Операцию в разделе администрирования и раздаем на нее права.

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

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

Есть деталь, содержащая список записей, 1 и более. Есть поле в том же разделе, где и деталь, значение которого должно обновляться автоматически в зависимости от наличия, отсутствия, добавления и удаления записей в детали по определённой логике (допустим отображать значение колонки записи с максимальным значением другой колонки). Уже написал JS код, который через Entity Schema Query находит нужное значение. Но теперь не знаю, как мне к значению поля прибиндить эту функция, которая должна тригериться / обновлять значение поля когда:
1. Открывается запись в разделе
2. Происходит перемещение между записями
3. Добавляется новая запись в деталь
4. Удаляется запись из детали.

Иллюстрация задачи

Спасибо.

Нравится

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

Необходимо добавить атрибут, что-то на подобии

                                        "UsrCandStat": {
                                                                              type: Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
                                                                              dataValueType: Terrasoft.DataValueType.LOOKUP,
                                                                              …
                                                               },

Это будет ваша колонка вычисляемая колонка
В Diff привязаться к ней

                      {
                                                                              "operation": "insert",
                                                                              "name": " UsrCandStat ",
                                                                              "propertyName": "items",
                                                                              …
                                                                              "values": {
                                                                                              "bindTo": " UsrCandStat ",
                                                                                              …
                                                                              }
                                                               },

Дальше нужно вычислять значение у нужный момент, лучше всего будет реализовать это через message, можно написать свой или использовать стандартный updateDetail

          /**
                                                               * @inheritDoc Terrasoft.Configuration.BaseDetailV2#updateDetail
                                                               * @overridden
                                                               */
                                                               updateDetail: function(config) {
                                                                              config.reloadAll = true;
                                                                              this.callParent(arguments);
<strong>!!! здесь вызов вашего метода установки значения атрибуту</strong>
                                                               },
Показать все комментарии
5.x
LDAP
аутентификация
Технические вопросы

На робочій базі застосована LDAP-автентифікація, на робочій же можна легко вибрати для користувача BPMonline-автентифікацію.

Скопіював базу для тестування, налаштував веб-сайт і тепер на цій базі при спробі встановити для конкретного користувача BPMonline-автентифікацію отримую помилку:

Exception Message: Элемент коллекции с идентификатором "{5C3C64DC-3089-42A3-8917-A0C6E9B0C198}" не найден
Exception Type: Terrasoft.Common.ItemNotFoundException
Exception Source: Terrasoft.Core

Мені б бажано це якось полікувати, тільки ще не знаю як.

Нравится

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

Власне, неможливо змінити тип автентифікації, ні LDAP->BPMonline, ні BPMonline->LDAP

Игорь, здравствуйте!
Уточните, пожалуйста, с какой версией Вы работаете?
Спасибо.

5.4.0.2455 BPMonline Service Desk

Игорь, есть еще несколько вопросов:
1. База данных BPMonline Service Desk предоставлялась именно с этой версией приложения, если нет, тогда с какой?
2. Были ли доработки/проектное решение?
3. Можно получить от Вас более подробное описание сообщения?
Спасибо.

1. База надавалася з цією версією.
2. Доопрацювання були.
3. Файл скинув в приват

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

Маю ще одну тестову конфігурацію, де успішно можна змінювати тип автентифікації.
Там в групі "Данные" поля [UserMainPageEdit] нічого не прописано.

Значення, про яке ви пишете, фіксується в самій формі, чи скриптом в процесі ?

Игорь,
Данное поле в карточке является обязательным для заполнения.
Наполнение справочника и проставление значения происходит в процессе карточки редактирования FillUserMainPageValues и ScriptPageLoadCompleteChild

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

Вийшов незрозумілий ефект:

на робочій базі модуль OwnerSelectionGridPage був заблокований адмініфстратором (червона помітка)
Я його примусово розблокував, опублікував.

Після цього дуже уповільнилась робота системи, настільки, що інколи навіть не відкривалися запити на оновлення.

Заблокував модуль знову, опублікував, - швидкість роботи відновилась.

Що це відбувалося ?

Нравится

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

Здравствуйте.
Статус модуля (заблокирован\разблокирован) не влияет на время отклика системы BPM'online. При компиляции работа значительно замедляется, так как происходит генерация исходного кода всех элементов конфигурации. Вероятнее всего, в Вашем случае замедление было вызвано совпадением по времени с компиляцией.

Згоден. Причина була не в цьому.
Затримку спричинив трішки складніший шаблон регулярного виразу, по якому розбиралися вхідні листи.

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

Підкажіть, будь-ласка, як для Select() вписати With (Nolock)

Нравится

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

Как-то так:

var countSelect = new Select(UserConnection)
			  	.Column(Func.Count(Column.Asterisk())).As("Count") as Select;
countSelect.WithHints(Hints.NoLock);

Дякую, те, що треба :)

Показать все комментарии
5.x
7.x
UserTask
бизнес-процесс
задача
Программные Технологии
  • Автор: Толмачев Дмитрий
  • Организация: Программные технологии
  • Применимо: bpm'online 7.x / 5.x
  • Дата: 15.05.2015

История одного действия

В данной статье речь пойдет о создании пользовательского действия бизнес-процесса на основе уже существующего. Думаю, что все знакомы с таким замечательным действием БП как «Выполнить задачу» (рис. 1), который позволяет настроить создание активности и поднять карточку.

1

Рис.1 http://take.ms/K3T3i

Но мое любимое свойство этого действия – это возможность за счет последующего ветвления ограничить количество предлагаемых результатов и вывести результаты в виде цветных кнопок (рис. 2)

2

Рис.2 http://take.ms/zP5L0

К сожалению его использование ранее прекращалось, как только в активность добавлялось новое поле, которое необходимо динамически заполнять в БП. А такая ситуация случалась чуть чаще чем постоянно.

Вместо этого приходилось придумывать разного рода конструкции вида:

1) Использование страницы редактирования

3

Рис 3. http://take.ms/2VBdo

2) Использование промежуточного сигнала на изменение активности

4

Рис 4. http://take.ms/OKNVH

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

Решение

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

• ActivityUserTask / Выполнить задачу [Действие]

• ActivityUserTaskParametersEditPage / Страница редактирования параметров действия «Выполнить задачу»

К сожалению, не найдя способа заместить действие решил воспользоваться старым добрым экспорт/подмена UId/импорт. Экспортировав схему ActivityUserTask заменил (везде) в ней 3 интересующие меня значения

• Название схемы: ActivityUserTask -> SmrActivityUserTask

• Заголовок: Выполнить задачу -> Выполнить настраиваемую задачу

• UId: b5c726f2-af5b-4381-bac6-913074144308 -> b5c726f2-af5b-4381-bac6-913074144309 [!]

[!] Обязательно стоит проверить на существование данный UId в таблицe SysSchema. В случае совпадения наша новая схема заменит уже существующую при импорте. Далее импортируем действие в свой пакет (я предпочитаю хранить пользовательские действия в отдельном пакете)

5

Рис 5. http://take.ms/83Tjj

Теперь у нас есть собственное действие для создания задачи, которое мы можем редактировать, настраивать, изменять и добавлять параметры.

Для удобства также создадим свою страницу редактирования на базе старой: «Добавить» -> «Страница». В качестве родительской выбирается:

• Страница редактирования параметров действия "Выполнить задачу"

6

Рис 6. http://take.ms/9sw5B

Предположим, что мы создали новый раздел «Обращение» / SmrCase и в активности добавили на него ссылку. Теперь мы хотим использовать это «Обращение» в нашем действии.

Настройка страницы

Добавим новое справочное поле на страницу:

1. Добавим «Поле параметра» в контейнер «Связи активности»

7

Рис 7. http://take.ms/Z9s1p

Свойства элемента: • Название: SmrCaseEdit • Подпись: Обращение • Тип данных: Справочник

2. Пропишем привязку поля к параметру действия (сам параметр создадим в действии чуть позже):

Необходимо на странице переопределить метод «GetActivityControlsBinding»

8

Рис 8. http://take.ms/uFEkh

    Dictionary string, Terrasoft.UI.WebControls. WebControl > customBinding = base .GetActivityControlsBinding();
    customBinding.Add( "SmrCase", Page.SmrCaseEdit);
    return customBinding;

Настройка Действия

Для начала привяжем действие к странице. Для этого в свойствах действия укажем

• Страница редактирования параметров = Страница редактирования параметров действия "Выполнить настраиваемую задачу"

Можно также указать свое изображение действия. Теперь необходимо дополнить логику нашего действия с учетом добавленного поля:

1) Добавим новый параметр в действие «SmrCase»

Название: SmrCase

Подпись: Обращение

Тип данных: Справочник

Справочник: Обращение

Схема: SmrCase

2) Изменить метод «CreateActivity», добавив обработку параметра SmrCase.

    var activity = new Terrasoft.Configuration.Activity(UserConnection);
    activity.SetDefColumnValues();
    // SmrCase
    var columnSmrCase = activity.Schema.Columns.FindByName( "SmrCase" );
    if (columnSmrCase != null && SmrCase != Guid .Empty)
    {
        activity.SetColumnValue(columnSmrCase, SmrCase);
    }
    //...

3) Изменить метод «CompleteExecuting», добавив обработку параметра SmrCase.

    var activity = parameters[0] as Terrasoft.Configuration.Activity;
    if (activity == null)
    {
        return false ;
    }
    // SmrCase
    var columnSmrCase = activity.Schema.Columns.FindByName( "SmrCase" );
    if (columnSmrCase != null)
    {
        object smrCase = activity.GetColumnValue(columnSmrCase);
        if (smrCase != null )
        {
            SmrCase = ( Guid)smrCase;
        }
    }
    //...

Добавить действие в список действий БП

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

• Действие: Выполнить настраиваемую задачу

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

INSERT INTO [dbo] . [SysProcessUserTask] (
        [SysUserTaskSchemaUId] ,
        [IsQuickModel] ,
        [Caption]
        )
VALUES (
        (SELECT TOP 1 UId FROM SysSchema   WHERE ( Name = 'SmrActivityUserTask' )),
       1 ,
        'Настраиваемая задача' )
GO

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

Вот что у нас получается в результате:

9

Рис 9. http://take.ms/G2PDS

Теперь мы можем использовать свое собственное (настраиваемое!) действие для создания задачи.

Нравится

Поделиться

1 комментарий
5.x
SysEntityChangeType
Тип изменения объекта
Технические вопросы

Маю задачу додатково писати в журнал факти відкриття звернень.

Є от такий довідничок: [SysEntityChangeType] - Тип изменения объекта.
Довідничок без візуалізації, описує типи операцій для журналу внесених змін.
В ньому описано три операції:
Добавление
Изменение
Удаление

Запитання: чи можна в цей довідничок добавити нову операцію (наприклад: "Открытие") з тим, щоб фіксувати цю операцію при відкритті звернень ?

Нравится

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

Игорь, с этим справочником работает логика ядра. При этом Id записей находятся, фильтруя по полю "Code". То есть теоретически свои записи туда добавить можно, но значение кода должно быть не таким, как у трёх стандартных операций.

Показать все комментарии
Фильтрация сервисов
Технические вопросы
5.x

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

Как можно сделать так чтобы, сервисы фильтровались при выборе контрагента на карточке обращения?
Напр, HRB сервис был виден лишь при выборе контрагента HR. А для других контрагентов не был виден?

Заранее большое спасибо.

С уважением,
Гюнель

Нравится

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

Добрый день, Гюнель!

В системе реализована следующая логика. Для каждого [Сервисного договора] указывается определенный [Пакет сервисов]. Также в карточке сервисного договора указывается [Контакт], [Контрагент] и [Объект обслуживания].

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

Таким образом, когда в Заявке будет указан [Контакт], [Контрагент] и [Конфигурационная единица] для выбора буду доступны только те сервисы, которые входят в пакет сервисов в выбранном [Сервисном договоре].

Добрый день, Андрей

Спасибо за объяснение. Если сделать как вы сказали то, контакт при выборе сервиса который не привязан к нему (и его контрагенту), выдает следующее предупреждение:

Предупреждение
Данный сервис не предоставляется по сервисному договору

Но проблема в том что, контакт может игнорировать данное предупреждение, и создат новое обращения. А это у нас не приемлема((
Можно ли сделать так чтобы, при появлении данного предупреждения, контакт не смог сохранит (создат) обращения?

Заранее большое спасибо.

С уважением,
Гюнель

Добрый день, Гюнель!

Для того чтобы контакт не смог сохранит (создат) обращение нужно переопределить метод AreConditionsCorrect обьекта BaseServiceRequestInBPMonlineEditPage

а именно заменить код метода на:

base.AreConditionsCorrect(Row);
var serviceId = (Guid)Page.ServiceEdit.Value;
var serviceAgreementId = (Guid)Page.ServiceAgreementEdit.Value;
var availableServices = GetAvailableServicesNew(serviceAgreementId);
 
var serviceNotInAgreement = true;
foreach (var recordData in availableServices) {
	if (recordData.Id == serviceId) {
		serviceNotInAgreement = false;
		break;
	}			
}
if (serviceNotInAgreement) {
			Page.BaseMessagePanel.AddMessage(Warning, ServiceNotInServiceAgreementMessage, MessageType.Warning);
		}
return !serviceNotInAgreement;

Сохранить и опубликовать.

Добрый день, Григорий

Заработала. Большое спасибо

С уважением,
Гюнель

Добрый день,

Как можно сделать тоже самое и для портал пользователей?

Заранее большое спасибо.

С уважением,
Гюнель

Получилась. Поменяла метод AreConditionsCorrect обьекта PortalServiceRequestEditPage.

Показать все комментарии
MS_Word_Report_Designer
MS Word
Отчет в MS Word
Технические вопросы
5.x

Если у Вас возникла ошибка при создании или при формировании печатной формы в разделе, например, "Контрагенты":

Action: ThrowEvent
ControlId: PageContainer_AccountsModulePage_Grid_PrintReportMenuItem_2ad39a6e48f144e381e8ce24560cb529
SubmitAjaxEventConfig: {"config":{"viewStateMode":"include","extraParams":{"viewStateMode":"include","formProxyArg":"htmlForm","signalName":"CreateMSWordReportMessage","ajaxEventTargetControlID":"PageContainer_AccountsModulePage_Grid_PrintButton","tag":"2ad39a6e48f144e381e8ce24560cb529"}}}

То необходимо проверьте, пожалуйста, присутствует ли системная настройка "SaveWordReportAsRecordAttachment". Если нет, то необходимо ее добавить (Рис. 1).

Рис. 1

Нравится

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