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

Вычисление пользователей, у которых есть активные задачи (с учетом замещений)

  • Область применения: Вычисляемый атрибут

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

@prefix xsd: <http://www.w3.org/2001/XMLSchema#>.
@prefix log: <http://www.w3.org/2000/10/swap/log#>.
@prefix cmw:  <http://comindware.com/logics#>.
@prefix substitution: <http://comindware.com/ontology/substitution#>.
@prefix assert: <http://comindware.com/logics/assert#>.
@prefix session: <http://comindware.com/ontology/session#>.
@prefix timelocal: <http://comindware.com/logics/time/local#>.
@prefix taskStatus: <http://comindware.com/ontology/taskStatus#>.
@prefix account: <http://comindware.com/ontology/account#>.
{
    ?class cmw:className "Account".
    ?value a ?class.
    ?value account:active true.
    cmw:securityContext cmw:currentUser ?user.
    session:context session:requestTime ?now.
    ?task a cmw:UserTask.
    not {?value cmw:isDisabled true.}.
    
   or
    {
      ?task cmw:assignee ?value.
    }
    or
    {
       ?task cmw:possibleAssignee ?value.
    }
    or
    {
        ?substitut a substitution:Substitution.
        ?substitut substitution:startDate ?startDate.
        ?substitut substitution:endDate ?endDate. 
        ?now timelocal:between (?startDate ?endDate).
        ?substitut substitution:deputies ?value.
        ?substitut substitution:absentee ?abs.
          ?task cmw:assignee ?abs.
    }
    or
    {
        ?substitut a substitution:Substitution.
        ?substitut substitution:startDate ?startDate.
        ?substitut substitution:endDate ?endDate. 
        ?now timelocal:between (?startDate ?endDate).
        ?substitut substitution:deputies ?value.
        ?substitut substitution:absentee ?abs.
       ?task cmw:possibleAssignee ?abs.
    }.
?task cmw:taskStatus taskStatus:inProgress.

}