Вопрос

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

 

Можете ли поделиться Best practice реализации кейса в BPM из коробки?

В ServiceDesk требуется завести группы исполнителей. 

Группа исполнителей != организационая группа. К примеру, в группе исполнителей - "системные администраторы" будут сотрудники двух организационных групп - "Сетевой инфраструктуры" и "Серверной инфраструктуры". Т.о. группа исполнителей может состоять из части организационной группы или из двух (частей) групп. 

Изначально предполагалось использование функциональных ролей для этой цели, но в ходе (зачёркнуто)принятия неизбежного понимания принципов работы BPM из коробки, пришёл к выводу, что данной сущностью не решить задачу. 

У меня такой же вопрос

14 комментариев
Лучший ответ

Начните с просмотра этого обсуждения

Начните с просмотра этого обсуждения

В платном дополнении «Task Control for bpm’online» есть в том числе и постановка задачи на функциональную роль. Если и не покупать, то можно поставить тестовую версию и посмотреть, какой подход авторы программы реализовали.

Григорий Чех,

Получается какой-то костыльный способ - создать БПроц, с целью назначения тикета на группу, после чего его на себя забирает конкретный специалист. 

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

В моём понимании функциональная роль - подразделение или сотрудник состоящий в какой-то команде (возможно, созданной между отделами или внутри отдела), выполняющий узкоспециализированные действия. К примеру - инженер IT-подразделения, задействованный в проекте разработки сервиса. 

См. о функциональных ролях здесь.

Статью читал, спасибо, вопросы остались по прежнему. 

Помогите, пожалуйста, понять логику. 

Предположим, что у меня есть команда проекта, в которой состоят сотрудники различных подразделений, функциональная роль - "Группа сопровождения проекта X".

Поступает обращение от клиентов по "проекту Х", которое эскалируется до функционального подразделения.  

Вот тут основная проблема - как эскалировать кейс до функционального подразделения? 

Подразделение — это не функциональная роль, а организационная.

Зверев Александр,

Получается, в контексте моего примера команда проекта должна быть организационной ролью? И из этого вытекает второй вопрос - само название "организационная роль" отношения к организационной структуре моей организации не имеет, чуть более, чем полностью? 

Что мешает включать в несколько организационных одновременно? Вы же сами говорите, что это подразделение.

И более того, функциональные роли используются для предоставления доступа к разделам системы, но организационные для назначения задач и обращений.  Верно ли я понимаю? 

Зверев Александр,

Смущает название + наличие синхронизации с LDAP, из которого вытягивается иерархия доменной структуры. 

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

 

Доступ можно выставлять хоть функциональным, хоть организационным, хоть отдельным пользователям.

Зверев Александр,

Проблема в том, что тикет я могу назначить только на организационную роль, но "вытянуть" из LDAP и привязать к организационной роли подразделение могу, лишь, единожды.

В таком случае рассмотрите дополнение из второго комментария, позволяющее ставить задачи на функциональные роли.

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

Для BPMonline Service Desk. Подскажите, как технически реализуется возможность сортировки и прав доступа новых обращений в зависимости от сервиса/подсервиса для конечного исполнителья. Т.е. чтобы ряд групп исполнителей мог видеть обращения исключительно указанной для нее специфики. Если возможно в качестве детальной инструкции. Спасибо!

У меня такой же вопрос

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

Добрый день.

В свойствах объекта ServiceRequest укажите значение колонки Группа и опубликуйте объект.

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

Не совсем то, что я хотел. Допустим, что есть 10 предоставляемых видов сервисов. 2 из них делает одна группа, 2 из них другая, 2 из них третья и так далее. В разделе обращений каждая из групп может видеть только обращения предназначенные именно им(зависимость от выбранного типа сервиса при создании обращения для конкретной группы). Может быть создать несколько папок до раздела обращений и на них дать права? Тем не менее как нацелить на них необходимые сервисы? Пожалуйста, подскажите.

Если вопрос удобства, то корректнее всего было бы создать динамические группы с фильтрами по сервисам, выбранным в инциденте/запросе на обслуживание.
Если вопрос безопасности, то необходимо дописывать логику на сохранении записи. В объекте ServiceRequest, в процессе, на событии ServiceRequestInserted в задании-сценарии ServiceRequestInsertedScriptTask дописать insert, наподобие уже существующего:

var portalUsersSysAdminUnitUId = new Guid("f858d1b9-334b-e111-b408-00155d054c02");
Guid recordUId = Entity.PrimaryColumnValue;
int defPosition = 0;
var defaultSourceUId = new Guid("f41e0268-e324-4228-9e9e-5cb7cc906398");
var nowParameter = new QueryParameter("now", DateTime.Now, "DateTime");
var currentUserContactIdParameter = new QueryParameter("currentUserId", UserConnection.CurrentUser.ContactId);		
for (int operation = 0; operation <= 2; operation++) {
	var insertRight = new Insert(UserConnection)
		.Into("SysServiceRequestRight")
			.Set("CreatedOn", nowParameter)
			.Set("CreatedById", currentUserContactIdParameter)
			.Set("ModifiedOn", nowParameter)
			.Set("ModifiedById", currentUserContactIdParameter)				
			.Set("RecordId", Column.Parameter(recordUId))
			.Set("SysAdminUnitId", Column.Parameter(portalUsersSysAdminUnitUId))
			.Set("Operation", Column.Parameter(operation))
			.Set("RightLevel", Column.Parameter(true))
			.Set("Position", Column.Parameter(defPosition))
			.Set("SourceId", Column.Parameter(defaultSourceUId))
		as Insert;
	insertRight.Execute();
}

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

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

Guid groupId;
Guid subserviceId = Entity.SubserviceId;
switch (subserviceId.ToString()) {
	case "d79f2070-f36b-1410-f18a-0050ba5d6c38": //если такой-то подсервис
	groupId = new Guid("f15d4059-e23e-4ed9-9041-88a12736c031"); //то, даем права такой-то группе
	break;
	case "jf75j070-f36b-1410-f18a-hr7dj45d6c38": //а если такой-то подсервис
	groupId = new Guid("r45d4059-e23e-4ed9-9041-88a12736c741"); //то, даем права другой группе
	break;
	default: //условие по умолчанию
	groupId = new Guid("6e0a1b5e-7738-4a9c-9d2d-995f62e51e26"); //даем права группе такой-то
	break;
}
var defaultSource = new Guid("f41e0268-e324-4228-9e9e-5cb7cc906398");
var now = new QueryParameter("now", DateTime.Now, "DateTime");
var currentUserContactId = new QueryParameter("currentUserId", UserConnection.CurrentUser.ContactId);		
for (int operation = 0; operation <= 2; operation++) {
	var insertRight1 = new Insert(UserConnection)
		.Into("SysServiceRequestRight")
			.Set("CreatedOn", now)
			.Set("CreatedById", currentUserContactId)
			.Set("ModifiedOn", now)
			.Set("ModifiedById", currentUserContactId)				
			.Set("RecordId", Column.Parameter(Entity.PrimaryColumnValue))
			.Set("SysAdminUnitId", Column.Parameter(groupId))
			.Set("Operation", Column.Parameter(operation))
			.Set("RightLevel", Column.Parameter(true))
			.Set("Position", Column.Parameter(0))
			.Set("SourceId", Column.Parameter(defaultSource))
		as Insert;
	insertRight1.Execute();
}
Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

С некоторого времени у пользователей, не являющихся администраторами, не отправляются сообщения о назначении задачи исполнителям. Выдается сообщение "Сообщение не отправлено. Неверный шаблон или адрес". В отладчике нашел, что почему-то "AddressesList" пустой (AddressesList.Count = 0) . Под администратором все работает.
Где искать ошибку?

У меня такой же вопрос

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

Добрый день, Станислав!

Очень вероятно, что у указанных пользователей нет прав на чтение шаблона сообщения о назначении задачи. Необходимо в справочнике шаблонов сообщений на детали Доступ дать права на чтение указанным пользователям.
Вторая причина - доступ на чтение для контактов (адресатов), которым отсылается сообщение.
Других причин, не связанных с доступом, назвать не могу.

Права на шаблон "Напоминание о задаче" у всех пользователей на чтение. Такие же права на внутренние контакты.

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

Terrasoft Sales 3.1.0.16 на SQL2000. Ошибка воспроизводится на Windows XP и 2003. Office 2003. В Outlook отключена надстройка Terrasoft CRM Add-Inn. У пользователя отключена привязка и автопривязка в отправке и приемке (сейчас доступ к модулю E-mail у пользователей отключен).

Здравствуйте, Станислав!

То, что данный функционал работает у администратора, но не работает у пользователя имеющего необходимые права доступа — очень странно.
В процессе тестирования так и не удалось воспроизвести описанную Вами проблему.

Хочу заметить, что список адресов формируется при выполнении функции [GetMailAddressesByContactID] скрипта [scr_MailUtils].
Вполне возможно, что не выбирается электронный адрес выбранного контакта в [sq_ContactMails], который используется в этой функции.
Рекомендуется запустить утилиту [Profiler] (размещение по умолчанию "C:\Program Files\Microsoft SQL Server\80\Tools\Binn\profiler.exe") и посмотреть какой именно запрос выполняется.
Важно, чтобы фильтр [CommunicationTypeID] в этом запросе был включён и в качестве значения был указан ID типа средства связи - E-mail. Разумеется, и [ContactID] также должен соответствовать контакту, которому отправляется сообщение.

Terrasoft Support Team

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