2008-09-25 7 views
16

Tôi đang phát triển, một luồng công việc SharePoint tuần tự đơn giản cần được ràng buộc vào thư viện tài liệu. Khi kết hợp các công việc ít để một thư viện tài liệu, tôi đã kiểm tra các tùy chọn nàyBắn luồng công việc SharePoint bằng cách cập nhật mục danh sách thông qua danh sách Webservice

  • phép workflow này là bằng tay bắt đầu bởi một người dùng xác thực với Chỉnh sửa mục Permissions.
  • Bắt đầu quy trình làm việc này khi một mục mới là được tạo.
  • Bắt đầu quy trình làm việc này khi một mục được thay đổi.

Bây giờ tôi tải tài liệu lên thư viện này và quy trình làm việc bắt đầu và ví dụ gửi thư. Nó hoàn thành và mọi thứ đều ổn.

Khi tôi chọn Chỉnh sửa thuộc tính trên Mặt hàng mới và lưu thay đổi, luồng công việc lại được kích hoạt lại. Tuyệt đối những gì chúng tôi mong đợi.

Ngay cả khi sao chép một Mục mới vào thư viện với sự trợ giúp của Copy.asmx Webservice, quy trình làm việc bắt đầu bình thường.

Nhưng bây giờ Tôi muốn cập nhật mục qua Danh sách SharePoint WebServices.asmx.

My CAML goes here:

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

Item đang được cập nhật (timestamp thay đổi và một tài sản giả, quá) nhưng công việc không bắt đầu một lần nữa.

Hành vi này có thể tái tạo trên sự phát triển của chúng tôi hệ thống kiểm tra.

Kiểm tra các bản ghi lỗi (C: \ Program Files \ Common Files \ Microsoft Shared \ mở rộng máy chủ web \ 12 \ logs) Tôi phát hiện ra một thông báo lỗi lạ:

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. 

Bất cứ ai có thể khẳng định hành vi này? Hoặc bất kỳ gợi ý giải pháp nào?


Tôi thông báo cho bạn về bất kỳ sự phát triển nào về chủ đề này.

+0

Chúng tôi đã thấy hành vi này với dịch vụ web Lists.asmx và luồng công việc trong tuần qua với một kịch bản rất giống nhau. Tại thời điểm này, chúng tôi đang làm việc xung quanh điều này với các cuộc gọi dịch vụ web bổ sung trùng lặp với chức năng luồng công việc. Tôi rất thích nghe về bất kỳ sự phát triển nào bạn gặp phải! – barryd

+0

@barryd: Bạn có nghĩ rằng workaroung của bạn sẽ làm điều đó trong sử dụng sản xuất? Và bạn đã tìm thấy một cách để kích hoạt quy trình công việc bên ngoài? Tôi đã mở một trường hợp tại các dịch vụ hỗ trợ khách hàng của microsoft. Tôi hy vọng họ sẽ giúp chúng tôi vượt qua vấn đề này. Tất nhiên, tôi sẽ đăng bất kỳ tin tức nào ở đây! –

Trả lời

11

Cuối cùng, chúng tôi đã trải qua các quy trình dịch vụ hỗ trợ tại Microsoft và nhận được giải pháp!

Trước tiên, Microsoft đã tuyên bố đây là lỗi. Nó là một lỗi nhỏ, bởi vì có một giải pháp tốt, vì vậy nó có thể mất một thời gian lâu hơn, cho đến khi lỗi này sẽ được cố định (các kỹ thuật viên hỗ trợ nói điều gì đó với gói dịch vụ kế tiếp oder phiên bản tiếp theo (!)).

Nhưng bây giờ cho vấn đề.

Các reaseon

Chúng ta hãy nhìn vào mã CAML từ câu hỏi của tôi:

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

Đối với bất kỳ lý do Manager Workflow không làm việc với ID, chúng tôi bước vào trong dòng thứ hai . Lạ, tất cả các lệnh SharePoint khác đang làm việc với ID, nhưng không làm việc với Trình quản lý luồng công việc. Trình quản lý luồng công việc hoạt động với tên tài liệu "đủ điều kiện". Vì vậy, bởi vì chúng tôi không có đầu mối và không nhập bất kỳ tên tài liệu đủ điều kiện nào, Trình quản lý luồng công việc mặc định là tên của thư viện tài liệu hiện tại. Và giờ đây, thông báo lỗi bắt đầu có ý nghĩa:

The object specified does not belong to a list. 

Tất nhiên, đối tượng (thư viện tài liệu) không thuộc danh sách, đó là danh sách.

Giải pháp

Chúng ta phải thêm một dòng để truy vấn CAML của chúng tôi:

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

Các FileRef đi tên tài liệu đầy đủ để quản lý luồng công việc, trong đó - bây giờ hoàn toàn hạnh phúc - bắt đầu luồng công việc của mục.

Hãy cẩn thận, bạn phải bao gồm đường dẫn máy chủ tuyệt đối đầy đủ, bỏ qua tên máy chủ của bạn (được tìm thấy ví dụ trong thuộc tính ServerRelativePath của SPItem của bạn).

Full làm việc CAML Query:

<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> 

Tương lai

Có lẽ hành vi không có giấy tờ này sẽ được cố định tại một trong những gói dịch vụ sắp tới, có lẽ không. Hỗ trợ của Microsoft đã xin lỗi và sẽ phát hành một bài viết MSDN về chủ đề này. Trong tháng tới, tôi hy vọng bài viết này trên stackoverflow sẽ giúp các nhà phát triển trong tình huống tương tự.

Cảm ơn bạn đã đọc!

0

Tôi đã gặp sự cố này và phát hiện ra rằng khi quy trình công việc đã bắt đầu, nó không thể được khởi động lại tự động, bất kể bạn cập nhật mục như thế nào. Tuy nhiên, bạn có thể tự khởi động lại quy trình làm việc, bao nhiêu lần tùy ý.

3

Chúng tôi đã gặp phải sự cố tương tự với quy trình phê duyệt. Để giải quyết, chúng tôi đã viết Trình nhận sự kiện của riêng mình và đính kèm nó vào danh sách. Tùy thuộc vào việc mục đó đã được cập nhật hay chỉnh sửa chưa, chúng tôi đã kích hoạt Quy trình phê duyệt.

Hy vọng điều này sẽ giúp ...

+0

điều này nghe hay. chúng tôi đang liên hệ với bộ phận hỗ trợ của microsoft và đang chờ có đề xuất. Nhưng điều này dường như là một cách để đi. –

0

Tôi đã thấy hành vi tương tự. Nhưng sau đó bạn nhận được posts like this, cho mọi người biết cách tạo một tài khoản mỗi ngày để thiết lập lời nhắc qua email.