SharePoint 20102011.04.06 17:28

오늘의 오후를 불태운 결과입니다.

“SPTimerJob 을 배포하고 나면 OWSTimer 를 재시작 해주세요.”

개발환경의 비주얼 스튜디오에서 배포를 하면 이 녀석은 웹어플리케이션 리사이클만 해줍니다. 그런데 타이머 서비스를 담당하는 OWSTimer 는 그냥 그대로 돌고 있는데, 이놈이 배포이전의 DLL 을 물고 있습니다. GAC 배포 이후에도 이전의 코드로 도는 것으로 보아 캐싱을 하는 구조인듯 합니다.

오늘 오후 동안 타이머 잡이 마음대로 되지 않아서 고생을 했는데, 문제는 OWSTimer 였습니다. 이 프로세스를 재시작 해주니 모든 문제가 해결되었네요.

저는 VS 2010 에 추가적으로 CKSDEV 를 설치해서 사용하고 있는데, 제대로 물건입니다. 디버깅도 프로세스 리스타트도 굉장히 편리합니다. 쉐어포인트 개발하시는 분들은 필수설치 애드인입니다 !!

image

Posted by 랜스 lanslote
SharePoint 20102011.04.05 17:24

스케줄로 도는 워크플로우를 만들고 있습니다.

쉐어포인트가 제공하는 유형의 워크플로우가 아닌 백엔드의 로직처리만을 담당하는 워크플로우를 만들어서 타이머 잡으로 돌리려고 합니다.

타이머 잡에서 코드로 구현하면 되는 로직을 굳이 워크플로우로 만드는 이유는….

- 보기 좋으니까..

- 괜히 그러고 싶어서..

- 워크플로우 진행기록이 남으니까..

- 도전해 보고 싶은 마음에..

등등 이 있습니다.

 

일단 가능성을 보기 위해 순차 워크플로우 하나를 만들었습니다.

image

아무것도 손대지 않은 순수한 워크플로우 랍니다.

이건 리스트 워크플로우가 아닌 사이트 워크플로우로 만들었기 때문에, 배포 후 사이트 설정 > 워크플로 설정 에서 확인이 가능합니다.

image

 

테스트로 아래와 같은 코드를 만들어서 구동시키면 워크플로우가 시작됩니다.

구동방식에서 동기/비동기를 선택할 수 있습니다.

using (SPSite site = SPContext.Current.Site)
           {
               //throw new NotImplementedException();
               SPWorkflowManager SPWM = null;
               SPWorkflowAssociationCollection SPWAC = null;
               SPWM = site.WorkflowManager;
               SPWAC = site.OpenWeb().WorkflowAssociations;
               SPWorkflowAssociation SPWA = SPWAC.GetAssociationByName("Workflow1", System.Globalization.CultureInfo.CurrentCulture);
 
               SPWM.StartWorkflow(site, SPWA, "", SPWorkflowRunOptions.Asynchronous);
           }

 

잘 구동되었는지 확인을 하려면, 사이트 작업 > 모든 사이트 콘텐츠 로 이동하여 [만들기] 옆에 있는 [사이트 워크플로] 링크를 클릭하면 됩니다. 테스트로 두 번 실행하였는데 잘 동작했네요.

image

Posted by 랜스 lanslote
SharePoint 20102011.03.31 13:41

레코드 라이브러리의 리스트 템플릿 아이디 찾는데, 반나절을 소비했습니다.

역시 많이 사용하지 않는 것이라서 그런지 구글링으로도 못찾고 결국 SharePoint Manager 로 스키마를 열어보고 확인했습니다.

1302 네요… .

image

오늘의 결론..

SharePoint Manger 2010 이 좋아요~~ (발그레)     http://spm.codeplex.com/

Posted by 랜스 lanslote
SharePoint 20102011.03.30 19:36

쉐어포인트의 기본 목록 웹파트의 XSL 을 우리가 원하는 커스텀 XSL 로 변경할 수 있습니다.

물론 xsl 파일이 _Layouts/xsl 폴더에 위치해야 합니다.

본래는 화면 UI 상으로 할 수 있는 작업인데, C# 코드로 해봤습니다

아래의 예제 코드는 ListAdded 의 이벤트에서 수행되는 코드입니다.

/// <summary>
/// 목록 이벤트
/// </summary>
public class ECMEventReceiver : SPListEventReceiver
{
   /// <summary>
   /// 목록 추가됨.
   /// </summary>
   public override void ListAdded(SPListEventProperties properties)
   {
       base.ListAdded(properties);
       SPList List = properties.List;
       SPView View = List.DefaultView;           
 
       string pageUrl = List.ParentWebUrl + "/" + View.Url;
       SPLimitedWebPartManager webPartManager = List.ParentWeb.GetLimitedWebPartManager(pageUrl, PersonalizationScope.Shared);
       XsltListViewWebPart wp = webPartManager.WebParts[0] as XsltListViewWebPart;
       
       wp.XslLink = "/_Layouts/XSL/ecm.xsl";
       webPartManager.SaveChanges(wp);
   }
 
}
Posted by 랜스 lanslote
SharePoint 20102011.03.30 13:12

URL 기반으로 쉐어포인트 리스트의 XML 데이터를 볼 수 있습니다.

아래와 같이 하면 된 답니다.

http://MyServer/[site]/_vti_bin/owssvr.dll?Cmd=Display&List={listGuid}&XMLDATA=TRUE

 

여기에 여러가지 변화를 줄 수 있는데, 아래와 같습니다.

[뷰를 지정해서 보기]

http://…/owssvr.dll?Cmd=Display&List={listGuid}&view={viewGuid}&XMLDATA=TRUE

[반환받을 필드를 지정하기]

http://…/owssvr.dll?Cmd=Display&List={listGuid}&query=Title%20Status&XMLDATA=TRUE

[필터를 적용해서 보기]

http://…/owssvr.dll?Cmd=Display&List={listGuid}&query=Title%20Status&XMLDATA=TRUE&FilterField1=Status&FilterValue1=In%20Progress

=====================================================================

자세한 내용은 MSDN 을 참조하면 좋을 것 같습니다

http://msdn.microsoft.com/en-us/library/ms478653.aspx

Posted by 랜스 lanslote
SharePoint 20102011.03.30 08:36

어제 우연한 기회에 알게 된 내용입니다.

도메인 콘트롤러에 설치된 쉐어포인트 서버에서는 OWA 가 제대로 동작하지 않습니다

구글링을 통해 해결법을 찾았는데, 꼼수로 해결하는 것 같습니다.

http://blogs.msdn.com/b/opal/archive/2010/04/25/faq-sharepoint-2010-rtm-installation.aspx

 

해결법은 아래와 같습니다.

===========================

Open SharePoint 2010 Management Shell, then run:

#Enable Word Web App:

$e = Get-SPServiceApplication | where {$_.TypeName.Equals("Word Viewing Service Application")}
$e.WordServerIsSandboxed = $false
$e.WordServerIsSandboxed

#Enable PowerPoint Web App - you need to answer "Y" for each command:

Get-SPPowerPointServiceApplication | Set-SPPowerPointServiceApplication -EnableSandboxedViewing $false
Get-SPPowerPointServiceApplication | Set-SPPowerPointServiceApplication -EnableSandboxedEditing $false

On the server, use Notepad to open c:\windows\system32\inetsrv\config\applicationHost.config. Add the line below at the end of the dynamicTypes section.
<add mimeType="application/zip" enabled="false" />

Then do a IISRESET /NOFORCE. Please note all files viewed (already have cache created) before these commands need to be re-upload again to make sure them work with Office Web Apps.

====================

저는 원래 AD 와 쉐어포인트를 두대로 구분해서 운영하고 있어서 이런 문제를 겪지 못했었는데,, 운이 좋았던 건지 나빳던 건지 모르겠네요.

여튼 원서버에 설치하려는 상황에서는 꼴 필요한 정보 입니다.

Posted by 랜스 lanslote
SharePoint 20102011.03.15 12:06

쉐어포인트의 문서라이브러리에서 제공하는 “탐색기에서 열기” 기능은 상당히 강력하고 편리한 방법입니다.

하지만 경우에 따라서는 이 기능을 사용할 수 없도록 강제해야 할 필요도 있을 수 있습니다. 이 경우 아래와 같은 절차로 간단하게 차단할 수 있는 방법이 있습니다.

1. 시스템 계정으로 중앙관리 사이트에 접속합니다

2. 응용프로그램 관리 –> 웹응용프로그램 관리 로 이동합니다

3. 제어할 대상이 될 웹응용프로그램을 선택하고 리본메뉴에서 “사용자 권한” 을 클릭합니다

image

4. 설정창에서 “원격 인터페이스 사용” 항목을 해제합니다. 그런데, 이때 “원격 인터페이스 사용”을 해제하면 “클라이언트 통합 기능 사용”도 같이 해제되어 버립니다. 여기서 바로 원치 않던 결과가 발생합니다. 탐색기로 열기를 막으면 각종 클라이언트 연결을 사용할 수 없게 됩니다.

여튼 해제하고 저장합니다. (여기서 설정되는 값은 Site Owner 에게도, 시스템계정에게도 동일하게 적용됩니다)

image

5. 이제 일반 사용자의 계정으로 쉐어포인트의 문서라이브러리에 접속하여 보겠습니다.

붉은색으로 표시된 버튼들이 비활성화 되었습니다.

image

- 일단 문서라이브러리에서 직접 문서를 작성하는 것이 안됩니다. 업로드만 가능하게 됩니다

- 당연하게 편집도 안됩니다.

image

- 쉐어포인트 워크스페이스를 사용할 수 없게 됩니다

- 아웃룩 연결도 안됩니다

- 물론 탐색기로 열기도 안됩니다.

6. 워드문서를 하나 클릭해서 Office Web App 으로 열어보겠습니다.

워드로 열기 버튼이 비활성화 됩니다. 브라우저에서 편집 기능은 잘 동작 합니다.

image

7. 다른 클라이언트를 테스트 해보겠습니다.

쉐어포인트 워크스페이스로 접속해 보면 아래와 같이 메세지가 나옵니다.

image

8. 쉐어포인트 디자이너로 사이트 열기를 수행해보면, 무한 로그인 창이 뜹니다.. 저는 수십번 로그인 비번을 넣다가 포기했더랍니다. 관리자 입장에서는 이 부분이 좀 크리티컬 한 것 같습니다.

image

9. “탐색기로 열기”가 Web DAV 프로토콜을 사용하기 때문에 윈도우 7에서 지원하는 네트워크 위치 연결하기를 통해 마치 네트웍 드라이브를 사용하는 것처럼 탐색기에 걸어놓을 수가 있습니다.

image

그런데 실제로 들어가보면 아무 파일도 나오지 않는 것을 볼 수 있습니다.

image

이상 “탐색기로 열기” 기능을 제한하는 방법과 그 여파에 대해 알아보았습니다. 이 방법을 사용하면 사이트 소유자나 시스템 관리자도 똑같이 제한되게 됩니다..

=============================================================================================

그 밖에 단순히 버튼만을 비활성화 하는 방법은 여기를 참조하시면 됩니다.

http://ballyhoo4u.com/disable-open-in-windows-explorer-on-sharepoint/

눈가리고 아웅 하는 꼴이지만, “탐색기에서 열기” 를 막는 다는 것 자체가 비정상적은 것이니까 이런 식의 버튼 숨기기 처리로도 효과를 볼 수 있으면 그만이겠지요.

Posted by 랜스 lanslote
SharePoint 20102011.03.13 23:34

잘못된 설계의 사례로 해외세미나에서 사용되었던 이미지 입니다.
남자아이들이 좋아하는 것과 여자아이들이 좋아하는 것을 모두 담은 "로봇 바비" 결국은 어떤 아이들도 좋아하지 않겠지요.
우리들이 고객에게 구축해주고 있는 쉐어포인트 시스템의 모습이 이런 모습은 아닐지 고민합니다. 이런 모습이 되지 않도록 설계하기 위해 노력해야 하겠습니다

barbie robot

robot

Posted by 랜스 lanslote
SharePoint 20102011.03.13 06:45

이런거 아닐까요..

그림91

Posted by 랜스 lanslote
SharePoint 20102011.03.11 17:01

유튜부

Posted by 랜스 lanslote