Поделиться через


Пошаговое руководство. Добавление страницы приложения в рабочий процесс

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

В этом пошаговом руководстве демонстрируются следующие задачи:

  • Добавление страницы приложения ASPX в проект рабочего процесса SharePoint.

  • Получение данных из проекта рабочего процесса и управление им.

  • Отображение данных в таблице на странице приложения.

    Примечание.

    Отображаемые на компьютере имена или расположения некоторых элементов пользовательского интерфейса Visual Studio могут отличаться от указанных в следующих инструкциях. Это зависит от имеющегося выпуска Visual Studio и используемых параметров. Дополнительные сведения см. в разделе Персонализация среды IDE.

Необходимые компоненты

Для выполнения этого пошагового руководства требуются следующие компоненты:

  • Поддерживаемые редакции Microsoft Windows и SharePoint.

  • Visual Studio.

  • Кроме того, необходимо выполнить проект в пошаговом руководстве по созданию рабочего процесса с формами сопоставления и запуска.

Изменение кода рабочего процесса

Сначала добавьте строку кода в рабочий процесс, чтобы задать значение столбца "Результат" на сумму отчета о расходах. Это значение используется позже в сводном расчете отчета о расходах.

Установка значения столбца результатов в рабочем процессе

  1. Загрузите завершенный проект из раздела Пошаговое руководство. Создание рабочего процесса с формами сопоставления и запуска в Visual Studio.

  2. Откройте код для Workflow1.cs или Workflow1.vb (в зависимости от языка программирования).

  3. В нижней createTask1_MethodInvoking части метода добавьте следующий код:

    createTask1_TaskProperties1.ExtendedProperties["Outcome"] =
      workflowProperties.InitiationData;
    

Создание страницы приложения

Затем добавьте форму ASPX в проект. Эта форма будет отображать данные, полученные из проекта рабочего процесса отчета о расходах. Для этого вы добавите страницу приложения. Страница приложения использует ту же главную страницу, что и другие страницы SharePoint, что означает, что она будет похожа на другие страницы на сайте SharePoint.

Добавление страницы приложения в проект

  1. Выберите проект ExpenseReport, а затем в строке меню выберите "Добавить новый элемент проекта>".

  2. В области "Шаблоны" выберите шаблон страницы приложения, используйте имя по умолчанию для элемента проекта (ApplicationPage1.aspx) и нажмите кнопку "Добавить".

  3. В XML ApplicationPage1.aspx замените PlaceHolderMain раздел следующим:

    <asp:Content ID="Main" ContentPlaceHolderID="PlaceHolderMain" runat="server">
        <asp:Label ID="Label1" runat="server" Font-Bold="True"
            Text="Expenses that exceeded allotted amount" Font-Size="Medium"></asp:Label>
        <br />
        <asp:Table ID="Table1" runat="server">
        </asp:Table>
    </asp:Content>
    

    Этот код добавляет таблицу на страницу вместе с заголовком.

  4. Добавьте заголовок на страницу приложения, заменив PlaceHolderPageTitleInTitleArea раздел следующим образом:

    <asp:Content ID="PageTitleInTitleArea" ContentPlaceHolderID="PlaceHolderPageTitleInTitleArea" runat="server" >
        Expense Report Summary
    </asp:Content>
    

Код страницы приложения

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

Код страницы приложения

  1. Выберите узел ApplicationPage1.aspx, а затем в строке меню выберите вид>кода, чтобы отобразить код на странице приложения.

  2. Замените операторы using или Import (в зависимости от языка программирования) в верхней части класса следующим образом:

    using System;
    using Microsoft.SharePoint;
    using Microsoft.SharePoint.WebControls;
    using System.Collections;
    using System.Data;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Drawing;
    using Microsoft.SharePoint.Navigation;
    
  3. Добавьте следующий код в метод Page_Load:

    try
    {
        // Reference the Tasks list on the SharePoint site.
        // Replace "TestServer" with a valid SharePoint server name.
        SPSite site = new SPSite("http://TestServer");
        SPList list = site.AllWebs[0].Lists["Tasks"];
    
        // string text = "";
        int sum = 0;
    
        Table1.Rows.Clear();
    
        // Add table headers.
        TableHeaderRow hr = new TableHeaderRow();
        hr.BackColor = Color.LightBlue;
        TableHeaderCell hc1 = new TableHeaderCell();
        TableHeaderCell hc2 = new TableHeaderCell();
        hc1.Text = "Expense Report Name";
        hc2.Text = "Amount Exceeded";
        hr.Cells.Add(hc1);
        hr.Cells.Add(hc2);
        // Add the TableHeaderRow as the first item
        // in the Rows collection of the table.
        Table1.Rows.AddAt(0, hr);
    
        // Iterate through the tasks in the Task list and collect those
        // that have values in the "Related Content" and "Outcome"
        // fields - the fields written to when expense approval is
        // required.
        foreach (SPListItem item in list.Items)
        {
            string s_relContent = "";
            string s_outcome = "";
    
            try
            {
                // Task has the fields - treat as expense report.
                s_relContent = item.GetFormattedValue("Related
                  Content");
                s_outcome = item.GetFormattedValue("Outcome");
            }
            catch
            {
                // Task does not have fields - skip it.
                continue;
            }
    
            if (!String.IsNullOrEmpty(s_relContent) &&
              !String.IsNullOrEmpty(s_outcome))
            {
                // Convert amount to an int and keep a running total.
                sum += Convert.ToInt32(s_outcome);
                TableCell relContent = new TableCell();
                relContent.Text = s_relContent;
                TableCell outcome = new TableCell();
                outcome.Text = "$" + s_outcome;
                TableRow dataRow2 = new TableRow();
                dataRow2.Cells.Add(relContent);
                dataRow2.Cells.Add(outcome);
                Table1.Rows.Add(dataRow2);
            }
        }
    
        // Report the sum of the reports in the table footer.
           TableFooterRow tfr = new TableFooterRow();
        tfr.BackColor = Color.LightGreen;
    
        // Create a TableCell object to contain the
        // text for the footer.
        TableCell ftc1 = new TableCell();
        TableCell ftc2 = new TableCell();
        ftc1.Text = "TOTAL: ";
        ftc2.Text = "$" + Convert.ToString(sum);
    
        // Add the TableCell object to the Cells
        // collection of the TableFooterRow.
        tfr.Cells.Add(ftc1);
        tfr.Cells.Add(ftc2);
    
        // Add the TableFooterRow to the Rows
        // collection of the table.
        Table1.Rows.Add(tfr);
    }
    
    catch (Exception errx)
    {
        System.Diagnostics.Debug.WriteLine("Error: " + errx.ToString());
    }
    

    Предупреждение

    Обязательно замените "TestServer" в коде на допустимое имя сервера с SharePoint.

Проверка страницы приложения

Затем определите, отображает ли страница приложения данные о расходах правильно.

Тестирование страницы приложения

  1. Выберите клавишу F5 для запуска и развертывания проекта в SharePoint.

  2. Нажмите кнопку "Главная", а затем щелкните ссылку "Общие документы" на панели QuickLaunch, чтобы отобразить список общих документов на сайте SharePoint.

  3. Чтобы представить отчеты о расходах в этом примере, отправьте некоторые новые документы в список документов, выбрав ссылку "Документы " на вкладке LibraryTools в верхней части страницы , а затем нажмите кнопку "Отправить документ " на ленте средства.

  4. После отправки некоторых документов создайте экземпляр рабочего процесса, выбрав ссылку "Библиотека" на вкладке LibraryTools в верхней части страницы, а затем нажмите кнопку "Библиотека Параметры" на ленте средства.

  5. На странице Параметры библиотеки документов выберите ссылку "Рабочий процесс Параметры" в разделе "Разрешения и управление".

  6. На странице Параметры рабочего процесса выберите ссылку "Добавить рабочий процесс".

  7. На странице "Добавить рабочий процесс" выберите рабочий процесс ExpenseReport — Workflow1, введите имя рабочего процесса, например ExpenseTest, а затем нажмите кнопку "Далее".

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

  8. В форме ассоциации введите 1000 в поле "Ограничение автоматического утверждения" и нажмите кнопку "Связать рабочий процесс ".

  9. Нажмите кнопку "Главная", чтобы вернуться на домашнюю страницу SharePoint.

  10. Выберите ссылку "Общие документы" на панели QuickLaunch.

  11. Выберите один из отправленных документов, чтобы отобразить стрелку раскрывающегося списка, выберите ее, а затем выберите элемент Workflows .

  12. Выберите изображение рядом с рабочим процессом ExpenseTest, чтобы открыть форму запуска рабочего процесса.

  13. В текстовом поле "Итог расходов" введите значение, превышающее 1000, а затем нажмите кнопку "Пуск рабочего процесса ".

    Когда сообщаемые расходы превышают выделенную сумму расходов, задача добавляется в список задач. Столбец с именем ExpenseTest со значением Completed также добавляется в элемент отчета о расходах в списке общих документов.

  14. Повторите шаги 11 – 13 с другими документами в списке общих документов. (Точное количество документов не важно.)

  15. Отображение страницы сводки отчета о расходах, открыв следующий URL-адрес в веб-браузере: http:// SystemName/_layouts/ExpenseReport/ApplicationPage1.aspx.

    На странице сводки отчета о расходах перечислены все отчеты о расходах, превышающие выделенную сумму, сумму, на которую они превысили ее, и общую сумму для всех отчетов.