연습: 연결 및 초기화 폼이 있는 워크플로 만들기
이 연습에서는 연결 및 시작 양식의 사용이 통합된 기본 순차 워크플로를 만드는 방법을 보여 줍니다. SharePoint 관리자가 워크플로를 처음 연결할 때(연결 양식)와 사용자가 워크플로를 시작할 때(시작 양식) 해당 매개 변수를 워크플로에 추가할 수 있는 ASPX 양식입니다.
이 연습은 사용자가 다음 요구 사항을 충족하는 경비 보고서에 대한 승인 워크플로를 만들려는 시나리오를 간략하게 설명합니다.
워크플로가 목록과 연결되어 있으면 관리자에게 경비 보고서에 금액 한도를 입력하는 연결 양식에 대한 메시지가 표시됩니다.
직원은 경비 보고서를 공유 문서 목록에 업로드하고 워크플로를 시작한 다음 워크플로 시작 양식에 경비 합계를 입력합니다.
직원 경비 보고서 합계가 관리자의 미리 정의된 한도를 초과하는 경우 직원의 관리자가 경비 보고서를 승인하는 작업이 생성됩니다. 그러나 직원의 경비 보고서 합계가 경비 한도보다 작거나 같은 경우 워크플로의 기록 목록에 자동 승인된 메시지가 기록됩니다.
이 연습에서는 다음 작업을 수행합니다.
Visual Studio에서 SharePoint 목록 정의 순차 워크플로 프로젝트 만들기
워크플로 일정 만들기
워크플로 작업 이벤트 처리
워크플로 연결 및 시작 양식 만들기
워크플로 연결
수동으로 워크플로 시작
참고 항목
이 연습에서는 순차 워크플로 프로젝트를 사용하지만 상태 시스템 워크플로도 프로세스는 동일합니다.
또한 일부 Visual Studio 사용자 인터페이스 요소의 경우 다음 지침에 설명된 것과 다른 이름 또는 위치가 시스템에 표시될 수 있습니다. 이러한 요소는 사용하는 Visual Studio 버전 및 설정에 따라 결정됩니다. 자세한 내용은 Visual Studio IDE 개인 설정을 참조하세요.
필수 조건
이 연습을 완료하려면 다음과 같은 구성 요소가 필요합니다.
지원되는 Microsoft Windows 및 SharePoint 버전.
Visual Studio.
SharePoint 순차 워크플로 프로젝트 만들기
먼저, Visual Studio에서 순차 워크플로 프로젝트를 만듭니다. 순차 워크플로는 마지막 작업이 완료될 때까지 순서대로 실행되는 일련의 단계입니다. 이 절차에서는 SharePoint의 공유 문서 목록에 적용되는 순차 워크플로를 만듭니다. 워크플로의 마법사를 사용하면 워크플로를 사이트 또는 목록 정의와 연결하여 워크플로가 시작되는 시기를 결정할 수 있습니다.
SharePoint 순차 워크플로 프로젝트 만들기
메뉴 모음에서 파일>새로 만들기>프로젝트를 선택하여 새 프로젝트 대화 상자를 표시합니다.
Visual C# 또는 Visual Basic 아래의 SharePoint 노드를 확장한 다음 2010 노드를 선택합니다.
템플릿 창에서 SharePoint 2010 프로젝트 프로젝트 템플릿을 선택합니다.
이름 텍스트 상자에 ExpenseReport를 입력하고 확인 단추를 선택합니다.
SharePoint 사용자 지정 마법사가 나타납니다.
디버깅에 사용할 사이트 및 보안 수준 지정 페이지에서 팜 솔루션으로 배포 옵션 단추를 선택한 다음 마침 단추를 선택하여 신뢰 수준 및 기본 사이트를 적용합니다.
또한 이 단계에서는 솔루션 신뢰 수준을 팜 솔루션으로 설정합니다. 이는 워크플로 프로젝트에 유일하게 사용할 수 있는 옵션입니다.
솔루션 탐색기에서 프로젝트 노드를 선택합니다.
메뉴 모음에서 프로젝트>새 항목 추가를 선택합니다.
Visual C# 또는 Visual Basic 아래에서 SharePoint 노드를 확장한 다음 2010 노드를 선택합니다.
템플릿 창에서 순차 워크플로(팜 솔루션에만 해당) 템플릿을 선택한 다음 추가 단추를 선택합니다.
SharePoint 사용자 지정 마법사가 나타납니다.
디버그할 워크플로 이름 지정 페이지에서 기본 이름(ExpenseReport - Workflow1)을 적용합니다. 기본 워크플로 템플릿 형식 값(워크플로 나열)을 유지합니다. 다음 단추를 선택합니다.
Visual Studio를 통해 디버그 세션에서 워크플로를 자동으로 연결하시겠습니까? 페이지에서 워크플로 템플릿이 선택된 경우 자동으로 연결하는 확인란의 선택을 취소합니다.
이 단계에서는 나중에 연결 양식을 표시하는 공유 문서 목록과 워크플로를 수동으로 연결할 수 있습니다.
끝내기버튼을 선택합니다.
워크플로에 연결 양식 추가
다음으로, SharePoint 관리자가 처음 워크플로를 경비 보고서 문서에 연결할 때 표시되는 ASPX 연결 양식을 만듭니다.
워크플로에 연결 양식을 추가하려면
솔루션 탐색기에서 Workflow1 노드를 선택합니다.
메뉴 모음에서 프로젝트>새 항목 추가를 선택하여 새 항목 추가 대화 상자를 표시합니다.
대화 상자 트리 뷰에서 프로젝트 언어에 따라 Visual C# 또는 Visual Basic을 확장하고 SharePoint 노드를 확장한 다음 2010 노드를 선택합니다.
템플릿 목록에서 워크플로 연결 양식 템플릿을 선택합니다.
이름 텍스트 상자에 ExpenseReportAssocForm.aspx를 입력합니다.
추가 단추를 선택하여 프로젝트에 양식을 추가합니다.
연결 양식 디자인 및 코딩
이 절차에서는 컨트롤 및 코드를 추가하여 연결 양식에 기능을 부여합니다.
연결 양식을 디자인하고 코딩하려면
연결 양식(ExpenseReportAssocForm.aspx)에서
ID="Main"
이 포함된asp:Content
요소를 찾습니다.이 콘텐츠 요소의 첫 번째 줄 바로 뒤에 다음 코드를 추가하여 경비 승인 한도(AutoApproveLimit)를 요청하는 레이블 및 텍스트 상자를 만듭니다.
<asp:Label ID="lblAutoApproveLimit" Text="Auto Approval Limit:" runat="server" /> <asp:TextBox ID="AutoApproveLimit" runat="server" /> <br /><br />
솔루션 탐색기에서 ExpenseReportAssocForm.aspx 파일을 확장하여 종속 파일을 표시합니다.
참고 항목
프로젝트가 Visual Basic에 있으면 모든 파일 보기 단추를 선택하여 이 단계를 수행해야 합니다.
ExpenseReportAssocForm.aspx 파일에 대한 바로 가기 메뉴를 열고 코드 보기를 선택합니다.
GetAssociationData
메서드를 다음으로 바꿉니다.
워크플로에 시작 양식 추가
다음으로, 사용자가 경비 보고서에 대한 워크플로를 실행할 때 표시되는 시작 양식을 만듭니다.
시작 양식을 만들려면
솔루션 탐색기에서 Workflow1 노드를 선택합니다.
메뉴 모음에서 프로젝트>새 항목 추가를 선택하여 새 항목 추가 대화 상자를 표시합니다.
대화 상자 트리 뷰에서 프로젝트 언어에 따라 Visual C# 또는 Visual Basic을 확장하고 SharePoint 노드를 확장한 다음 2010 노드를 선택합니다.
템플릿 목록에서 워크플로 시작 양식 템플릿을 선택합니다.
이름 텍스트 상자에 ExpenseReportInitForm.aspx를 입력합니다.
추가 단추를 선택하여 프로젝트에 양식을 추가합니다.
시작 양식 디자인 및 코딩
다음으로, 컨트롤 및 코드를 추가하여 시작 양식에 기능을 부여합니다.
시작 양식을 코딩하려면
시작 양식(ExpenseReportInitForm.aspx)에서
ID="Main"
이 포함된asp:Content
요소를 찾습니다.이 콘텐츠 요소의 첫 번째 줄 바로 뒤에 다음 코드를 추가하여 연결 양식에 입력된 경비 승인 한도(AutoApproveLimit)를 표시하는 레이블 및 텍스트 상자와 총 경비(ExpenseTotal)를 묻는 다른 레이블 및 텍스트 상자를 만듭니다.
<asp:Label ID="lblAutoApproveLimit" Text="Auto Approval Limit:" runat="server" /> <asp:TextBox ID="AutoApproveLimit" ReadOnly="true" runat="server" /> <br /><br /> <asp:Label ID="lblExpenseTotal" Text="Expense Total:" runat="server" /> <asp:TextBox ID="ExpenseTotal" runat="server" /> <br /><br />
솔루션 탐색기에서 ExpenseReportInitForm.aspx 파일을 확장하여 종속 파일을 표시합니다.
ExpenseReportInitForm.aspx 파일에 대한 바로 가기 메뉴를 열고 코드 보기를 선택합니다.
Page_Load
메서드를 다음 예제로 바꿉니다.GetInitiationData
메서드를 다음 예제로 바꿉니다.
워크플로 사용자 지정
다음으로, 워크플로를 사용자 지정합니다. 나중에 두 양식을 워크플로에 연결합니다.
워크플로를 사용자 지정하려면
프로젝트에서 Workflow1을 열어 워크플로 디자이너에 워크플로를 표시합니다.
도구 상자에서 Windows Workflow v3.0 노드를 확장하고 IfElse 작업을 찾습니다.
다음 단계 중 하나를 수행하여 이 작업을 워크플로에 추가합니다.
IfElse 작업에 대한 바로 가기 메뉴를 열어 복사를 선택하고 워크플로 디자이너의 onWorkflowActivated1 작업 아래에 있는 줄에 대한 바로 가기 메뉴를 연 다음 붙여넣기를 선택합니다.
도구 상자에서 IfElse 작업을 끌어 워크플로 디자이너의 onWorkflowActiviated1 작업 아래 줄에 연결합니다.
도구 상자에서 SharePoint 워크플로 노드를 확장하고 CreateTask 작업을 찾습니다.
다음 단계 중 하나를 수행하여 이 작업을 워크플로에 추가합니다.
CreateTask 작업에 대한 바로 가기 메뉴를 열어 복사를 선택하고, 워크플로 디자이너의 IfElseActivity1 내에서 두 개의 작업을 놓을 위치 영역 중 하나에 대한 바로 가기 메뉴를 연 다음 붙여넣기를 선택합니다.
도구 상자에서 CreateTask 작업을 IfElseActivity1의 두 작업을 놓을 위치 영역 중 하나로 끌어옵니다.
속성 창에서 CorrelationToken 속성에 대한 taskToken 속성 값을 입력합니다.
옆에 있는 더하기 기호(
)를 선택하여 CorrelationToken 속성을 확장합니다.
OwnerActivityName 하위 속성의 드롭다운 화살표를 선택하고 Workflow1 값을 설정합니다.
TaskId 속성을 선택한 다음 줄임표(
) 단추를 선택하여 바인딩 속성 대화 상자를 표시합니다 .
새 멤버에 바인딩 탭을 선택하고 필드 만들기 옵션 단추를 선택한 다음 확인 단추를 선택합니다.
TaskProperties 속성을 선택한 다음 줄임표(
) 단추를 선택하여 바인딩 속성 대화 상자를 표시합니다 .
새 멤버에 바인딩 탭을 선택하고 필드 만들기 옵션 단추를 선택한 다음 확인 단추를 선택합니다.
도구 상자에서 SharePoint 워크플로 노드를 확장하고 LogToHistoryListActivity 작업을 찾습니다.
다음 단계 중 하나를 수행하여 이 작업을 워크플로에 추가합니다.
LogToHistoryListActivity 작업에 대한 바로 가기 메뉴를 열어 복사를 선택하고, 워크플로 디자이너의 IfElseActivity1 내에서 다른 작업을 놓을 위치 영역에 대한 바로 가기 메뉴를 연 다음 붙여넣기를 선택합니다.
도구 상자에서 LogToHistoryListActivity 작업을 IfElseActivity1의 다른 작업을 놓을 위치 영역으로 끌어옵니다.
워크플로에 코드 추가
다음으로, 워크플로에 코드를 추가하여 기능을 부여합니다.
워크플로에 코드를 추가하려면
워크플로 디자이너에서 createTask1 작업에 대한 바로 가기 메뉴를 열고 코드 보기를 선택합니다.
다음 메서드를 추가합니다.
private void createTask1_MethodInvoking(object sender, EventArgs e) { createTask1_TaskId1 = Guid.NewGuid(); createTask1_TaskProperties1.AssignedTo = "somedomain\\someuser"; createTask1_TaskProperties1.Description = "Please approve the expense report"; createTask1_TaskProperties1.Title = "Expense Report Approval Needed"; }
참고 항목
코드에서
somedomain\\someuser
를 "Office\\JoeSch
" 같이 작업을 만들 도메인 및 사용자 이름으로 바꿉니다. 테스트를 위해 개발 중인 계정을 사용하는 것이 가장 쉽습니다.MethodInvoking
메서드 아래에 다음 예제를 추가합니다.워크플로 디자이너에서 ifElseBranchActivity1 작업을 선택합니다.
속성 창에서 조건 속성의 드롭다운 화살표를 선택한 다음 코드 조건 값을 설정합니다.
옆에 있는 더하기 기호(
)를 선택하여 조건 속성을 확장한 다음 해당 값을 checkApprovalNeeded로설정합니다.
워크플로 디자이너에서 logToHistoryListActivity1 작업에 대한 바로 가기 메뉴를 열고 처리기 생성을 선택하여
MethodInvoking
이벤트에 대한 빈 메서드를 생성합니다.MethodInvoking
코드를 다음으로 바꿉니다.F5 키를 선택하여 프로그램을 디버그합니다.
그러면 애플리케이션을 컴파일, 패키지, 배포되고, 해당 기능이 활성화되고, IIS 애플리케이션 풀이 재생되고, 브라우저가 사이트 URL 속성에 지정된 위치에서 시작합니다.
문서 목록에 워크플로 연결
다음으로, 워크플로를 SharePoint 사이트의 SharedDocuments 목록과 연결하여 워크플로 연결 양식을 표시합니다.
워크플로를 연결하려면
빠른 실행 표시줄에서 공유 문서 링크를 선택합니다.
라이브러리 도구 탭에서 라이브러리 링크를 선택하고 라이브러리 설정 리본 단추를 선택합니다.
사용 권한 및 관리 섹션에서 워크플로 설정 링크를 선택한 다음 워크플로 페이지에서 워크플로 추가 링크를 선택합니다.
워크플로 설정 페이지의 위쪽 목록에서 ExpenseReport - Workflow1 템플릿을 선택합니다.
다음 필드에 ExpenseReportWorkflow를 입력하고 다음 단추를 선택합니다.
그러면 워크플로가 공유 문서 목록과 연결되고 워크플로 연결 양식이 표시됩니다.
자동 승인 한도 텍스트 상자에 1200을 입력한 다음 워크플로 연결 단추를 선택합니다.
워크플로 시작
다음으로, 워크플로를 공유 문서 목록의 문서 중 하나와 연결하여 워크플로 시작 양식을 표시합니다.
워크플로를 시작하려면
SharePoint 페이지에서 홈 단추를 선택합니다.
빠른 실행 모음에서 공유 문서 링크를 선택하여 공유 문서 목록을 표시합니다.
페이지 위쪽의 라이브러리 도구 탭에서 문서 링크를 선택한 다음 리본 메뉴에서 문서 업로드 단추를 선택하여 새 문서를 공유 문서 목록에 업로드합니다.
문서 업로드 대화 상자에서 찾아보기 단추를 선택하고 문서 파일을 하나 선택한 다음 열기 단추, 확인 단추를 선택합니다.
이 대화 상자에서 문서에 대한 설정을 변경할 수 있지만 저장 단추를 선택하여 기본값 그대로 둡니다.
업로드된 문서를 선택하고 표시되는 드롭다운 화살표를 선택한 다음 워크플로 항목을 선택합니다.
ExpenseReportWorkflow 옆의 이미지를 선택합니다.
그러면 워크플로 시작 양식이 표시됩니다. (자동 승인 한도 상자에 표시되는 값은 연결 양식에서 입력되었기 때문에 읽기 전용입니다.)
경비 합계 텍스트 상자에 1600을 입력한 다음 워크플로 시작 단추를 선택합니다.
그러면 공유 문서 목록이 다시 표시됩니다. 완료됨 값이 포함된 ExpenseReportWorkflow라는 새 열이 워크플로가 방금 시작한 항목에 추가됩니다.
업로드된 문서 옆의 드롭다운 화살표를 선택하고 워크플로 항목을 선택하여 워크플로 상태 페이지를 표시합니다. 완료된 워크플로 아래에서 완료됨 값을 선택합니다. 작업이 작업 섹션에 나열됩니다.
작업의 제목을 선택하여 작업 세부 정보를 표시합니다.
SharedDocuments 목록으로 돌아가서 동일한 문서 또는 다른 문서를 사용하여 워크플로를 다시 시작합니다.
시작 페이지에서 연결 페이지에 입력한 금액(1200)보다 작거나 같은 금액을 입력합니다.
그러면 작업 대신 기록 목록에 항목이 생성됩니다. 항목이 워크플로 상태 페이지의 워크플로 기록 섹션에 표시됩니다. 기록 이벤트의 결과 열에서 메시지를 확인합니다. 여기에는 자동 승인된 금액을 포함하여
logToHistoryListActivity1.MethodInvoking
이벤트에 입력된 텍스트가 들어 있습니다.