Перейти к содержанию

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

Фильтр списка по активным задачам текущего пользователя

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

@prefix cmw: <http://comindware.com/logics#>.
@prefix taskStatus: <http://comindware.com/ontology/taskStatus#>.
{
# Помещаем аккаунт текущего пользователя в переменную ?currentUser 
   cmw:securityContext cmw:currentUser ?currentUser.
# Помещаем массив всех задач в переменную ?item
   ?item a cmw:UserTask.
    # Если выражение используется в таблице задач процесса, 
# то эта строка не требуется, т. к. контекст уже будет задачей

    # Начинаем цикл по массиву задач
# Проверяем, является ли текущий пользователь
        # фактическим или возможным исполнителем задачи
  or
{
    ?item cmw:assignee ?currentUser.
}
or
{
?item cmw:possibleAssignee ?currentUser.
}.
        # Проверяем, является ли задача активной
        # Если, завершенных задач, например, в 1000 раз больше активных,
        # то эту строку можно перенести к выбору задач процесса
# для повышения производительности.
?item cmw:taskStatus taskStatus:inProgress.

}

Фильтр списка по активным задачам текущего пользователя в рамках конкретного процесса

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

@prefix cmw: <http://comindware.com/logics#>. 
@prefix taskStatus: <http://comindware.com/ontology/taskStatus#>.
@prefix object: <http://comindware.com/ontology/object#>.
{
    # Помещаем шаблон процесса в переменную ?process
?process object:alias "system_name_of_the_process_template".
  # Помещаем аккаунт текущего пользователя в переменную ?currentUser 
   cmw:securityContext cmw:currentUser ?currentUser.
# Помещаем массив всех задач в переменную ?item
    # Если выражение используется в таблице задач процесса, 
# то эта строка не требуется, т. к. контекст уже будет задачей

   ?item a cmw:UserTask.
        # Начинаем цикл по массиву задач
# Собираем задачи выбранного процесса
        ?item cmw:container ?process.
# Проверяем, является ли текущий пользователь
        # фактическим или возможным исполнителем задачи

        or
         {
            ?item cmw:assignee ?currentUser.
         }
        or
         {
         ?item cmw:possibleAssignee ?currentUser.
         }.
        # Проверяем, является ли задача активной
        # Если, завершенных задач, например, в 1000 раз больше активных,

        # то эту строку можно перенести к выбору задач процесса
# для повышения производительности.
?item cmw:taskStatus taskStatus:inProgress.

}