Скрыть бизнесс-процесс по признаку

Добрый день!

Конфигурируя share-config.xml можно скрыть воркфлоу из списка процессов в шаре, при этом сам воркфлоу останется задеплоенным и работающим.

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

Комментарии

fufler аватар

Стандартными средствами — нет. Можно исправить страничку, с которой запускаются процессы, чтобы она научилась это делать. При этом, естественно, это будет ограничением лишь на уровне интерфейса: если пользователь получит возможность исполнить js, процесс всё равно можно будет запустить.

Angelina аватар

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

fufler аватар

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

подскажите как это сделать)) желательно более развернуто

Angelina аватар

Давайте я Вам объясню, как я скрыла процесс по группам в шаре. К примеру, у нас есть группа MYGROUP. Мы хотим, чтобы процесс activiti$MyProcess был виден в шаре только этой группе.

В директории alfresco/tomcat/webapps/share/WEB-INF/classes/alfresco/site-webscripts/org/alfresco/components/workflow лежит  start-workflow.get.js

Я его редактирую следующим образом: 

 

<import resource="classpath:alfresco/site-webscripts/org/alfresco/components/workflow/workflow.lib.js">
 
	var connector = remote.connect("alfresco");
	var dataStr = connector.get("/api/people/"+user.id+"?groups=true");
	var res = eval('('+dataStr+')');
	var groups = res.groups;
 
	var isMy = false;
	var isAdmin = false;
	for (var i=0; i<groups.length; i++) {
		if (groups[i].itemName=="GROUP_MYGROUP") isMy = true;
		if (groups[i].itemName=="GROUP_ALFRESCO_ADMINISTRATORS") isAdmin = true;
	}
 
	var workflows = getWorkflowDefinitions();
 
	for (var i=0; i<workflows.length; i++) {
		var n = workflows[i].name; 
		if (!isAdmin) {
			if (n == "activiti$MyProcess" && !isMy) { workflows.splice(i,1); i--; }
		}
	}
	isMy = false;
 
	model.workflowDefinitions = workflows;

 Теперь при нажатии в шаре (из любового места в шаре) Начать деловой процесс в списке процессов деловой процесс MyProcess будет присутствовать только у юзеров, состоящих в группе MyGroup, или же юзеров, являющимися администраторами системы