Для того, чтобы вычислить всех пользователей у которых на данный момент есть активные задачи, учитывая все замещения (чтобы, например, запустить по ним подпроцесс отправки уведомления по задачам (см. эту статью), введите следующее выражение:
@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.
}
|