다음을 통해 공유


연습: 사용자 지정 사이트 워크플로 작업 만들기

이 연습에서는 Visual Studio를 사용하여 사이트 수준 워크플로의 사용자 지정 작업을 만드는 방법을 보여 줍니다. (사이트 수준 워크플로는 사이트의 목록이 아닌 전체 사이트에 적용됩니다.) 사용자 지정 활동은 백업 공지 목록을 만든 다음 공지 목록의 내용을 여기에 복사합니다.

이 연습에서는 다음 작업을 수행합니다.

  • 사이트 수준 워크플로 만들기

  • 사용자 지정 워크플로 작업 만들기

  • SharePoint 목록 만들기 및 삭제

  • 항목을 한 목록에서 다른 목록으로 복사

  • 빠른 실행 표시줄에 목록을 표시

    참고 항목

    일부 Visual Studio 사용자 인터페이스 요소의 경우 다음 지침에 설명된 것과 다른 이름 또는 위치가 시스템에 표시될 수 있습니다. 이러한 요소는 사용하는 Visual Studio 버전 및 설정에 따라 결정됩니다. 자세한 내용은 IDE 개인 설정을 참조하세요.

필수 조건

이 연습을 완료하려면 다음과 같은 구성 요소가 필요합니다.

  • 지원되는 Microsoft Windows 및 SharePoint 버전.

  • Visual Studio.

사이트 워크플로 사용자 지정 활동 프로젝트 만들기

먼저 사용자 지정 워크플로 활동을 보유하고 테스트할 프로젝트를 만듭니다.

사이트 워크플로 사용자 지정 활동 프로젝트를 만들려면

  1. 메뉴 모음에서 파일>새로 만들기>프로젝트를 선택하여 새 프로젝트 대화 상자를 표시합니다.

  2. Visual C# 또는 Visual Basic 아래의 SharePoint 노드를 확장한 다음 2010 노드를 선택합니다.

  3. 템플릿 창에서 SharePoint 2010 프로젝트 템플릿을 선택합니다.

  4. 이름 상자에 AnnouncementBackup을 입력하고 확인 단추를 선택합니다.

    SharePoint 사용자 지정 마법사가 나타납니다.

  5. 디버깅에 사용할 사이트 및 보안 수준 지정 페이지에서 팜 솔루션으로 배포 옵션 단추를 선택한 다음 마침 단추를 선택하여 신뢰 수준 및 기본 사이트를 적용합니다.

    이 단계에서는 솔루션 신뢰 수준을 워크플로 프로젝트에 유일하게 사용할 수 있는 옵션인 팜 솔루션으로 설정합니다.

  6. 솔루션 탐색기에서 프로젝트 노드를 선택한 다음 메뉴 모음에서 프로젝트>새 항목 추가를 선택합니다.

  7. Visual C# 또는 Visual Basic 아래에서 SharePoint 노드를 확장한 다음 2010 노드를 선택합니다.

  8. 템플릿 창에서 순차 워크플로(팜 솔루션에만 해당) 템플릿을 선택한 다음 추가 단추를 선택합니다.

    SharePoint 사용자 지정 마법사가 나타납니다.

  9. 디버그할 워크플로 이름 지정 페이지에서 기본 이름(AnnouncementBackup - Workflow1)을 적용합니다. 워크플로 템플릿 유형을 사이트 워크플로로 변경하고 다음 단추를 선택합니다.

  10. 마침 단추를 선택하여 나머지 기본 설정을 적용합니다.

사용자 지정 워크플로 작업 클래스 추가

이제 프로젝트에 클래스를 추가하여 사용자 지정 워크플로 작업에 대한 코드를 포함해야 합니다.

사용자 지정 워크플로 작업 클래스를 추가하려면

  1. 메뉴 모음에서 프로젝트>새 항목 추가를 선택하여 새 항목 추가 대화 상자를 표시합니다.

  2. 설치된 템플릿 트리 뷰에서 코드 노드를 선택하고, 프로젝트 항목 템플릿의 목록에서 클래스 템플릿을 선택합니다. 기본 이름인 Class1을 사용합니다. 추가 단추를 선택합니다.

  3. Class1의 모든 코드를 다음 코드로 바꿉니다.

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using Microsoft.SharePoint;
    
    namespace AnnouncementBackup
    {
        // This custom activity will back up all of the announcements in 
        // the Announcements list on the SharePoint site.
        public class Class1 : System.Workflow.ComponentModel.Activity
            {
            public Class1()
            { }
            
            // Triggers when the activity is executed.
            protected override System.Workflow.ComponentModel.ActivityExecutionStatus Execute(System.Workflow.ComponentModel.ActivityExecutionContext executionContext)
            {
                try
                {
                    // Get a reference to the SharePoint site.
                    SPSite site = new SPSite("http://" + System.Environment.MachineName);
                    SPWeb web = site.OpenWeb("/");
    
                    // Reference the original Announcements list.
                    SPList aList = web.GetList("/Lists/Announcements");
    
                    // If the Announcements Backup list already exists, delete it.
                    try
                    {
                        SPList bList = web.GetList("/Lists/Announcements Backup");
                        bList.Delete();
                    }
                    catch
                    { }
    
                    // Create a new backup Announcements list and reference it.
                    Guid newAnnID = web.Lists.Add("Announcements Backup", "A backup Announcements list.", SPListTemplateType.Announcements);
                    SPList bakList = web.Lists[newAnnID];
    
                    // Copy announcements from original to backup Announcements list.
                    foreach (SPListItem item in aList.Items)
                    {
                        SPListItem newAnnItem = bakList.Items.Add();
                        foreach (SPField field in aList.Fields)
                        {
                            if (!field.ReadOnlyField)
                                newAnnItem[field.Id] = item[field.Id];
                        }
                        newAnnItem.Update();
                    }
    
                    // Put the Backup Announcements list on the QuickLaunch bar.
                    bakList.OnQuickLaunch = true;
                    bakList.Update();
    
                }
    
                catch (Exception errx)
                {
                    System.Diagnostics.Debug.WriteLine("Error: " + errx.ToString());
                }
                
                return base.Execute(executionContext);
            }
    
    
        }
    }
    
  4. 프로젝트를 저장하고 메뉴 모음에서 빌드>솔루션 빌드를 선택합니다.

    Class1은 AnnouncementBackup Components 탭의 도구 상자에서 사용자 지정 작업으로 표시됩니다.

사이트 워크플로에 사용자 지정 작업 추가

이제 활동을 워크플로에 추가하여 사용자 지정 코드를 포함합니다.

사이트 워크플로에 사용자 지정 작업 추가

  1. 디자인 뷰의 Workflow Designer에서 Workflow1을 엽니다.

  2. 도구 상자에서 Class1을 끌어 onWorkflowActivated1 활동에 표시되게 하거나, Class1의 바로 가기 메뉴를 열고 복사를 선택한 다음 onWorkflowActivated1 활동의 바로 가기 메뉴를 열고 붙여넣기를 선택합니다.

  3. 프로젝트를 저장합니다.

사이트 워크플로 사용자 지정 활동 테스트

그런 다음 프로젝트를 실행하고 사이트 워크플로를 시작합니다. 사용자 지정 작업은 백업 알림 목록을 만들고 현재 공지 사항 목록의 내용을 이 목록에 복사합니다. 이 코드는 백업 목록을 만들기 전에 기존 목록이 있는지를 확인하는 작업도 합니다. 기존 백업 목록은 삭제됩니다. 또한 이 코드는 SharePoint 사이트의 빠른 실행 모음에 새 목록에 대한 링크를 추가합니다.

사이트 워크플로 사용자 지정 활동을 테스트하려면

  1. F5 키를 선택하여 프로젝트를 실행하고 SharePoint에 배포합니다.

  2. 빠른 실행 모음에서 목록 링크를 선택하여 SharePoint 사이트에서 사용할 수 있는 모든 목록을 표시합니다. 공지 사항이라는 이름의 공지 사항 목록이 하나만 존재합니다.

  3. SharePoint 웹 페이지 상단에 있는 사이트 워크플로 링크를 선택합니다.

  4. 새 워크플로 시작 섹션에서 AnnouncementBackup - Workflow1 링크를 선택합니다. 사이트 워크플로가 시작되고 사용자 지정 작업에서 코드가 실행됩니다.

  5. 빠른 실행 모음에서 공지 사항 백업 링크를 선택합니다. 공지 사항 목록에 포함된 모든 공지 사항이 이 새 목록에 복사됩니다.