List Webservice를 통해 목록 항목을 업데이트하여 SharePoint 워크 플로를 시작합니다.

StackOverflow https://stackoverflow.com/questions/133953

문제

문서 라이브러리에 묶여야하는 간단한 SharePoint 순차 워크 플로우를 개발하고 있습니다. 작은 워크 플로를 문서 라이브러리와 연결할 때이 옵션을 확인했습니다.

  • 이 워크 플로우를 편집 항목 권한을 가진 인증 된 사용자가 수동으로 시작할 수 있도록하십시오.
  • 새 항목이 만들어지면이 워크 플로를 시작하십시오.
  • 항목이 변경되면이 워크 플로를 시작하십시오.

이제이 라이브러리에 문서를 업로드하고 워크 플로가 시작되고 예를 들어 메일을 보냅니다. 완성되고 모든 것이 괜찮습니다.

새 항목에서 속성 편집을 선택하고 변경 사항을 저장하면 워크 플로가 다시 시작됩니다. 절대적으로 우리가 기대했던 것.

COPY.ASMX WebService의 도움으로 새 항목을 라이브러리에 복사 할 때에도 워크 플로가 정상적으로 시작됩니다.

하지만 지금 항목을 업데이트하고 싶습니다 SharePoint WebService Lists.asmx를 통해.

나의 CAML 여기에 간다 :

<Method ID='1' Cmd='Update'>
  <Field Name='ID'>1</Field>
  <Field Name='myDummyPropertyField'>NewValue</Field>
</Method>

항목이 업데이트되고 있습니다 (타임 스탬프 변경 및 더미 속성도). 그러나 워크 플로가 다시 시작되지 않습니다.

이 행동은 우리의 발전에 재현 할 수 있습니다 그리고 테스트 시스템.

오류 로그 확인 (C : Program Files Common Files Microsoft Shared Web Server Extensions 12 Logs) 이상한 오류 메시지를 발견했습니다.

09/25/2008 16:51:40.17  w3wp.exe (0x1D94)                           0x1D60  Windows SharePoint Services     General                         6875    Critical    Error loading and running event receiver Microsoft.SharePoint.Workflow.SPWorkflowAutostartEventReceiver in Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c. Additional information is below.  : The object specified does not belong to a list.

이 행동을 확인할 수있는 사람이 있습니까? 아니면 해결책 힌트가 있습니까?


이 주제에 대한 발전에 대해 계속 알려 드리고 있습니다.

도움이 되었습니까?

해결책

마지막으로, 우리는 Microsoft의 지원 서비스 프로세스를 통해 솔루션을 얻었습니다!

먼저, Microsoft는 이것을 버그라고 말했습니다. 해결 방법이 양호하기 때문에 사소한 버그 이므로이 버그가 수정 될 때까지 시간이 조금 더 걸릴 수 있습니다 (지원 기술자가 다음 서비스 팩 Oder Next Version (!)으로 무언가를 말했습니다).

그러나 지금은 문제를 위해.

Reaseon

내 질문에서 CAML 코드를 살펴 보겠습니다.

<Method ID='1' Cmd='Update'>
  <Field Name='ID'>1</Field>
  <Field Name='myDummyPropertyField'>NewValue</Field>
</Method>

어떤 이유로 든 워크 플로 관리자가 ID와 작동하지 않으므로 두 번째 줄에 입력했습니다. Strange, 다른 모든 SharePoint 명령은 ID와 협력하지만 워크 플로 관리자는 아닙니다. 워크 플로 관리자는 "완전 자격을 갖춘"문서 이름과 함께 작동합니다. 따라서 단서가없고 완전히 자격을 갖춘 문서 이름을 입력하지 않았기 때문에 워크 플로 관리자는 기본적으로 현재 문서 라이브러리의 이름으로 기본적으로 표시됩니다. 이제 오류 메시지가 이해되기 시작합니다.

The object specified does not belong to a list.

물론 객체 (문서 라이브러리)는 목록에 속하지 않으며 목록입니다.

해결책

CAML 쿼리에 하나 더 줄을 추가해야합니다.

<Field Name='FileRef'>/sites/mySite/myDocLib/myFolder/myDocument.txt</Field>

Fileref는 완전히 자격을 갖춘 문서 이름을 워크 플로 관리자에게 전달합니다. 이제 완전히 행복한 것은 항목의 워크 플로를 시작합니다.

조심하십시오. 서버 이름을 생략하고 (예 : Spitem의 ServerRelativePath 속성에도) 전체 절대 서버 경로를 포함해야합니다.

전체 작업 CAML 쿼리 :

 <Method ID='1' Cmd='Update'>
    <Field Name='ID'>1</Field>
    <Field Name='FileRef'>/sites/mySite/myDocLib/myFolder/myDocument.txt</Field>
    <Field Name='myDummyPropertyField'>NewValue</Field>
  </Method>

미래

아마도이 문서화되지 않은 행동은 다가오는 서비스 팩 중 하나에서 고정 될 것입니다. Microsoft Support는 사과 하고이 주제에 대한 MSDN 기사를 발표 할 예정입니다. 다음 달에 StackoverFlow에 관한이 기사가 같은 상황에서 개발자에게 도움이되기를 바랍니다.

읽어 주셔서 감사합니다!

다른 팁

우리는 승인 워크 플로와 비슷한 문제에 직면했습니다. 그것을 해결하기 위해, 우리는 우리 자신의 이벤트 수신기를 작성하여 목록에 첨부했습니다. 품목이 업데이트되었는지 또는 편집되었는지 여부에 따라 승인 워크 플로를 해고했습니다.

도움이 되었기를 바랍니다...

이 문제도 발생했으며 일단 워크 플로가 시작되면 항목을 업데이트하는 방법에 관계없이 자동으로 다시 시작할 수 없다는 것을 알았습니다. 그러나 원하는만큼 수동으로 워크 플로를 다시 시작할 수 있습니다.

나는 같은 행동을 보았다. 그러나 당신은 얻습니다 이와 같은 게시물, 사람들에게 전자 메일 알림을 설정하기 위해 하루에 1 개를 만드는 방법을 보여줍니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top