Это несколько неясно объяснено в документах :
/**
* An execution definition.
* The first value is a unique name for the execution.
*
* ...
*
* Plugin info annotation parameters:
* ...
* users (java.util.Set) - Users permitted to query this plugin for information or invoke it.
* groups (java.util.Set) - Groups permitted to query this plugin for information or invoke it.
*
* ...
*/
myExecution(version:version, description:description, httpMethod: 'GET', users:[], groups:[], params:[:]) { params ->
}
Существует несколько необязательных параметров, которые вы можете передать при создании плагина выполнения, два из которых users
и groups
. Если они опущены или пусты, плагины могут выполнять только пользователи-администраторы. Если вы хотите, чтобы пользователи без прав администратора запускали плагин, вам необходимо добавить имена пользователей в список users
или имена групп в список groups
. Например:
executions {
repoInfo(httpMethod: 'GET', users: ['tom', 'bill'], groups: ['dev-team']) { params ->
// ...
}
}
В этом случае люди, которые могут использовать этот плагин: tom
, bill
, кто-либо в группе dev-team
и кто-либо с правами администратора.
Иногда имеет смысл сделать плагин доступным для всех и каждого. Для этого вы обычно делаете что-то вроде:
executions {
publicRepoInfo(httpMethod: 'GET', groups: ['readers']) { params ->
// ...
}
}
Artifactory устанавливает с уже существующей группой под названием readers
, которая автоматически добавляется всем новым пользователям и предоставляет им базовый доступ для чтения, поэтому все вошедшие в систему пользователи должны быть частью этой группы. Все пользователи, которые не вошли в систему, считаются зарегистрированными как специальный пользователь anonymous
, который также является частью группы readers
.
То же ограничение относится к BeginWith. Я не знаю хорошего решения печально. Что Вы могли сделать: Сделайте Содержать-запрос, цикл через каждый объект и получите идентификаторы, затем сделайте другой большой запрос для "идентификатора NotEqual 1 или идентификатора NotEqual 2 или идентификатора NotEqual 3......" Так как идентификатор индексируется насколько я знаю, это должно оказать меньшее влияние на базу данных, но это все еще действительно плохо пахнет.
Для маленького списка это не имеет значения для больших списков, я использовал бы SQL Server Profiler для наблюдения, каково влияние.
@drax: давайте надеяться, что CAML уходит - период. Это - определенно один из худших аспектов текущего программирования SP.
Эта проблема с 'Содержит', и 'BeginsWith' беспокоит меня также. Я надеюсь, что в следующей версии Sharepoint caml будет расширен, чтобы быть реальным инструментом, не только скалой на нашем участке.
Путем я делаю это должно указать запрос как можно больше и затем отфильтровать строки, которые не соответствуют условиям в коде C#. Это иногда довольно ужасно, поскольку иногда необходимо обрабатывать 100 строк для окончания с 1 результатом того матча условия.
Итак, как лучше всего получить элементы , не содержащие строки?
Попробуйте использовать вычисляемый столбец для отражения искомого значения, создав противоположное значение.
Например, столбец называется IsCritical . Затем добавьте столбец как «ДА / НЕТ» и формулу как
=ISNUMBER(FIND("Critical"), [Title])
Затем в вашем запросе CAML
<Query>
<Where>
<Eq>
<FieldRef Name='IsCritical'/>
<Value Type='Boolean'>0</Value>
</Eq>
</Where>
</Query>
0 в этом запросе как бы отражает «не критично». Однако я не уверен, какой может быть производительность, в отличие от наличия собственного CAML «Not Containts», которого, к сожалению, не существует.
См. Также Схема запроса CAML в MSDN