SharePoint 2013 워크플로에서 SharePoint 2010 워크플로를 트리거하는 방법

최초 문서 게시일: 2012년 8월 18일 토요일

 

안녕하세요 여러분,

SharePoint Designer 팀의 PM인 조정윤(John)이라고 합니다. 이제 SharePoint 및 SharePoint Designer 2013 베타 2가 공개됨에 따라 저희 제품 그룹에서는 보충 게시물들을 공유하고자 합니다.

이 게시물에서는 레거시 스타일 워크플로 호출이 지원되는 이유와 이 기능을 사용하는 방법을 설명하려고 합니다.

배경

무엇보다도 이 기능은 SPD 워크플로의 재사용성을 크게 개선할 것으로 기대됩니다. 사용자는 SharePoint 사이트에서 고도로 재사용 가능한 워크플로를 설정하고 스크립트나 함수와 마찬가지로 워크플로를 활용할 수 있습니다.

SharePoint 2013 워크플로 기능으로 SharePoint 2010 동작의 모든 기능을 완전히 대체하는 것은 불가능했습니다. SharePoint 2013은 다른 플랫폼을 기반으로 하고 이를 기반으로 다시 제작되었기 때문입니다. 워크플로 제품 팀에서는 새로운 최종 사용자 시나리오를 더욱 다양하게 구현할 수 있도록 하는 새로운 기능을 만드는 데 투자하는 반면, 사용자의 의견을 토대로 자주 사용되지 않는 기능에는 손을 놓았습니다.

그럼에도 불구하고 워크플로 제품 팀은 기존 시나리오를 모두 포함시키기를 강력히 원했습니다. 이에 따라 최종 사용자가 2013 워크플로에서 2010 워크플로를 호출할 수 있도록 함으로써 SharePoint 2013과 SharePoint 2010을 결합하는 "워크플로 시작" 동작을 디자인했습니다. 이것은 현재 SPD 사용자가 경제적으로 마이그레이션할 수 있도록 지원하는 유일한 방안이었습니다.

워크플로는 목록 워크플로, 다시 사용할 수 있는 워크플로, 사이트 워크플로의 3가지 유형으로 분류할 수 있습니다. 자세한 내용은 다음 블로그 게시물을 참조하십시오. 다시 사용할 수 있는 워크플로는 연결 시간에 입력 매개 변수를 취하며, 이후에 목록 워크플로인 것처럼 목록과 목록 항목에서 트리거할 수 있습니다. 워크플로를 시작하기 위해서는 호출 시점에 SharePoint 2010 워크플로가 실행될 수 있어야 합니다. 즉, 다시 사용할 수 있는 워크플로인 경우 이미 연결되어 있어야 합니다. 따라서 이것은 단일 동작인 "목록 워크플로 시작"을 통해 지원되며, 이 동작은 트리거할 SharePoint 2010에 연결된 워크플로, 초기화 양식 매개 변수, 연결된 워크플로가 실행될 대상 항목의 세 매개 변수를 받습니다. 이에 반해, 사이트 워크플로는 실행될 대상 항목이 필요 없으며 다른 동작인 "사이트 워크플로 시작"을 사용합니다. 이 동작은 트리거할 SharePoint 2010 사이트 워크플로와 초기화 양식 매개 변수의 두 매개 변수를 받습니다.

이에 관해 좀 더 심층적인 정보를 알아보시려면 https://msdn.microsoft.com/ko-kr/library/sharepoint/jj163181(office.15)(영문일 수 있음)에서 "워크플로 상호 운용 브리지"를 참조하십시오.

 

예제 시나리오

이제 기본적인 개념을 이해하셨을 테니 이러한 동작을 사용하는 경우와 그 방법을 이야기하려고 합니다. 예제 시나리오와 단계별 설명을 제시해 보겠습니다. J

SharePoint 2010 사이트에서 “예산 승인(Budget Approval)” 워크플로를 사용하고 있다고 가정해 봅시다. IT 관리자가 SharePoint 2010을 SharePoint 2013으로 업그레이드하기로 결정하고, 이에 따라 기존 SharePoint 2010 워크플로를 새 사이트로 마이그레이션했습니다. 참고로 이것은 워크플로를 SharePoint 2013 워크플로로 업그레이드했다는 의미는 아닙니다. 이러한 워크플로는 여전히 SharePoint 2010 워크플로입니다. “예산 승인(Budget Approval)” 워크플로는 재무 또는 인사 부서에 예산을 요청하는 데 사용되며, 요청 금액에 해당하는 “요청 예산(Budget requested)”, 해당 예산이 필요한 이유를 설명하는 “설명(Explanation)”, 응답 기한에 해당하는“요청된 승인 기한(Requested approval due date)”, 관련 정보를 나타내기 위한 “참조(Reference)”의 4가지 매개 변수를 입력 값으로 취합니다.

“예산 승인(Budget Approval)” 워크플로를 새 워크플로 프로세스의 일부로 사용하길 원한다고 해 봅시다. 이전 같으면 새 워크플로를 만든 후 새 프레임워크에서 이 워크플로를 다시 작성해야 했을 것입니다. 그리고 2013 워크플로의 새로 도입된 기능을 “예산 승인(Budget Approval)” 워크플로와 결합하려고 할 경우 이 모두를 하나의 워크플로로 작성하는 것이 불가능했을 것입니다.

이 경우에 “워크플로 시작(Start a Workflow)” 동작은 완벽한 해결 방안이 됩니다. “예산 승인(Budget Approval)” 워크플로가 “Contoso 재무(Contoso finance)” 목록 아래에 있는 목록 워크플로이고 Contoso의 재무 프로세스가 워크플로에 의해 자동으로 처리된다고 해 보겠습니다.

 

디자인 단계

 

1. 트리거할 대상 워크플로가 목록 워크플로이거나 목록에 연결된 다시 사용할 수 있는 워크플로인 경우 “목록 워크플로 시작(Start a List Workflow)” 동작을 삽입합니다.

clip_image001

 

2. 이 동작이 삽입된 상태에서 해당 워크플로 또는 연결을 먼저 선택해야 합니다. 이를 위해 “SharePoint 2010 목록 워크플로(SharePoint 2010 list workflow)” 링크를 클릭합니다.

clip_image002

 

3. 대상 워크플로가 있는 목록을 찾은 후에 해당 워크플로를 선택합니다.

이미지

 

4. “확인(OK)”을 클릭하여 위의 대화 상자를 닫습니다. 다음으로, 목록 시작(Start a List) 워크플로 동작 문장에 있는 "매개 변수(parameters)" 링크를 클릭합니다. 그러면 SharePoint Designer 2013에서 워크플로를 분석하고 초기화 매개 변수와 매개 변수에 미리 정의된 값을 표시합니다.

이미지

서로 다른 각 매개 변수에 대해 “유형(Type)” 정보가 추가로 표시될 것입니다. 그 이유는 SharePoint 2013 워크플로의 제작자가 SharePoint 2010 워크플로의 제작자와 다를 수 있기 때문입니다. 또한 저희 팀에서는 호출된 워크플로를 조회하지 않고도 초기화 양식 매개 변수 값을 설정할 수 있도록 SharePoint 2013 워크플로의 제작자에 대한 충분한 정보를 제공하길 원했습니다.

 

5. 디자인 중에 각 매개 변수의 값을 설정할 수 있습니다. 여기서 조회 값을 선택할 수 있으며 해당 값이 런타임에 실제로 설정됩니다. 이를 통해 호출하는 SharePoint 2013 워크플로와 호출되는 SharePoint 2010 워크플로를 사용한 통합 프로세스를 디자인하는 유연성을 누릴 수 있습니다.
또한 대화 상자에 제한 사항이 표시되므로 매개 변수의 정보를 미리 알아볼 필요가 없습니다.

이미지

 

6. 물론 텍스트 편집기에 직접 입력하여 값을 설정할 수도 있습니다. 참고로 대화 상자와 그 기능은 매개 변수 유형에 따라 다릅니다.

이미지

이미지

 

7. “…”을 누르면 채워지는 매개 변수 유형에 해당하는 디자이너 유형이 나타나 그에 알맞게 입력할 수 있습니다. 한편 “Fx” 단추를 클릭하면 표준 조회 대화 상자가 표시됩니다.

이미지

이미지

 

8. 매개 변수가 모두 설정되고 나면 “초기화 매개 변수 값 설정(Set Values for Initiation Parameters)” 대화 상자를 닫습니다. 설정된 매개 변수 개수가 동작 문장에 바로 표시됩니다.

이미지

이미지

 

9. 다음으로, 대상 워크플로가 실행될 항목을 선택합니다. 대개 "현재 항목"에 대해 프로세스를 실행하려 할 것입니다. 즉, 호출하는 워크플로와 호출되는 워크플로를 실행하고 로그와 결과를 동일한 항목에 남겨 둡니다. 이러한 일반적인 시나리오를 지원하기 위해서는 "이 항목(this item)" 매개 변수로 “현재 항목(Current Item)”을 선택해야 합니다.

이미지

 

그러면 모두 완료됩니다! SharePoint 2010 워크플로를 호출하기 위해서는 동작 문장을 추가하고 적절한 값을 설정하기만 하면 됩니다. 간단하죠? J 실제로 이 프로세스는 최종 사용자가 SharePoint 서버에서 SharePoint 2010 워크플로를 트리거하는 동작과 유사합니다. 목록, 항목 및 연결된 워크플로를 선택하고 초기화 양식을 채우면 됩니다. SharePoint 서버에 대해 수행하는 최종 사용자 단계는 아래와 같습니다.

clip_image021

이미지

이미지

 

또 다른 훌륭한 기능은 호출하는 SharePoint 2013 워크플로 내에서 호출된 워크플로의 변수 값을 사용할 수 있다는 것입니다. 이러한 변수는 SharePoint 2013 워크플로에서 조회 대화 상자를 통해 사용할 수 있습니다.

예제 시나리오를 통해 이에 대해 자세히 설명하겠습니다.

새로운 회사 정책이 공표되어 워크플로 디자이너가 예산 승인 프로세스 참가자들에게 새로운 정책을 검토하도록 알림 전자 메일을 보내야 합니다.

 

10. 예산 승인 참가자들에게 전자 메일을 보내려면 “전자 메일 보내기(Send an email)” 동작을 추가합니다.

이미지

 

11. SharePoint 2010 워크플로의 변수를 조회하려면 "받는 사람(To)" 컨트롤에서 “워크플로 사용자 조회(Workflow Lookup for a User)”를 선택합니다.

이미지

 

12. “목록/사이트 워크플로 시작(Start a List/Site Workflow)” 동작을 삽입하고 SharePoint 2010 워크플로를 선택한 후에는 새 데이터 원본이 자동으로 만들어집니다. 데이터 원본의 이름은 정적 텍스트 “SharePoint 2010 Output”과 워크플로 이름으로 구성됩니다.

이미지

 

13. “예산 승인(Budget Approval)”의 모든 변수가 두 번째 드롭다운인 “원본 필드(Field from source)”에 표시됩니다. 필요한 변수를 선택하고 “확인(OK)” 단추를 눌러 전자 메일 대화 상자에서 “받는 사람(to)” 값을 설정합니다.

이미지

 

14. 마찬가지로 “참조(CC)” 섹션을 채웁니다. 이 변수는 SharePoint 2010 워크플로를 만든 사람에 의해 수동으로 만들어져 있습니다. 나머지 필드를 원하는 값으로 채웁니다.

이미지

이미지

 

이제 SharePoint 2010 워크플로의 반환 값을 사용하는 방법을 잘 이해하셨을 줄로 생각합니다.

앞의 예제에서는 “워크플로 시작(Start a Workflow)” 동작을 사용하여 레거시 워크플로를 호출하는 방법을 보여 드렸습니다. 이 개념을 기반으로 확장하여 동일한 동작으로 추가 기능을 SharePoint 2013 워크플로에 추가할 수 있습니다. 예를 들어 SharePoint 2010 워크플로에서만 사용할 수 있는 일부 동작(예: 조회 관리자 동작)이 있습니다. “워크플로 시작(Start a Workflow)” 동작으로 이러한 레거시 동작을 사용하는 다른 워크플로를 트리거하고 기능을 확장할 수 있습니다.

“워크플로 시작(Start a Workflow)” 동작과 그 사용 방법을 완전히 익히고 나면, SharePoint 2013 워크플로와 SharePoint 2010 워크플로가 더 이상 별도의 워크플로 형태로 느껴지지 않을 것입니다. J

제한 사항

SharePoint 2013과 2010 워크플로의 강점을 완전하게 결합하는 데는 제한 사항이 있습니다.

일부는 새 플랫폼의 디자인 변경 때문입니다. 예를 들어 “배정 단계(Assignment Stages)” 유형 매개 변수는 SharePoint 2013 워크플로에서 더 이상 지원되지 않기 때문에 “워크플로 시작(Start a Workflow)”에서 사용할 수 없습니다. 다시 말해서, “승인 프로세스 시작(Start Approval Process)”을 사용해야 할 경우 SharePoint 2010 워크플로를 사용해야 합니다.

또한 “워크플로 시작(Start a Workflow)” 동작을 사용하여 연결하려는 모든 워크플로는 하나의 사이트에 있어야 합니다. 그러나 서로 다른 모든 워크플로의 워크플로 상태 페이지는 별도의 페이지에 표시됩니다.

마지막으로, 다른 목록에 연결된 워크플로 호출은 SharePoint 2013 워크플로의 현재 항목에서 실행할 수 없습니다. 두 워크플로가 서로 다른 목록에 대해 실행되므로 그렇습니다. 따라서 다른 목록에 있는 워크플로를 실행하려면 대상 워크플로 목록에서 워크플로를 실행할 특정 항목을 선택해야 합니다.

요약

“워크플로 시작(Start a Workflow)” 동작은 런타임에 SharePoint 2013 워크플로를 실행하는 도중 SharePoint 2010 워크플로를 트리거합니다. 이것은 호출되는 워크플로 유형에 따라 “목록 워크플로 시작(Start a List Workflow)”과 “사이트 워크플로 시작(Start a Site Workflow)”의 두 가지 유형의 동작을 갖습니다.

대상 워크플로를 선택하고 워크플로의 초기화 매개 변수를 고정 값 또는 동적 값으로 설정합니다. 또한 "목록 워크플로 시작(Start a List Workflow)"의 경우 워크플로가 속한 목록과 워크플로가 실행될 항목을 선택합니다.

이 동작을 SharePoint 2013 워크플로의 어디에나 배치할 수 있으며, 여러 SharePoint 2010 워크플로를 호출하는 것도 가능합니다. 워크플로의 동작을 다시 작성하지 않고 기존 SharePoint 2010 워크플로를 재사용할 수 있습니다. 이를 통해 SharePoint 2013과 SharePoint 2010 워크플로를 매우 효율적이고 간편하게 결합할 수 있습니다.

또한 조회 대화 상자를 통해 호출되는 SharePoint 2010 워크플로의 반환 값을 호출하는 SharePoint 2013 워크플로의 논리에 사용할 수 있습니다. 반환 값에는 동일한 SharePoint 2013 워크플로에서 호출되는 SharePoint 2010 워크플로를 위한 모든 로컬 변수와 몇 가지 추가 조건 변수가 포함됩니다.

모쪼록 이 기능의 이점을 잘 활용하시기를 바랍니다!

조정윤(John)

이 문서는 번역된 블로그 게시물입니다. 원본 문서는 How to trigger a SharePoint 2010 workflow from a SharePoint 2013 workflow를 참조하십시오.