연습: SharePoint 워크플로 솔루션 만들기 및 디버깅
이 연습에서는 기본적인 순차 워크플로 템플릿을 만드는 방법을 보여 줍니다. 워크플로에서는 공유 문서 라이브러리의 속성을 검사하여 문서가 검토되었는지 여부를 확인합니다. 문서가 검토된 경우 워크플로가 완료됩니다.
이 연습에서는 다음 작업을 수행합니다.
Visual Studio에서 SharePoint 목록 정의 순차 워크플로 프로젝트 만들기
워크플로 작업 만들기
워크플로 작업 이벤트 처리
참고
이 연습에서는 순차 워크플로 프로젝트를 사용하지만 상태 시스템 워크플로 프로젝트의 경우에도 프로세스가 동일합니다.
또한 시스템에서 일부 Visual Studio 사용자 인터페이스 요소에 대해 다음 지침에서 설명한 것과 다른 이름 또는 위치를 표시할 수 있습니다. 설치한 Visual Studio 버전과 사용하는 설정에 따라 이러한 요소가 결정됩니다. 자세한 내용은 설정에 대한 작업을 참조하십시오.
사전 요구 사항
이 연습을 완료하려면 다음 구성 요소가 필요합니다.
지원되는 Microsoft Windows 및 SharePoint 버전. 자세한 내용은 SharePoint 솔루션 개발 요구 사항을 참조하십시오.
Visual Studio 2010.
SharePoint 공유 문서 라이브러리에 속성 추가
공유 문서 라이브러리에 있는 문서의 검토 상태를 추적하려면 SharePoint 사이트의 공유 문서에 대해 Status, Assignee 및 Review Comments의 세 가지 속성을 만듭니다. 이러한 속성은 공유 문서 라이브러리에서 정의합니다.
SharePoint 공유 문서 라이브러리에 속성을 추가하려면
웹 브라우저에서 SharePoint 사이트(예: http://<시스템 이름>/SitePages/Home.aspx)를 엽니다.
빠른 실행 모음에서 공유 문서를 클릭합니다.
라이브러리 도구 리본 메뉴에서 라이브러리를 클릭한 다음 리본 메뉴에서 열 만들기 단추를 클릭하여 새 열을 만듭니다.
열의 이름을 Document Status로 지정하고 형식을 **선택(선택 메뉴)**으로 설정한 후 다음 세 가지 선택 옵션을 지정하고 확인을 클릭합니다.
검토 필요
검토 완료
변경 요청
두 개의 열을 더 만들고 해당 이름을 Assignee 및 Review Comments로 지정합니다. Assignee 열 형식을 한 줄 텍스트로 설정하고 Review Comments 열 형식을 여러 줄 텍스트로 설정합니다.
문서를 체크 아웃하지 않고도 편집할 수 있도록 설정
문서를 체크 아웃하지 않고 편집할 수 있는 경우 워크플로 템플릿을 보다 손쉽게 테스트할 수 있습니다. 다음 절차에서는 문서를 체크 아웃하지 않고 편집할 수 있도록 SharePoint 사이트를 구성합니다.
문서를 체크 아웃하지 않고도 편집할 수 있도록 설정하려면
빠른 실행 모음에서 공유 문서를 클릭합니다.
라이브러리 도구 리본 메뉴에서 라이브러리를 클릭한 다음 라이브러리 설정 단추를 클릭하여 문서 라이브러리 설정 페이지를 표시합니다.
일반 설정 섹션에서 버전 관리 설정을 클릭하여 버전 관리 설정 페이지를 표시합니다.
**문서를 편집하려면 먼저 체크 아웃해야 합니다.**가 아니요로 설정되어 있는지 확인합니다. 설정이 이와 다르면 이 설정을 아니요로 변경하고 확인을 클릭합니다.
브라우저를 닫습니다.
SharePoint 순차 워크플로 프로젝트 만들기
순차 워크플로는 마지막 작업이 끝날 때까지 순서대로 실행되는 일련의 단계입니다. 이 절차에서는 공유 문서 목록에 적용할 순차 워크플로를 만듭니다. 워크플로 마법사를 사용하면 워크플로를 사이트 정의나 목록 정의에 연결하고 워크플로 시작 시기를 결정할 수 있습니다.
SharePoint 순차 워크플로 프로젝트를 만들려면
Visual Studio를 시작하고 파일 메뉴에서 새로 만들기를 가리킨 다음 프로젝트를 클릭하여 새 프로젝트 대화 상자를 표시합니다.
Visual C# 또는 Visual Basic 아래의 SharePoint 노드를 확장한 다음 2010을 클릭합니다.
템플릿 창에서 순차 워크플로를 선택합니다.
이름 입력란에 MySharePointWorkflow를 입력한 다음 확인을 클릭합니다.
SharePoint 사용자 지정 마법사가 나타납니다.
디버깅에 사용할 사이트 및 보안 수준 지정 페이지에서 다음을 클릭하여 기본 사이트 및 신뢰 수준을 적용합니다.
이 단계에서는 솔루션의 신뢰 수준을 팜 솔루션으로 설정합니다. 이 옵션은 워크플로 프로젝트에 사용할 수 있는 유일한 옵션입니다. 자세한 내용은 샌드박스가 적용된 솔루션 고려 사항을 참조하십시오.
디버깅에 사용할 워크플로 이름 지정 페이지에서 기본 이름(MySharePointWorkflow - Workflow1)을 적용합니다. 기본 워크플로 템플릿 형식 값인 목록 워크플로를 그대로 두고 다음을 클릭합니다.
Visual Studio를 통해 디버그 세션에서 워크플로를 자동으로 연결하시겠습니까? 페이지에서 다음을 클릭하여 기본 설정을 모두 적용합니다.
이 단계에서는 워크플로를 공유 문서 라이브러리에 자동으로 연결합니다.
워크플로 시작 방법에 대한 조건 지정 페이지의 워크플로 시작 방법을 선택하십시오. 섹션에서 기본 옵션이 선택된 상태로 두고 마침을 클릭합니다.
이 페이지에서는 워크플로가 시작되는 시점을 지정할 수 있습니다. 기본적으로 워크플로는 SharePoint에서 사용자가 수동으로 워크플로를 시작하거나 워크플로와 연결된 항목이 만들어지면 시작됩니다.
워크플로 작업 만들기
워크플로에는 수행할 작업을 나타내는 작업이 하나 이상의 포함됩니다. Workflow Designer를 사용하여 워크플로의 작업을 정렬할 수 있습니다. 이 절차에서는 워크플로에 HandleExternalEventActivity 및 OnWorkFlowItemChanged라는 두 가지 작업을 추가합니다. 두 작업은 공유 문서 목록에서 문서의 검토 상태를 모니터링합니다.
워크플로 작업을 만들려면
Workflow Designer에 워크플로가 표시됩니다. 그렇지 않은 경우 솔루션 탐색기에서 Workflow1.cs 또는 Workflow1.vb를 두 번 클릭하여 엽니다.
디자이너에서 OnWorkflowActivated1 작업을 클릭하여 선택합니다.
속성 창에서 Invoked 속성 옆에 onWorkflowActivated를 입력하고 Enter 키를 누릅니다.
코드 편집기가 열리고 onWorkflowActivated라는 이벤트 처리기 메서드가 Workflow1 코드 파일에 추가됩니다.
Workflow Designer로 돌아가서 도구 상자를 열고 Windows Workflow v3.0 노드를 확장합니다.
도구 상자의 Windows Workflow v3.0 노드에서 While 작업을 끌어 onWorkflowActivated1 작업 아래의 줄에 연결합니다.
WhileActivity1 작업을 클릭하여 선택합니다.
속성 창에서 Condition을 Code Condition으로 설정합니다.
Condition 속성을 확장하고 자식 Condition 속성 옆에 isWorkflowPending을 입력한 다음 Enter 키를 누릅니다.
코드 편집기가 열리고 isWorkflowPending이라는 메서드가 Workflow1 코드 파일에 추가됩니다.
Workflow Designer로 돌아가서 도구 상자를 열고 SharePoint 워크플로 노드를 확장합니다.
도구 상자의 SharePoint 워크플로 노드에서 OnWorkflowItemChanged 작업을 끌어 whileActivity1 작업 내의 줄에 연결합니다.
onWorkflowItemChanged1 작업을 클릭하여 선택합니다.
속성 창에서 속성을 다음 표와 같이 설정합니다.
Property
값
CorrelationToken
workflowToken
Invoked
onWorkflowItemChanged
작업 이벤트 처리
마지막으로 각 작업에서 문서 상태를 확인합니다. 문서가 검토된 경우 워크플로가 완료됩니다.
작업 이벤트를 처리하려면
Workflow1.cs 또는 Workflow1.vb에서 Workflow1 클래스의 맨 위에 다음 필드를 추가합니다. 작업에서 이 필드를 사용하여 워크플로를 완료할지 여부를 결정합니다.
Dim workflowPending As Boolean = True
Boolean workflowPending = true;
Workflow1 클래스에 다음 메서드를 추가합니다. 이 메서드는 문서 목록의 Document Status 속성 값을 검사하여 문서가 검토되었는지 여부를 확인합니다. Document Status 속성이 Review Complete로 설정되어 있으면 checkStatus 메서드는 workflowPending 필드를 false로 설정하여 워크플로를 완료할 수 있음을 나타냅니다.
Private Sub checkStatus() If CStr(workflowProperties.Item("Document Status")) = "Review Complete" Then workflowPending = False End If End Sub
private void checkStatus() { if ((string)workflowProperties.Item["Document Status"] == "Review Complete") workflowPending = false; }
onWorkflowActivated 및 onWorkflowItemChanged 메서드에 다음 코드를 추가하여 checkStatus 메서드를 호출합니다. 워크플로가 시작되면 onWorkflowActivated 메서드는 checkStatus 메서드를 호출하여 문서가 이미 검토되었는지 여부를 확인합니다. 문서가 검토되지 않았으면 워크플로가 계속 실행됩니다. 문서를 저장할 때 onWorkflowItemChanged 메서드는 checkStatus 메서드를 다시 호출하여 문서가 검토되었는지 여부를 확인합니다. workflowPending 필드가 true로 설정되어 있는 동안에는 워크플로가 계속 실행됩니다.
Private Sub onWorkflowActivated(ByVal sender As System.Object, ByVal e As System.Workflow.Activities.ExternalDataEventArgs) checkStatus() End Sub Private Sub onWorkflowItemChanged(ByVal sender As System.Object, ByVal e As System.Workflow.Activities.ExternalDataEventArgs) checkStatus() End Sub
private void onWorkflowActivated(object sender, ExternalDataEventArgs e) { // Check the status. checkStatus(); } private void onWorkflowItemChanged(object sender, ExternalDataEventArgs e) { // Check the status. checkStatus(); }
isWorkflowPending 메서드에 다음 코드를 추가하여 workflowPending 속성의 상태를 확인합니다. 문서가 저장될 때마다 whileActivity1 작업에서는 isWorkflowPending 메서드를 호출합니다. 이 메서드는 ConditionalEventArgs 개체의 Result 속성을 검사하여 WhileActivity1 작업을 계속해야 할지 마쳐야 할지를 결정합니다. 속성이 true로 설정되어 있으면 해당 작업이 계속 실행됩니다. 그렇지 않으면 작업이 완료되고 워크플로가 완료됩니다.
Private Sub isWorkflowPending(ByVal sender As System.Object, ByVal e As System.Workflow.Activities.ConditionalEventArgs) e.Result = workflowPending End Sub
private void isWorkflowPending(object sender, ConditionalEventArgs e) { e.Result = workflowPending; }
프로젝트를 저장합니다.
SharePoint 워크플로 템플릿 테스트
디버거를 시작하면 Visual Studio에서는 워크플로 템플릿을 SharePoint 서버에 배포하고 워크플로를 공유 문서 목록에 연결합니다. 워크플로를 테스트하려면 공유 문서 목록에 있는 문서에서 워크플로 인스턴스를 시작합니다.
SharePoint 워크플로 템플릿을 테스트하려면
Workflow1.cs 또는 Workflow1.vb에서 onWorkflowActivated 메서드 옆에 중단점을 설정합니다.
F5 키를 눌러 솔루션을 빌드하고 실행합니다.
SharePoint 사이트가 나타납니다.
SharePoint의 탐색 창에서 공유 문서를 클릭합니다.
공유 문서 페이지의 라이브러리 도구 탭에서 문서를 클릭한 다음 문서 업로드 단추를 클릭하여 문서를 업로드합니다.
문서 업로드 대화 상자에서 찾아보기 단추를 클릭하고 문서 파일을 선택한 다음 열기, 확인을 차례로 클릭합니다.
이렇게 하면 선택한 문서가 공유 문서 목록에 업로드되고 워크플로가 시작됩니다.
Visual Studio에서 디버거가 onWorkflowActivated 메서드 옆의 중단점에서 중지되는지 확인합니다.
F5 키를 눌러 실행을 계속합니다.
여기서 문서 설정을 변경할 수 있지만 일단은 저장을 클릭하여 기본값을 그대로 유지합니다.
이렇게 하면 기본 SharePoint 웹 사이트의 공유 문서 페이지로 돌아갑니다.
공유 문서 페이지에서 MySharePointWorkflow 열 아래의 값이 진행 중으로 설정되어 있는지 확인합니다. 이는 워크플로가 진행 중이고 문서 검토가 대기 중임을 나타냅니다.
공유 문서 페이지에서 문서를 가리키고 아래쪽 화살표를 클릭한 다음 속성 편집을 클릭합니다.
Document Status를 Review Complete로 설정하고 저장을 클릭합니다.
이렇게 하면 기본 SharePoint 웹 사이트의 공유 문서 페이지로 돌아갑니다.
공유 문서 페이지에서 MySharePointWorkflow 열 아래의 값이 검토 완료로 설정되어 있는지 확인합니다. 이는 워크플로가 완료되고 문서가 검토되었음을 나타냅니다.
다음 단계
다음 항목에서는 워크플로 템플릿을 만드는 방법에 대해 더 자세히 설명합니다.
SharePoint 워크플로 작업에 대한 자세한 내용은 Workflow Activities for SharePoint Foundation을 참조하십시오.
Windows Workflow Foundation 작업에 대한 자세한 내용은 System.Workflow.Activities Namespace를 참조하십시오.