Добрый день!
В BPM 7.6 есть такой раздел Доступ на операции.
Можно создать свою операцию, добавить группы, которые могут производить эти операции.
В зависимости от назначения операции пользователь, входящий в указанную группу, может производить те или иные действия.
Хотелось бы добавить свою операцию, и например, заблокировать какие-то поля в карточке в зависимости от того, есть у пользователя право на операцию или нет.
Скажите, пожалуйста, где можно посмотреть подобный пример реализации в конфигурации?
Нравится
Дарья, добрый день.
Выгрузите исходники согласно инструкции:
http://www.community.terrasoft.ru/blogs/8747
После чего выполните поиск по коду операции, например, используя поиск по содержимому в Total Commander.
Ссылка, которую вы дали - это же ветка форума 5.х, касающаяся отладки - причем здесь выгрузка исходников?
Я в принципе, уже увидела следующий пример
if (this.get("CanViewSysOperationAudit") != null) {
this.navigateToSysOperationAuditSection();
} else {
RightUtilities.checkCanExecuteOperation({
operation: "CanViewSysOperationAudit"
}, function(result) {
this.set("CanViewSysOperationAudit", result);
this.navigateToSysOperationAuditSection();
}, this);
}
}
Это пример использования операции - когда операция запрещает/разрешает использовать то или иное действие меню - в данном случае, это журнал аудита.
В основном, все операции в конфигурации используются для таких целей
Я бы хотела использовать операцию, чтобы в карточке делать недоступными для редактирования то или иное поле для тех групп пользователей.
Для того, чтобы делать активным поле в зависимости от каких-то условий надо использовать бизнес-правило.
Можно ли в качестве условия бизнес-правила использовать результат возвращения операции?
Предположила, что надо сделать виртуальный атрибут
"MyCanEditDateReact": {
dataValueType: Terrasoft.DataValueType.BOOLEAN,
value: null
},
создать метод для его заполнения
(т.е. аттрибут заполняется true,
если у пользователя есть право на операцию с кодом CanEditDateReact)
MethodCanEditDateReact: function() {
RightUtilities.checkCanExecuteOperation({
operation: "CanEditDateReact"
}, function(result) {
this.set("MyCanEditDateReact", result);
}, this);
}
вызвать метод этот в событии
onEntityInitialized: function() {
this.callParent(arguments);
this.MethodCanEditDateReact();
},
и уже в условиях бизнес-правила сравнивать заполняемый виртуальный аттрибут со значением true.
Но еще до прописывания самого бизнес-правила
наткнулась на ошибку в строке operation: "CanEditDateReact".
Возможно, что должна быть другая реализация? и в бизнес-правило надо по другому прописывать подобное условие?
Здравствуйте!
Коллеги, в пакете Nui есть замечательная схема RightsHelper. Там много примеров по использованию прав на операции.
Добрый день!
Спасибо, все получилось.
Использовала функцию checkCanExecuteOperation из схемы RightUtilites
Реализация такова была:
вызвала функцию в методе
MethodCanEditDateReact: function() {
RightUtilities.checkCanExecuteOperation({
operation: "CanEditDateReact"
}, function(result) {
this.set("MyCanEditDateReact", result);
}, this);
}
данный метод вызван в событии
onEntityInitialized: function() {
this.callParent(arguments);
this.MethodCanEditDateReact();
}
На поле наложено бизнес-правило
( если у пользователя есть право на операцию, то данное поля enabled для него)
rules {
"SatisfactionLevel": {
"EnableLevel1": {
//debugger
ruleType: BusinessRuleModule.enums.RuleType.BINDPARAMETER,
property: BusinessRuleModule.enums.Property.ENABLED,
conditions: [{
leftExpression: {
type: BusinessRuleModule.enums.ValueType.ATTRIBUTE,
attribute: "CanEditDateReact"
},
comparisonType: Terrasoft.ComparisonType.EQUAL,
rightExpression: {
type: BusinessRuleModule.enums.ValueType.CONSTANT,
value: true
}
}]
}
}
}