연습: 사용자 지정 사이트 워크플로 작업 만들기
이 연습에서는 Visual Studio를 사용하여 사이트 수준 워크플로에 대한 사용자 지정 작업을 만드는 방법을 보여 줍니다.사이트 수준 워크플로는 사이트의 목록뿐 아니라 전체 사이트에 적용됩니다. 사용자 지정 작업은 백업 알림 목록을 만든 다음 알림 목록의 내용을 백업에 복사합니다.
이 연습에서는 다음 작업을 수행합니다.
사이트 수준 워크플로 만들기
사용자 지정 워크플로 작업 만들기
SharePoint 목록 만들기 및 삭제
한 목록에서 다른 목록으로 항목 복사
빠른 실행 모음에 목록 표시
[!참고]
다음 지침처럼 컴퓨터에서 Visual Studio 사용자 인터페이스 요소 일부에 대한 이름이나 위치를 다르게 표시할 수 있습니다. 이러한 요소는 사용하는 Visual Studio 버전 및 설정에 따라 결정됩니다. 자세한 내용은 Visual Studio 설정을 참조하십시오.
사전 요구 사항
이 연습을 완료하려면 다음 구성 요소가 필요합니다.
지원되는 Microsoft Windows 및 SharePoint 버전.자세한 내용은 SharePoint 솔루션 개발 요구 사항을 참조하십시오.
Visual Studio
사이트 워크플로 사용자 지정 작업 프로젝트 만들기
먼저 사용자 지정 워크플로 작업을 포함하고 테스트할 프로젝트를 만듭니다.
사이트 워크플로 사용자 지정 작업 프로젝트를 만들려면
메뉴 표시줄에서 선택 파일, New, 프로젝트 표시 하는 새 프로젝트 대화 상자.
확장은 SharePoint 노드 중 하나에서 C# 또는 Visual Basic, 다음 선택은 2010 노드.
에 템플릿 창에서 선택에서 SharePoint 2010 프로젝트 템플릿.
에 이름 상자에서 Announcementbackup를 입력 한 다음 선택 된 확인 단추.
SharePoint 사용자 지정 마법사가 나타납니다.
에 사이트 지정 및 디버깅에 대 한 보안 수준 페이지에서 선택의 팜 솔루션으로 배포 옵션 단추를 선택한 다음 선택의 완료 신뢰 수준 및 기본 사이트 수락 단추.
이 단계에서는 솔루션의 신뢰 수준을 팜 솔루션으로 설정합니다. 이 옵션은 워크플로 프로젝트에 사용할 수 있는 유일한 옵션입니다.
솔루션 탐색기프로젝트 노드를 선택 하 고 다음 메뉴 표시줄에서 선택 프로젝트, 새 항목 추가.
하나 C# 또는 Visual Basic, 확장은 SharePoint 노드를 다음 선택은 2010 노드.
에 템플릿 창에서 선택의 순차적 워크플로 (팜 솔루션) 서식 파일을 다음 선택의 추가 단추.
SharePoint 사용자 지정 마법사가 나타납니다.
에 디버깅 워크플로 이름 지정 페이지에서 (AnnouncementBackup-Workflow1) 기본 이름을 그대로 사용 합니다.워크플로 서식 파일 형식으로 변경 사이트 워크플로, 다음 선택은 다음 단추.
선택은 완료 단추 나머지 기본 설정을 적용 합니다.
사용자 지정 워크플로 작업 클래스 추가
다음으로, 사용자 지정 워크플로 작업에 대한 코드를 포함하기 위해 프로젝트에 클래스를 추가합니다.
사용자 지정 워크플로 작업 클래스를 추가하려면
메뉴 표시줄에서 선택 프로젝트, 새 항목 추가 를 표시 하는 새 항목 추가 대화 상자.
에 템플릿 설치 트리 보기, 선택의 코드 노드를 다음 선택은 클래스 프로젝트 항목 템플릿 목록에서 템플릿을.기본 이름인 Class1을 사용합니다.추가 단추를 선택합니다.
Class1의 모든 코드를 다음 코드로 바꿉니다.
Imports System Imports System.Collections.Generic Imports System.Linq Imports System.Text Imports 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 Inherits System.Workflow.ComponentModel.Activity Public Sub New() MyBase.New() End Sub ' Triggers when the activity is executed. Protected Overrides Function Execute(ByVal executionContext As System.Workflow.ComponentModel.ActivityExecutionContext) As System.Workflow.ComponentModel.ActivityExecutionStatus Try ' Get a reference to the SharePoint site. Dim site As SPSite = New SPSite(("http://" + System.Environment.MachineName)) Dim web As SPWeb = site.OpenWeb("/") ' Reference the original Announcements list. Dim aList As SPList = web.GetList("/Lists/Announcements") ' If the Announcements Backup list already exists, delete it. Try Dim bList As SPList = web.GetList("/Lists/Announcements Backup") bList.Delete() Catch End Try ' Create a new backup Announcements list and reference it. Dim newAnnID As Guid = web.Lists.Add("Announcements Backup", "A backup Announcements list.", SPListTemplateType.Announcements) Dim bakList As SPList = web.Lists(newAnnID) ' Copy announcements from original to backup Announcements list. For Each item As SPListItem In aList.Items Dim newAnnItem As SPListItem = bakList.Items.Add For Each field As SPField In aList.Fields If Not field.ReadOnlyField Then newAnnItem(field.Id) = item(field.Id) End If Next newAnnItem.Update() Next ' Put the Backup Announcements list on the QuickLaunch bar. bakList.OnQuickLaunch = True bakList.Update() Catch errx As Exception System.Diagnostics.Debug.WriteLine(("Error: " + errx.ToString)) End Try Return MyBase.Execute(executionContext) End Function End Class End Namespace
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); } } }
프로젝트를 저장 한 다음, 메뉴 표시줄에서 선택 빌드, 솔루션 빌드.
Class1 표시에 사용자 지정 동작으로는 도구 에 AnnouncementBackup 구성 요소 탭.
사이트 워크플로에 사용자 지정 작업 추가
다음으로, 사용자 지정 코드를 포함하기 위해 워크플로에 작업을 추가합니다.
사이트 워크플로에 사용자 지정 작업을 추가하려면
Workflow Designer의 디자인 뷰에서 Workflow1을 엽니다.
Class1에서 드래그는 도구 상자 아래 나타나도록는 onWorkflowActivated1 활동 또는 class1에 대 한 바로 가기 메뉴에서 열기를 선택 복사, 줄 아래에 대 한 바로 가기 메뉴 열기는 onWorkflowActivated1 활동, 다음 선택 붙여넣기.
프로젝트를 저장합니다.
사이트 워크플로 사용자 지정 작업 테스트
그 다음, 프로젝트를 실행하고 사이트 워크플로를 시작합니다.사용자 지정 작업은 백업 알림 목록을 만든 다음 현재 알림 목록의 내용을 백업에 복사합니다.코드에서 백업 목록을 만들기 전에 이미 있는지 여부를 확인합니다.백업 목록이 이미 있으면 삭제됩니다.또한 코드에서 SharePoint 사이트의 빠른 실행 모음에 있는 새 목록에 링크를 추가합니다.
사이트 워크플로 사용자 지정 작업을 테스트하려면
Sharepoint에 배포 하 고 프로젝트를 실행 하려면 F5 키를 선택 합니다.
빠른 실행 표시줄에서 선택은 목록 링크 모든 SharePoint 사이트에 사용할 수 있는 목록을 표시 합니다.알림이라는 하나의 알림 목록만 있습니다.
SharePoint 웹 페이지의 맨 위에 있는 선택은 사이트 워크플로 링크.
시작 새 워크플로 섹션에서 선택 된 AnnouncementBackup – Workflow1 링크.이렇게 하면 사이트 워크플로가 시작되고 사용자 지정 작업의 코드가 실행됩니다.
빠른 실행 표시줄에서 선택 된 공지 백업 링크.알림 목록에 포함된 모든 알림이 새 목록에 복사되었습니다.