سؤال

أنا أستخدم مؤسسة SharePoint (SharePoint 2010) لتطوير سير عمل في Visual Studio مع نموذج بدء سير العمل ASP.NET.

يمكنني استخدام هذا النموذج لتعيين بعض الخصائص على عنصر قائمة نقطة المشاركة الذي يتم تشغيل مثيل سير العمل عليه. أحيانًا أتلقى رسالة خطأ في نافذة Brwoser ، شيء مثل:

Error 

Failed%20to%20Start%20Workflow 

Troubleshoot issues with Microsoft SharePoint Foundation. 

Correlation ID: 0b8e0b67-f824-4aa5-8316-424ada134f8d 

Date and Time: 6/25/2010 10:59:17 AM 

Go back to site

هذا السلوك يبدو متقطع. ماذا يحدث هنا؟

هل كانت مفيدة؟

المحلول

تكمن المشكلة في أن نموذج بدء سير العمل SharePoint يخبئ عنصر قائمة سير العمل على pageload ، وعندما تقوم بإجراء تغييرات على العنصر بين تحميل الصفحة واتصالات HandlesTartWorkFlow (أي النقر فوق زر START Workflow) ، فإن SharePoint يرفرف على هذا العنصر الذي تقوم به إن الحديث عن شيء مختلف (العنصر المخحيط) للعنصر الموجود في نقطة المشاركة (والذي يتضمن التغييرات التي أجريتها للتو).

الخطوات العامة لإعادة إنتاج المشكلة هي:

  1. ابدأ سير العمل بحيث يظهر نموذج البدء.
  2. تغيير بعض الممتلكات على سير العمل
  3. استدعاء workflowproperties.item.update لحفظ التغييرات على SharePoint
  4. استدعاء HANDLESTARTWORKFLOW.

سوف تحصل على الخطأ.

قد يبدو الخطأ متقطعًا إذا تم إجراء بعض الوقت من خلال تغيير خصائص عنصر سير العمل في "جلسة" تحميل صفحة منفصلة إلى الجلسة التي يتم النقر عليها زر بدء سير العمل. على سبيل المثال ، إذا قمت بنشر بعض بيانات النماذج ، ثم انقر فوق زر START Workflow ، ثم يعمل كل شيء ، لأن Postback حدث ثم تم تحميل الصفحة.

ولكن إذا كنت تستخدم حدث ASP Textbox OnTextChanged ، فقم بتغيير النص ثم انقر فوق زر START Workflow ، فسيتم إطلاق الحدث غير المتقدم بعد تحميل الصفحة بالبيانات القديمة ، ويتم تغيير البيانات إلى البيانات الجديدة وبدأ سير العمل من قبل يتم إعادة تحميل بيانات العنصر من SharePoint.


الإصلاح سهل: إعادة تحميل بيانات عنصر سير العمل قبل بدء سير العمل. سيؤدي ذلك إلى أن يكون عنصر سير العمل المخطط مؤقتًا وإصدار SharePoint من العنصر هو نفسه ، وستكون نقطة المشاركة سعيدة.

في منطقة "رمز بدء سير العمل" ، التغيير:

Private Sub StartListWorkflow()

    Dim association As SPWorkflowAssociation = workflowList.WorkflowAssociations.Item(New Guid(associationGuid))
    Web.Site.WorkflowManager.StartWorkflow(workflowListItem, association, GetInitiationData)
    SPUtility.Redirect(workflowList.DefaultViewUrl, SPRedirectFlags.UseSource, System.Web.HttpContext.Current)
End Sub

إلى

Private Sub StartListWorkflow()

    'Re-initialize the workflow parameters, particularly the workflowListItem, in case it has been changed since page load.'
     InitializeParams()

    Dim association As SPWorkflowAssociation = workflowList.WorkflowAssociations.Item(New Guid(associationGuid))
    Web.Site.WorkflowManager.StartWorkflow(workflowListItem, association, GetInitiationData)
    SPUtility.Redirect(workflowList.DefaultViewUrl, SPRedirectFlags.UseSource, System.Web.HttpContext.Current)
End Sub

وكل شيء يجب أن يبدأ العمل مرة أخرى.

نصائح أخرى

نفس الرسالة التي ستحصل عليها إذا حاولت بدء عمل سير العمل (من خلال نموذج البداية المخصصة) الذي يعمل بالفعل على العنصر. الحل هنا هو التحقق من حالة سير العمل على العنصر.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top