Лабораторная работа " Использование обработчиков событий Project Server"



Скачать 86,44 Kb.
Дата17.10.2016
Размер86,44 Kb.
Лабораторная работа

Использование обработчиков событий Project Server

Данная лабораторная работа демонстрирует как создавать и использовать обработчики событий Project Server. Целью лабораторной работы является создание обработчиков событий, которые будут записывать в журнал событий Windows информацию о действиях, которые пользователь провёл с проектом и о


  1. Откройте Microsoft Visual Studio 2010

  2. Создайте новый проект в Microsoft Visual Studio 2010: File -> New -> Projectи выберите тип проекта - Class Library, название - PSEventsLibrary, версию .Net Framework 3.5.



  1. Добавьте в проект новый класс ProjectHandler



  1. Добавьте ссылки на следующие сборки:

  • Microsoft.Office.Project.Server.Events.Receivers

  • Microsoft.Office.Project.Server.Library



  1. Созданный класс ProjectHandler необходимо отнаследовать от Microsoft.Office.Project.Server.Events.ProjectEventReceiver

  2. public class ProjectHandler:Microsoft.Office.Project.Server.Events.ProjectEventReceiver
    {

}

  1. Теперь добавьте метод, который будет записывать передаваемые ему сообщения в журнал событий сервера.

public static void WriteToEventLog(string textLog, EventLogEntryType logtype) 

{
    EventLog eventlog = new EventLog();


   eventlog.Source = "Project Event Handler";
    eventlog.WriteEntry(logtype.ToString() + ":" + textLog, logtype);
}


  1. Переопределите события Project Server’а OnDeleting, OnCreated, OnPublished, OnSaved, OnCheckIn и в каждое событие добавьте вызов метода WriteToEventLog, с текстом, который будет записываться в журнал событий сервера при вызове.

В итоге получится следующее:

public override void OnDeleting(PSContextInfo contextInfo, ProjectPreEventArgs e)


{
    WriteToEventLog(string.Format("Пользователь \"{0}\" удалил проект \"{1}\"", contextInfo.UserName, e.ProjectName), EventLogEntryType.Information);
    base.OnDeleting(contextInfo, e);
}

public override void OnCreated(PSContextInfo contextInfo, ProjectPostEventArgs e)


{
    WriteToEventLog(string.Format("Пользователь \"{0}\" создал проект \"{1}\"", contextInfo.UserName, e.ProjectName), EventLogEntryType.Information);
    base.OnCreated(contextInfo, e);
}

public override void OnPublished(PSContextInfo contextInfo, ProjectPostPublishEventArgs e)


{
    WriteToEventLog(string.Format("Пользователь \"{0}\" опубликовал проект \"{1}\"", contextInfo.UserName, e.ProjectName), EventLogEntryType.Information);
    base.OnPublished(contextInfo, e);
}

public override void OnSaved(PSContextInfo contextInfo, ProjectPostEventArgs e)


{
    WriteToEventLog(string.Format("Пользователь \"{0}\" сохранил проект \"{1}\"", contextInfo.UserName, e.ProjectName), EventLogEntryType.Information);
    base.OnSaved(contextInfo, e);
}

public override void OnCheckIn(PSContextInfo contextInfo, ProjectPostEventArgs e)


{
    WriteToEventLog(string.Format("Пользователь \"{0}\" вернул проект \"{1}\"", contextInfo.UserName, e.ProjectName), EventLogEntryType.Information);
    base.OnCheckIn(contextInfo, e);
}



  1. Теперь сборку необходимо подписать, для этого откройте свойства проекта и перейдите на вкладку Signing



  1. Создайте новый ключ



  1. Постройте сборку. Сборка готова к работе.

  2. Скопируйте сборку в папку C:\Program Files\Microsoft Office Servers\14.0\Bin\ProjectServerEventHandlers на сервере.

  3. Далее необходимо найти открытый ключ сборки, для этого запускаем Visual Studio Command Prompt (2010) и ввести команду:

sn -T “C:\Program Files\Microsoft Office Servers\14.0\Bin\ProjectServerEventHandlers\PSEventsLibrary.dll”

Полученный открытый ключ сохраняем куда-нибудь.



  1. Теперь созданный обработчик событий необходимо зарегистрировать. Для этого открываем Project Web Access и переходим в Параметры сервера -> Обработчики событий на сервере .



  1. В списке обработчиков событий в разделе Project находим события OnDeleting, OnCreated, OnPublished, OnSaved, OnCheckIn и добавляем по одному обработчику для каждого события:



  • Поле имя – произвольное допустимое значение.

  • Имя сборки – полное имя сборки, в данном случае будет

PSEventsLibrary, Version=1.0.0.0, Culture=neutral, PublicKeyToken=c3aefa555354437b

Где PublicKeyToken это открытый ключ сборки, полученный ранее



  • Имя класса PSEventsLibrary.ProjectHandler

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





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



Лабораторная работа

Создание рабочего процесса Project Server



Данная лабораторная работа демонстрирует как создать тип проекта, стадии, фазы в Project Server, а также как создать простой рабочий процесс и привязать его к типу проекту.

  1. Создание фаз рабочего процесса

    1. Откройте Project Web Access в браузере.

    2. Перейдите в Параметры сервера -> Корпоративные настраиваемые поля и таблицы подстановки



    1. Создайте новую таблицу подстановки “Типы сосисок”





    1. Создайте новое настраиваемое поле “Тип сосисок”





    1. Перейдите в Параметры сервера -> Этапы рабочего процесса

    2. Создайте фазы Прототип, Изготовление, Продукция



    1. Перейдите в Параметры сервера -> Стадии рабочего процесса

      1. Создайте стадию “Инициализация”







      1. Создайте стадию “Копчение”









      1. Создайте стадию “Купание в молоке”









      1. Создайте стадию “Одомашнивание”









      1. Создайте стадию “Упаковка”









      1. Создайте стадию “Реализация”









    1. Создание рабочего процесса в Visual Studio 2010

      1. Откройте Visual Studio 2010 и создайте проект “ProjectWorkflow” типа Empty SharePoint Project





      1. В проект добавьте Sequental Workflow “ProjWF”







      1. После создания рабочий процесс откроется в режиме визуального редактирования



      1. Двойным щелком мыши по блоку “onWorkflowActivated1” создайте метод, который будет выполняться при создании рабочего процесса. В этом методе необходимо создать контекст рабочего процесса SharePoint.

private void onWorkflowActivated1_Invoked(object sender, ExternalDataEventArgs e)

{
      wfContext.Initialize(workflowProperties);


}

Контекст будет храниться в самом объекте Workflow:

public Microsoft.SharePoint.WorkflowActions.WorkflowContext wfContext = new Microsoft.SharePoint.WorkflowActions.WorkflowContext();
        


      1. Добавьте идентификаторы стадии проекта, для дальнейшей привязки к компонентам рабочего процесса. Идентификаторы можно подсмотреть в Project Web Access в деталях по стадии

public Guid Stage_1 = new Guid("7d9dae3c-0450-4c49-a601-de2d3d6bd521");

public Guid Stage_2 = new Guid("a6833b80-c6d9-4b25-b321-02603ed964db");

public Guid Stage_3 = new Guid("3b791abd-ecbd-47c4-b392-c02eea355f95");

public Guid Stage_4 = new Guid("a09ac673-9045-4ece-8aa6-05b7771ad81c");

public Guid Stage_5 = new Guid("f548a8e2-b8d5-410d-b147-cfcb9bef6417");



public Guid Stage_6 = new Guid("4dcc89d8-5b40-4ac0-9b0f-de220668677a");


      1. Добавьте идентификатор настраиваемого поля Тип сосиски

public Guid Proj_TypeMD_PROP_UID = new Guid("88112f68-09b5-4a21-8cb9-e746b2cac0c5");



      1. В режиме визуального редактирования добавьте компонент ProjectSequence и задайте ему свойство InitiationData




      1. Добавьте компонент SetProjectStage_в_ProjectSequence'>SetProjectStage в ProjectSequence и задайте ему свойство WorkflowContext, AlwaysWait = True, а StageUid привяжите к Stage_1




      1. Добавьте компонент ReadProjectProperty в ProjectSequence и задайте ему свойство WorkflowContext, MD_PROP_UID привяжите к Proj_TypeMD_PROP_UID, а свойство PropertyValues привяжите к:

public string[] ProjTypeValues = new string[0];

      1. Добавьте компонент IfElseActivity в ProjectSequence и у ветки ifElseBranchActivity1 укажите DeclarativeConditionRule, создав Condition1 c кодом:

this.ProjTypeValues[0] == "Копчёные"



      1. Скопируйте компонент ifElseBranchActivity2 в IfElseActivity, таким образом в IfElseActivity1 получится три ветки ifElseBranchActivity



      1. У ветки ifElseBranchActivity2 укажите DeclarativeConditionRule, создав Condition2 c кодом:

this.ProjTypeValues[0] == "Молочные"

      1. Дособерите рабочий процесс, устанавливая у компонентов SetProjectStage StageUid, AlwaysWait = true, увеличивая StageOrder



      1. Рабочий процесс готов. Теперь его можно задеплоить.



    1. Создание типа проекта “Сосиска”



      1. Откройте таблицу Типы корпоративных проектов



      1. Создайте тип проекта “Сосиска”, привязав его к созданному рабочему процессу



    1. Тип проекта и рабочий процесс для него готовы к использованию. При создании проекта будет создан проект со стадиями, которые были определены в рабочем процессе:



Лабораторная работа

Создание отчёта в Project Server



  1. Создайте библиотеку, в которой будут располагаться отчёты



  1. Перейдите в параметры созданной библиотеки и добавьте тип содержимого “Отчёт в построителе отчётов”



  1. Создайте новый отчёт в библиотеке “Отчёты”



  1. Откроется построитель отчётов, в нём выберите “Table or Matrix Wizard”



  1. Создайте новый набор данных (Create New DataSet) и создайте новый источник данных



  1. В качестве источника данных укажите следующий запрос:

SELECT

t.taskname as [Название_задачи],

p.projectname as [Проект],

t.taskstartdate as [Начало],

t.taskfinishdate as [Окончание],

t.taskpercentcompleted as [Процент_выполнения]

FROM [MSP_EpmTask] t

inner join [MSP_EpmProject] p on p.projectuid=t.projectuid

where t.taskisprojectsummary=0 and t.taskfinishdate>getdate() and t.taskpercentcompleted<100



  1. Распределите поля, возвращаемые в запросе:





  1. Сохраните отчёт в библиотеку файлов “Отчёты”. Отчёт готов.



Поделитесь с Вашими друзьями:


База данных защищена авторским правом ©grazit.ru 2017
обратиться к администрации

    Главная страница