최초 문서 게시일: 2012년 9월 5일 수요일

이미지

안녕하세요. SharePoint Designer 팀 선임 프로그램 관리자 김형국이라고 합니다.

이 블로그에서는 공용 또는 상용 HTTP(REST) 웹 서비스를 사용하는 SharePoint 2013을 간편하게 작성하는 방법과, 해당 웹 서비스가 루핑을 통해 매일 전자 메일을 보내는 서비스로 실행되도록 하는 방법을 설명합니다.

아래 비디오 클립에서 보시다시피, 여기서는 "eBay Daily Deals"라는 사이트 워크플로를 만듭니다. 이 워크플로는 eBayTM에서 일별 거래 정보를 읽고 SharePoint 승격된 링크 목록에 거래 항목을 만든 다음 해당 거래 정보를 확인하려는 사용자에게 전자 메일을 보냅니다.

HTTP 웹 서비스 호출 동작을 통해 웹 서비스 사용

 

"eBay Daily Deals" 워크플로는 사이트 워크플로이므로 먼저 새 SharePoint 2013 사이트 워크플로를 만들어야 합니다. 사이트 워크플로를 만든 후에는 3개 스테이지를 추가하고 적절한 이름을 지정한 후에 이동 동작을 수행하여 연결합니다.

 

 

스테이지 1

스테이지 1의 이름을 “Get eBay Daily Deals”로 지정하고 그림 1과 같이 동작 4개와 Loop 블록 하나를 추가합니다.

clip_image002

그림 1. 워크플로 스테이지 1

 

가장 먼저 HTTP 웹 서비스 호출 동작을 추가합니다. HTTP URIhttp://www.firstamong.com/json/index.php?q=http://deals.ebay.com/feeds/xml(영문일 수 있음)로 설정되고 HTTP 메서드는 "GET"으로 설정됩니다. JSON을 반환하는 eBay의 REST 웹 서비스 중 하나를 사용하면 편리하겠지만, eBay의 REST 웹 서비스 결과에는 헤더가 포함되어 있어서 추가 변환기 웹 서비스를 사용해야 합니다. 몇 가지 변환기 서비스를 사용할 수 있는데, 여기서는 www.firstamong.com(영문일 수 있음)의 서비스를 사용합니다. 이 서비스는 XML 및 일반 JSON 개체를 반환하는 eBay의 다른 REST 웹 서비스를 호출합니다.

"HTTP 웹 서비스 호출" 동작 문에서는 RequestContent 또는 RequestHeaders 매개 변수를 설정할 필요가 없으므로 설정하지 않습니다. 여기서는 해당 웹 서비스의 출력만 확인하면 되기 때문입니다. response 매개 변수를 ResponseContent 변수로만 설정하면 이 웹 서비스 호출의 출력이 ResponseContent 변수(사전 유형 변수)에 저장됩니다.

 

eBay XML 웹 서비스를 호출하는 변환기 웹 서비스의 JSON 출력은 다음과 같습니다.

 

{"EbayDailyDeals":

  {"Item":[

{"ItemId":"221065015062","EndTime":"1341845999000","PictureURL":"http:\/\/i.ebayimg.com\/00\/s\/NDI4WDUxMA==\/$(KGrHqJHJBwE8+9eOVMzBPZ1lhNt!g~~60_1.JPG","SmallPictureURL":"http:\/\/i.ebayimg.com\/00\/s\/NDI4WDUxMA==\/$(KGrHqJHJBwE8+9eOVMzBPZ1lhNt!g~~60_1.JPG","Picture175Url":"http:\/\/i.ebayimg.com\/00\/s\/NDI4WDUxMA==\/$(KGrHqJHJBwE8+9eOVMzBPZ1lhNt!g~~60_1.JPG","Title":"Acer ICONIA 7in Tablet 8GB WiFi","Description":"N\/A","DealURL":"http:\/\/deals.ebay.com\/5000101083_Acer_ICONIA_7in _Tablet_8GB_WiFi","ConvertedCurrentPrice":"139.99","PrimaryCategoryName":"Computers\/Tablets & Networking:iPads, Tablets & eBook Readers","PrimaryCategoryId":"171485","Location":"Miami, Florida","Quantity":"128","QuantitySold":"372","MSRP":"299.99","SavingsRate":"53%","AutoPay":"true","Hot":"false","Tier":"0","PriceDisplay":"MSRP"},

{"ItemId":"271012700385","EndTime":"1341845999000","PictureURL":"http:\/\/i.ebayimg.com\/00\/s\/MzYwWDM2MA==\/$(KGrHqR,!ioE-w!y!T--BPto5nEk0!~~60_1.JPG","SmallPictureURL":"http:\/\/i.ebayimg.com\/00\/s\/MzYwWDM2MA==\/$(KGrHqR,!ioE-w!y!T--BPto5nEk0!~~60_1.JPG","Picture175Url":"http:\/\/i.ebayimg.com\/00\/s\/MzYwWDM2MA==\/$(KGrHqR,!ioE-w!y!T--BPto5nEk0!~~60_1.JPG","Title":"Sylvania Wireless CE 7-Inch Smartbook - SYNET7WIC","Description":"N\/A","DealURL":"http:\/\/deals.ebay.com\/5000101099_Sylvania_Wireless_CE_7_Inch_Smartbook___SYNET7WIC","ConvertedCurrentPrice":"49.99","PrimaryCategoryName":"Computers\/Tablets & Networking:Laptops & Netbooks:PC Laptops & Netbooks","PrimaryCategoryId":"177","Location":"US","Quantity":"1307","QuantitySold":"693","MSRP":"199.99","SavingsRate":"75%","AutoPay":"true","Hot":"false","Tier":"0","PriceDisplay":"MSRP"},

{"ItemId":"160823596564","EndTime":"1341845999000","PictureURL":"http:\/\/i.ebayimg.com\/00\/s\/NjAwWDM1MQ==\/$(KGrHqFHJFQE+T-

...

"MoreDeals":

   {"MoreDealsSection":[

    {"SectionTitle":"Emergency Preparedness","Item":[

{"ItemId":"200687021159","EndTime":"1341845999000","PictureURL":"http:\/\/i.ebayimg.com\/00\/s\/NDI5WDUwMA==\/$(KGrHqV,!p0E-vF(Fmt0BP7iH6)M6g~~60_1.JPG","SmallPictureURL":"http:\/\/thumbs4.ebaystatic.com\/pict\/200687021159_1.jpg","Picture175Url":"http:\/\/thumbs4.ebaystatic.com\/pict\/200687021159_1.jpg","Title":"DuroMax 1500 Watt Portable Pull Start Gas Power Job Site Electric Generator","Description":"NA","DealURL":"http:\/\/deals.ebay.com\/5000099668_DuroMax_1500_Watt_Portable_Pull_Start_Gas_Power_Job_Site_Electric_Generator","ConvertedCurrentPrice":"179.99","PrimaryCategoryName":"Home & Garden:Tools:Generators: Home-Use","PrimaryCategoryId":"46412","Location":"La Verne","Quantity":"302","QuantitySold":"228","MSRP":"299.99","SavingsRate":"40%","AutoPay":"true","Hot":"false","Tier":"0","PriceDisplay":"MSRP"},

{"ItemId":"370622857968","EndTime":"1341845999000","PictureURL":"http:\/\/i.ebayimg.com\/00\/s\/MTAwMFgxMDAw\/$T2eC16h,!)0E9s37IeSMBP7IWFtFqw~~60_12.JPG","SmallPictureURL":"http:\/\/thumbs1.ebaystatic.com\/pict\/370622857968_1.jpg","Picture175Url":"http:\/\/thumbs1.ebaystatic.com\/pict\/370622857968_1.jpg","Title":"Dorcy High Beam LED Aluminum Flashlight 100 Lumens Water Resistant 41-4287","Description":"NA","DealURL":"http:\/\/deals.ebay.com\/5000099680_Dorcy_High_Beam_LED_Aluminum_Flashlight_100_Lumens_Water_Resistant_41_4287","ConvertedCurrentPrice":"11.99","PrimaryCategoryName":"Sporting Goods:Outdoor Sports:Camping & Hiking:Flashlights, Lanterns & Lights:Flashlights","PrimaryCategoryId":"16037","Location":"Altatac USA","Quantity":"1899","QuantitySold":"1113","MSRP":"49.99","SavingsRate":"76%","AutoPay":"false","Hot":"false","Tier":"0","PriceDisplay":"MSRP"},

{"ItemId":"300725740900","EndTime":"1341845999000","PictureURL":"http:\/\/i.ebayimg.com\/00\/s\/NTAwWDUwMA==\/

...

각 내부 항목을 처리하려는 경우 DealItems 변수를 사용하면 “Get ([%Variable: Index%])/Title from Variable: DealItems” 같은 동작 문을 삽입해 항목의 Title 속성을 가져올 수 있습니다. 그러나 여기서는 작업을 간단하게 유지하고 웹 서비스 출력 내의 거래 항목 구조를 간결하게 표시하기 위해 전체 경로를 삽입하여 항목 속성에 액세스합니다. 즉, Variable: DealItems가 아닌 “Get EbayDailyDeals/Item([%Variable: Index%])/Title from Variable: ResponseContent“와 같은 문을 사용하여 항목의 Title 속성을 검색합니다. 사전 유형을 사용하는 방법에 대한 자세한 내용은 이 블로그 아래쪽에 제공된 링크를 참조하십시오.

 

그림 2에서는 각 내부 항목의 모든 속성을 검색하는 방법을 보여 줍니다.

clip_image003

그림 2. 거래 항목 속성 검색 및 승격 링크 항목 만들기

 

사전에서 항목 가져오기 동작을 사용하여 각 거래 항목의 모든 속성을 워크플로 변수에 저장한 다음, Loop 블록의 뒷부분에서 목록 항목을 만들 때 사용합니다. 이 "검색" 프로세스에서 사용하는 대부분의 변수 유형은 String 유형이지만 다른 유형도 사용됩니다.

사전 유형을 사용하는 방법에 대한 자세한 내용은 이 블로그 끝에 제공된 링크를 참조하십시오.

clip_image004

그림 3: 로컬 변수

 

또한 문자열 바꾸기 동작을 사용하여 URL 형식 데이터에서 ',' 또는 '!' 문자를 사용할 수 없는 SharePoint 제한 관련 문제를 해결합니다.

 

Loop 블록 끝에는 전자 메일 콘텐츠를 작성하고 인덱스 변수를 1씩 증가시키는 두 개의 Step 블록이 있습니다. 이 워크플로는 eBay 웹 서비스의 결과를 사용하여 목록 항목을 만들고, "eBay Daily Deals" 정보 수신을 원하는 사용자에게 전자 메일을 보내는 두 가지 용도로 주로 사용됩니다. 따라서 그림 4에 나와 있는 것과 같이 Loop 블록 내에 HTML 조각을 작성합니다.

clip_image005

그림 4. Loop 블록 내의 두 단계

 

그림 5에 나와 있는 것처럼, 목록 항목을 만드는 데 사용한 워크플로 변수는 모두 HTML 조각 작성 시에 다시 사용됩니다.

clip_image006

그림 5. 전자 메일 본문용 HTML 조각 작성

 

 

스테이지 2

스테이지 2의 워크플로 논리는 스테이지 1에서 웹 서비스를 호출하는 문 하나(그림 6에서 네모 표시된 문 참조)를 제외하면 스테이지 1의 워크플로 논리와 정확히 동일합니다. 따라서 스테이지 1의 내용을 복사하여 스테이지 2에 붙여 넣는 방법만으로 스테이지 2를 쉽게 만들 수 있습니다.

스테이지 2는 eBay Daily Deals 웹 서비스 출력 내의 추가 섹션을 읽습니다. 따라서 위의 긴 JSON 출력에서 항목(Item) 배열을 검색할 때 동일한 논리를 사용하되 다른 경로를 사용할 수 있습니다.

clip_image007

그림 6. 워크플로 스테이지 2

 

즉, 그림 7에 나와 있는 것처럼 "MoreDealsSection"의 항목에 액세스하려면 다른 경로를 사용해야 합니다.

clip_image008

그림 7. MoreDealsSection에서 다른 거래 항목 가져오기

 

기타 모든 항목은 정확히 동일합니다.

 

 

스테이지 3

스테이지 1과 스테이지 2에서는 목록 항목을 만들었으며 나중에 전자 메일을 보낼 때 사용할 HTML 조각도 작성했습니다. 스테이지 3에서는 전자 메일을 보낼 것이므로, 그림 8에는 전자 메일 보내기(Send Email) 동작만 나와 있습니다. "Subscribers"는 Daily Deails 전자 메일을 수신할 모든 사이트 구성원이 구성원으로 추가되는 SharePoint 그룹입니다.

clip_image009

그림 8. 워크플로 스테이지 3

 

아래에 나와 있는 것처럼 전자 메일 보내기(Send Email) 동작의 속성 표 대화 상자에서 HTML로 전체 전자 메일 본문을 작성할 수 있습니다. EmailContent 변수에 복잡한 HTML 테이블 코드 조각이 이미 있기 때문에 그림 9에 나와 있는 것처럼 해당 변수 조회 주위에 래퍼 태그만 몇 개 삽입하면 됩니다.

clip_image010

그림 9. 전체 전자 메일 본문 작성

 

이제 이 워크플로를 바로 게시 및 시작할 수 있습니다.

사이트에 "eBay Daily Deals" 목록이 있고, 해당 목록이 SharePoint 2013에서 새롭게 제공되는 목록 유형인 "승격된 링크(Promoted Links)" 유형 목록인지 확인하십시오. 이 목록 앱은 사이트 루트 페이지 오른쪽 위에 있는 설정 링크에서 앱 추가를 클릭하면 쉽게 찾을 수 있습니다.

clip_image011

 

 

워크플로 시작

이 워크플로를 시작하면 "eBay Daily Deals" 목록에 eBay Daily Deal 항목이 만들어지고 워크플로에서 전자 메일도 발송됩니다.

clip_image012

그림 10. eBay Daily Deals 승격된 링크 목록

 

clip_image013

그림 11. 워크플로에서 발송되는 전자 메일

 

 

루프 백 방법

지금까지 eBay Daily Deals 정보가 포함된 전자 메일을 발송하는 유용한 사이트를 작성하는 방법을 살펴보았습니다. 그러면 이 전자 메일을 "매일" 받으려면 어떻게 해야 할까요? 이 워크플로가 24시간마다 반복 실행되도록 할 수 있을까요?

당연히 가능합니다. 아래와 같이 '기간' 동안 일시 중지(Pause for Duration) 동작을 추가하고 스테이지 3 내 이동(Go to) 문의 대상을 다시 스테이지 1을 가리키도록 변경하면 이 워크플로는 eBay Daily Deals 항목을 검색한 다음 해당 거래에 대한 내용을 매일 전자 메일로 보내는 서비스처럼 작동합니다.

그러면 전자 메일을 매일 받을 수 있으므로 매우 편리합니다.

clip_image014

그림 12. 시작 스테이지로 루프

 

 

참조

아래에는 사전 변수 및 HTTP 웹 서비스를 처리하는 워크플로 동작과 사전 유형에 대한 자세한 내용을 확인할 수 있는 참조 페이지가 나와 있습니다.

 

SharePoint Designer 2013 도움말 콘텐츠

이 문서는 번역된 블로그 게시물입니다. 원본 문서는 How to work with web service using “Call HTTP Web Service” action을 참조하십시오.