July 27, 2020

FC

TL;DR консольный AddPermission не даёт взять таск под тем, кому выдан пермишн, с помощью Get Task на панели очередей

Мне потребовалось сделать проект, в котором будут несколько очередей, доступных под учётной записью Senior Verifier. Для этого я предпринял следующие шаги:

1. Берём проект Letters&Contracts, переименовываем в TestProject

2. Создаём новый тип пакета Verification 2, из настроек меняем только имя стадии верификации так же на Verification 2 (для этого нужно выставить Advenced-схему) и доступ к веб-станциям

Настройки пакета

3. Загружаем проект на сервер

4. Для выдачи прав пользователю в PowerShell запускаем следующий скрипт:

$appServer = "localhost" $url = "http://$appServer" $authUri = $url + '/FlexiCapture12/Server/AuthAPI/v1/WSDL' $authSvc = New-WebServiceProxy -Uri $authUri -UseDefaultCredential $authSvc.Url = $url + '/FlexiCapture12/Server/AuthAPI/v1/Soap'

$id = 7 #userId - select Id from Principal where Name = 'sver' $projectId = 20 #TestProject - select * from Project where Name = 'TestProject' $roleType = 6 #Senior Verifier - select Type from Role Where ProjectId = 20 and Name = 'Senior Verification Operator' $batchType = 14 #Verification 2 - select Id from BatchType where name = 'Verification 2' and ProjectId = 20 $authSvc.AddPermission($id, $projectId, 0, $roleType) #0 - для default $authSvc.AddPermission($id, $projectId, $batchType, $roleType)

Так мы выдадим учётной записи sver права на работу с пакетами. Если записи sver нет, можно её создать следующей командой:

#sver 123 $account = 'sver' $id = $authSvc.CreateUser($account, 'Senior Verifier', 'AABC36B333D9A9C9B4C30991E0937973D021E6CF265B60CC281C8D4054EE2BBA', 'test@abbyy.com', '')

Кажется, учётная запись готова для использования, перейдём к нему:

1. Создаём любой пакет Verification 2 на станции сканирования

2. Берём таск на станции верификации под admin/sver с помощью кнопки Get any task (либо Get Task непосредственно на очереди) - проблем нет; режектим таск

3. Заходим под sver, выбираем проект и роль Senior Verification Operator, пытаемся взять таск, получаем следующее:

Сервер говорит: Status Code: 500 Internal Server Error

Логи говорят: <message>Caught UnknownException, Message=SOAP Server Application Faulted</message>

Из забавных эффектов можно увидеть задвоение таска:

От админа же таск будет ровно один

Причём, с этой страницы таск берётся

На странице батчей же таск будет один, и тоже спокойно берётся:

Если же права выдавать не через AddPermission, а через чекбоксы на станции администрирования и мониторинга, подобной проблемы не будет

Вопрос - в чём именно проблема?