Добрый день!
Почему может не запускаться автоматически процесс управления инцидентами.
Настроены ящик службы поддержки(указан в специальной настройке) и общий ящик.
У пользователя веб-портала в карточке контакт прописан 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) {
...
}
Далее, создаем Операцию в разделе администрирования и раздаем на нее права.

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

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

Есть деталь, содержащая список записей, 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>
                                                               },
Показать все комментарии

На робочій базі застосована 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

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

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

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

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

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

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

Нравится

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

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

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

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

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

Нравится

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

Как-то так:

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

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

Показать все комментарии
  • Автор: Толмачев Дмитрий
  • Организация: Программные технологии
  • Применимо: 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 комментарий

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

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

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

Нравится

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

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

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

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

Как можно сделать так чтобы, сервисы фильтровались при выборе контрагента на карточке обращения?
Напр, 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.

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

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

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 комментариев
Показать все комментарии