Для BPMonline Service Desk. Подскажите, как технически реализуется возможность сортировки и прав доступа новых обращений в зависимости от сервиса/подсервиса для конечного исполнителья. Т.е. чтобы ряд групп исполнителей мог видеть обращения исключительно указанной для нее специфики. Если возможно в качестве детальной инструкции. Спасибо!
Нравится
Не совсем то, что я хотел. Допустим, что есть 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(); }