Архив рубрики: Без рубрики

Project Server ’13 remove EventHandler via CSOM

На днях столкнулся с тем, что через серверный UI не удается удалить EventHandler на проектном сервере. В итоге решением стало использование CSOM-модели Project Server. 

В целом projectCotenxt имеет EventHandler мембер, который требуется инициализировать через Load() -> ExecuteQuery(); затем ищем нужный eventHandler который затем необходимо удалить последовательностью вызовов Remove()->Update()->ExecuteQuery();

 

var projDeletedEventHandlerId = new Guid("0FB1389D-E620-4062-A99B-9E5716CC958E");
 
using (var projectContext = new ProjectContext(pwaUrl))
{
    var eh = projectContext.EventHandlers.GetByGuid(projDeletedEventHandlerId);
    projectContext.EventHandlers.Remove(eh);
    projectContext.EventHandlers.Update();
    projectContext.ExecuteQuery();
}

Managing Project Server Event Handlers via the Managed Client Object Model

Status update: Up again

Спустя, примерно полтора года, блог снова онлайн….. Что сказать, лень и активная реальная жизнь поспособствовали тому, чтобы я не парился всё это время об бложике.
Up’n’running на новом железе.

[SharePoint 2013] Бодаемся с пререквизитами на Windows Server 2012 R2

В очередной раз столкнулся с проблемой конфигурации IIS
Поскольку давненько я не практиковался в развертывании ферм серверов, то подзабыл основательно что и как.
Чтобы не мусолить привожу решение для powershell:

Import-Module ServerManager
Copy-Item -Path «$($ENV:SystemRoot)\System32\ServerManager.exe» `
-Destination «$($ENV:SystemRoot)\System32\ServerManagerCmd.exe» -Force
Add-WindowsFeature NET-WCF-HTTP-Activation45,NET-WCF-TCP-Activation45,NET-WCF-Pipe-Activation45
Add-WindowsFeature Net-Framework-Features,Web-Server,Web-WebServer, `
Web-Common-Http,Web-Static-Content,Web-Default-Doc,Web-Dir-Browsing, `
Web-Http-Errors,Web-App-Dev,Web-Asp-Net,Web-Net-Ext,Web-ISAPI-Ext, `
Web-ISAPI-Filter,Web-Health,Web-Http-Logging,Web-Log-Libraries,Web-Request-Monitor, `
Web-Http-Tracing,Web-Security,Web-Basic-Auth,Web-Windows-Auth,Web-Filtering, `
Web-Digest-Auth,Web-Performance,Web-Stat-Compression,Web-Dyn-Compression, `
Web-Mgmt-Tools,Web-Mgmt-Console,Web-Mgmt-Compat,Web-Metabase,Application-Server, `
AS-Web-Support,AS-TCP-Port-Sharing,AS-WAS-Support, AS-HTTP-Activation, `
AS-TCP-Activation,AS-Named-Pipes,AS-Net-Framework,WAS,WAS-Process-Model, `
WAS-NET-Environment,WAS-Config-APIs,Web-Lgcy-Scripting,Windows-Identity-Foundation, `
Server-Media-Foundation,Xps-Viewer

Restart-Computer

[Project Server] GeneralQueueJobFailed (26000) — WorkflowCheckinNotify. ProjectCheckinNotifyWorkflowMessage.

СУТЬ ПРОБЛЕМЫ:


Ферма из двух серверов (АПП/ВФЕ и СУБД) Развернут Workflow Manager.
Развернут единственный PWA-инстанс.
Есть некоторое количество проектов. Проекты ведут РП. Назначают ресурсы на задачки.
Есть ресурсы, которые в скором времени будут отчитываться о проделанной работе через интерфейс «Задачи»; РП соответственно будут утверждать/отклонять изменения в разделе «Утверждения».
Изменения приходят на утверждение, прекрасно утверждаются и отображаются в ПГ у РП.
Последовательность приводящая к обнаружению проблемы:

  1. Если ресурс принимает решение о невозможности выполнения им задачи (перегруз или еще что-либо), предлагает в качестве конечного ресурса другого исполнителя.
  2. Отправляет запрос по замене ресурса задачи на утверждение РП.
  3. РП видит запрос, утверждает.
  4. Задача до публикации отображается в перечеркнутом виде. У конечного ресурса — пусто.
  5. РП открывает ПГ и публикует его.
  6. У первоначального ресурса задача исчезает.
  7. У конечного ресурса задача в разделе «Задачи» так и не появляется.

При этом в веб-интерфейсе и в ПП указан конечный ресурс. Лезем в БД(схема pub) и видим там то же самое.
Открыв очередь сервера видим строчку вида
Время начала, время окончания, тип задания (Возврат рабочего процесса проекта), Состояние задания (Сбой, но не блокирующая взаимосвязь), %, Владелец.
Открывая подробности задания получаем нечто вида:

Общие•
Queue:
GeneralQueueJobFailed (26000) — WorkflowCheckinNotify.ProjectCheckinNotifyWorkflowMessage. Подробные сведения: id=’26000′ name=’GeneralQueueJobFailed’ uid=’edc2c3ff-c520-e611-80d7-005056b253c3′ JobUID=’e9c2c3ff-c520-e611-80d7-005056b253c3′ ComputerName=’20b2345b-83d5-4439-bebc-d7bcc2b286b4′ GroupType=’WorkflowCheckinNotify’ MessageType=’ProjectCheckinNotifyWorkflowMessage’ MessageId=’1′ Stage=» CorrelationUID=’ccf07e9d-cae8-800f-286b-43c20d3ce6e9′. Для получения дополнительных сведений проверьте журналы ULS на компьютере 20b2345b-83d5-4439-bebc-d7bcc2b286b4 для записей с JobUID e9c2c3ff-c520-e611-80d7-005056b253c3.

Лезем в ULS и находим там строку ексепшена:

05/23/2016 12:09:06.77 Microsoft.Office.Project.Server (0x0724) 0x299C SharePoint Server Workflow Services aiz9y Exception Microsoft.Workflow.Client.ScopeNotFoundException: Scope ‘/SharePoint/default/c098e879-88a3-455b-b56a-e18fb8c9d23a/6c93d7e6-892a-4e63-91b3-fcd01d91d3ad’ was not found. HTTP headers received from the server — ActivityId: 2eae81b0-e2b4-40a8-97ba-6c739c5cef7e. NodeId: PORTAL. Scope: /SharePoint/default/c098e879-88a3-455b-b56a-e18fb8c9d23a/6c93d7e6-892a-4e63-91b3-fcd01d91d3ad. Client ActivityId : ccf07e9d-cae8-800f-286b-43c20d3ce6e9. —> System.Net.WebException: The remote server returned an error: (404) Not Found. at Microsoft.Workflow.Common.AsyncResult.End[TAsyncResult](IAsyncResult result) at Microsoft.Workflow.Client.HttpGetResponseAsyncResult`1.End(IAsyncResult result) at Microsoft.Workflow.Client.ClientHelpers.SendRequest[T](HttpWebRequest request, T content) — End of… ccf07e9d-cae8-800f-286b-43c20d3ce6e9

Пробовал переконфигурировать ферму Workflow и ServiceBus.
Успешно захожу на сервис WFF по порту 12291(http) внутрь /SharePoint/default/, однако все что глубже отсутствует.
Пробуксовав несколько дней с этим вопросом. Я все-таки нашел решение.
Дело в том, что, как написано выше проблема в том, что отсутствует искомый скоуп.
Проверить это можно так же сделав запрос к СУБД:

USE WFResourceManagementDB
SELECT [Path],[Status] FROM [dbo].[Scopes]

В итоге нужного скоупа там нет 🙁
РЕШЕНИЕ:


Однако для того, чтобы исправить эту проблему потребуется совсем немного:

  1. Открыть SharePoint Designer
  2. Попробовать создать рабочий процесс сайта для коллекции /PWA. Требуется создать Рабочий процесс категории SharePoint 2013 — Project Server. (Возможно Вас попросят создать Стадию в административной части центра проектов. Если так, сделайте это.
  3. После создания простейшего рабочего процесса Вам необходимо его сохранить и опубликовать.
  4. Нужный скоуп был создан автоматически при публикации рабочего процесса. Profit!

Тем не менее изначальной проблемы это не решило. Задачи как не отображались у конечного исполнителя, так и не отображаются. Выскочил еще ряд ошибок с синхронизацией ресурсов, но об этом я планирую написать в другой статье, которую набросаю, когда вопрос разрешу.
Ссылочку размещу здесь, когда придет время.

Сказ о том, как я искал себе новые крылья.

Совсем не хватает мне времени на ведение блога.
Так получилось что судьба свела меня с моими новыми крыльями.
В процессе поиска себе мотоцикла «после чесотки» мой выбор пал на Kawasaki ZX-9R C1,C2
Почему? Да потому что со слов владельцев она удобна почти как ZZR, что у нее та же кавасовская харизма, и запас мощи такой, что «ой мама не горюй».
Был у меня вариант взять у знакомого человека, который всеми фибрами души уже перебрался на пан-европу.
Но не срослость… к счастью.
Попался другой вариант и уже совсем за другие деньги. Ехать за ним пришлось аж-но в Великие Луги, что под Псковом.
Кавас приехал в Россию из Италии в августе 2015 года и по нашим дорогам пробежал где-то порядка 400КМ.
А состояние… просто закачаешься. Мотоцикл выглядит практически, как только что сошедший с конвейера.
zx92
Мой хороший друг и сосед по гаражам еще задолго до того, как я его купил. Очень оживленно рекомендовал мне именно эту модель. А уж он-то толк в кавасах знает. Сам 20 с гаком лет катается на мотоциклах и большую часть на кавасах. Теперь-то я понимаю, что то, что я себе приобрел — ни иначе предел моих мечтаний. По-настоящему честный мотоцикл без сложной электроники, которая все делает за тебя, удобный в ремонте. А как он рулится по дороге… словами не передать.
Что говорить об 143 необузданных лошадках. Начинаешь понимать людей покупающих себе 600й Мерседес и ездящих неспешно по городу. А куда собственно спешить? Небольшое движение правой рукой и 120кмч уже позади, а ведь запаса ручки газа хватит существенно на большее.
И хотя я пока еще только прикатываюсь к мотоциклу, но мне уже становится понятно, что данные крылья — мой идеал.
На церемонии наречения ей было наречено имя Scogul(Скёгуль) в честь одной из Валькирий, чье имя обозначает «свирепствующая». На мой вкус это имя очень точно передает саму суть, саму душу мотоцикла.

МотоПарк ’15. Сказ о кастом культуре, китайцах и…

Привет, дорогой читатель! Как ты, возможно, знаешь — раз в год в Московском выставочном комплексе Крокус Экспо проводится международная выставка Мото Парк, где можно увидеть образцы мотоциклетного кастом-строительства, новинки от именитых (и не очень) производителей, а также посмотреть предложения от тюнинг-ателье, производителей экипировки и прочей околомотоциклетной мишуры.

Итак, твоему вниманию представляется сказ о 12-м международной выставке Мотопарк 2015. Миости прошу под кат. Читать далее

Project Server Error 9000(0x2328) FIX

Господа-товарищи,
все, кто мается с данной ошибкой при любых вариантах сохранения проектов на сервер, есть отдельный хотфикс, выпущенный Майкрософт, который залечивает данную проблему, а так же вносит существенный вклад в деле оптимизации производительности системы в целом!
Мне повезло напороться на Заказчика, у которого графики по 8к+ строк с кучей настраиваемых полей и таблиц подстановок. Время на сохранение, публикацию и возврат таких графиков на неплохую, достаточно, конфигурацию двузвенной фермы требовалось в районе 15-30 минут. После применения заплатки, время существенно сократилось.
Ссылка на хотфикс: http://support.microsoft.com/kb/2837680/en-us

Слова приветствия

Привет, читатель, или просто случайный захожий!

Меня зовут, Алексей, и я — ровно совершенно такой же человек, как и вы. У меня есть несколько сайтов, однако я давно хотел информацию о себе и о моих проектах вынести на отдельный сайт и вот свершилось