InfoPath Form Service 와 MOSS 웹페이지의 혼합 사용

이번 포스트 에서는 InfoPath form service 를 UI 측면에서 응용하는 방법을 소개하고자 합니다.

이 내용들은 MSDN 백서와 블로그 들에서 이미 소개 된 바 있으나 아직까지 직접 테스트 해 보시지 못하신 분들을 위한 것입니다.

(좀 더 정확히 말씀드리면, XmlFormView 를 웹파트로써 사용하는 것은 공식적으로 지원되는 방식은 아닙니다. 공식적으로 MSDN 에 공개된 방식은 커스텀 aspx 웹폼에 XmlFormView 를 사용하는 것입니다.)

우선 인포패스 폼 서비스를 표시하는 페이지에 대해서 얘기해 보고자 합니다.

인포패스 폼 서비스의 표시 페이지는 어플리케이션 페이지로 만들어져 있습니다.

설치드라이브:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\TEMPLATE\LAYOUTS 에 있는

FormServer.aspx 페이지 입니다.

이 페이지는 어플리케이션 페이지로 제작되었기 때문에 커스터마이징을 허용하지 않으며 모든 유저에게 다 동일하게 표시됩니다.

clip_image001

바로 아래 화면이 FormServer.aspx 입니다. 기본 상태에서 인포패스 양식을 브라우저로 보기를 선택하면 나오는 화면입니다. 많이들 보셨을 겁니다.

이 화면만 보시고 폼 서비스는 전체화면으로만 표시된다고 생각할 수 있는데 사실은 그렇지 않습니다.

clip_image002

이 FormServer.aspx 에서 인포패스 양식 표시를 담당하는 주체는 ASP.NET 의 XmlFormView 컨트롤 입니다.

이 컨트롤을 사용하면 인포패스 웹 양식을 SharePoint 페이지나 커스텀 웹 페이지, 또는 스마트 클라이언트에 집어 넣을 수 있습니다.

MOSS 에서는 크게 사이트 페이지나 어플리케이션 페이지에 넣는 방법이 있을 수가 있습니다.

사이트 페이지는 개인화가 가능하다는 장점이 있고, 어플리케이션 페이지는 로딩이 빠르고 개발이 가능하다는 장점이 있습니다.

어플리케이션 페이지에 대해서 낯선 분은 아래 백서를 참고 부탁 드리겠습니다.

Creating an Application Page in Windows SharePoint Services 3.0

이번 포스트에서는 우선 첫번째로 사이트 페이지 (웹파트 페이지)를 만들어 인포패스 웹 양식을 표시하는 것을 테스트 해 보도록 하겠습니다.

  1. 사이트 페이지 내에 인포패스 웹 폼을 표시하기

첫번째 테스트로써, XmlFormView 를 웹파트로써 등록하여 웹파트 페이지에서 위의 출장 신청서를 보여주도록 해 보겠습니다.

(출장 신청서는 InfoPath 2007에 기본 예제로 들어 있는 양식입니다.)

우선 기본 화면의 도구 모음이 눈에 거슬립니다. 이것들은 아래와 같이 InfoPath2007 양식 디자인 모드에서 양식 옵션의 브라우저 항목에서 안 보이도록 설정할 수 있습니다.

clip_image003

도구 모음을 없애 버리기 때문에, 양식 작성을 완료 후 문서 라이브러리에 저장하도록 하는 액션이 추가로 필요합니다.

이를 위해서 기본 출장 신청서 양식을 조금 수정하여 버튼을 붙이고, 버튼의 규칙을 이용하여 버튼을 누르면 폼을 문서 라이브러리로 전송하도록 합니다.

전송 후에는 추가 보기를 만들어 입력 양식 보기가 나타나지 않도록 했습니다.

이 부분에 대한 자세한 설명은 InfoPath 2007 도움말을 참고 부탁 드리겠습니다.

다음 과정은 이 웹폼을 웹파트로써 띄우는 것입니다. XmlFormView 를 웹파트로써 등록하는 것이 필요합니다.

설치드라이브:\Program Files\Microsoft Office Servers\12.0\Bin\Microsoft.Office.InfoPath.Server.dll 닷넷 어셈블리를 웹파트로 등록하여 주어야 하며 이를 위해서 web.config 를 수정합니다.

<SafeControl Assembly="Microsoft.Office.InfoPath.Server, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" Namespace="Microsoft.Office.InfoPath.Server.Controls" TypeName="XmlFormView" Safe="True"/>

이후에 웹파트 갤러리로 가서 XmlFormView 웹파트를 추가한 후

clip_image004

Aspx 웹파트 페이지를 만들고 XmlFormView 웹파트를 추가합니다. 처음에 추가하면 "양식이 닫혔습니다"란 에러가 뜹니다.

이것을 해결하려면 XmlFormView 웹파트의 속성을 바꾸어 주어야 합니다.

웹파트 속성의 XsnLocation 값을 변경해 주어야 하는데, 이 값은 양식을 게시한 라이브러리의 고급설정에서 "문서 서식 파일" 의 "서식파일 URL"을 전체 경로로 적어 주면 됩니다.

문서라이브러리에 이미 존재하는 양식을 표시하려면 XmlLocation 에 해당 양식의 전체 경로를 넣어주면 됩니다.

clip_image005

완성된 출장신청서 작성 페이지 입니다. 배경 화면의 비행기는 InfoPath 양식에서 설정한 것입니다.

clip_image006

입력 버튼을 누르고 난 후에는 입력 완료 보기로 전환하도록 버튼 규칙을 설정하였습니다.

clip_image007

문서 라이브러리에 저장된 양식 들입니다.

clip_image008

이 포스트는 아래 MSDN 백서들과 블로그 포스트들을 참고하여 작성되었습니다.

https://msdn.microsoft.com/en-us/library/aa701078.aspx :

Hosting InfoPath 2007 forms in WSS v3 / MOSS 2007 pages. :

Rendering an InfoPath 2007 form in a web part :

다음 포스트에서는 어플리케이션 페이지로 작성하여 좀 더 개발 자유도가 높은 형태를 테스트 해 보도록 하겠습니다.