إطلاق سير عمل SharePoint عن طريق تحديث عنصر قائمة من خلال خدمة ويب القائمة

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

سؤال

أقوم بتطوير سير عمل SharePoint المتسلسل البسيط والذي يجب أن يكون مرتبطًا بمكتبة المستندات.عند ربط سير العمل الصغير بمكتبة المستندات، قمت بتحديد هذه الخيارات

  • السماح لبدء تدفق سير العمل هذا يدويًا بواسطة مستخدم مصادق مع أذونات تحرير العناصر.
  • ابدأ سير العمل هذا عند إنشاء عنصر جديد.
  • ابدأ سير العمل هذا عند تغيير عنصر.

أقوم الآن بتحميل مستند إلى هذه المكتبة ويبدأ سير العمل ويرسل بريدًا على سبيل المثال.ويكتمل وكل شيء على ما يرام.

عندما أقوم بتحديد تحرير الخصائص على العنصر الجديد وحفظ التغيير، يتم تشغيل سير العمل مرة أخرى.بالتأكيد ما كنا نتوقعه.

حتى عند نسخ عنصر جديد إلى المكتبة بمساعدة خدمة الويب Copy.asmx، يبدأ سير العمل بشكل طبيعي.

لكن الآن أريد تحديث العنصر عبر SharePoint WebService Lists.asmx.

لي كامل يذهب هنا:

<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 أن هذا خطأ.إنه خطأ بسيط، نظرًا لوجود حل بديل جيد، لذلك قد يستغرق الأمر وقتًا أطول، حتى يتم إصلاح هذا الخطأ (قال فني الدعم شيئًا ما بخصوص حزمة الخدمة التالية أو الإصدار التالي (!)).

ولكن الآن لهذه المشكلة.

السبب

دعونا نلقي نظرة على كود CAML من سؤالي:

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

لأي سبب من الأسباب، لا يعمل مدير سير العمل مع المعرف، أدخلنا في السطر الثاني.ومن الغريب أن جميع أوامر SharePoint الأخرى تعمل باستخدام المعرف، ولكن ليس مدير سير العمل.يعمل مدير سير العمل مع اسم المستند "المؤهل بالكامل".لذا، نظرًا لعدم وجود أي دليل لدينا ولم نقم بإدخال أي اسم مستند مؤهل بالكامل، فإن مدير سير العمل يتخذ اسمًا افتراضيًا لمكتبة المستندات الحالية.والآن بدأت رسالة الخطأ تصبح منطقية:

The object specified does not belong to a list.

بالطبع، الكائن (مكتبة المستندات) لا ينتمي إلى قائمة، بل هو القائمة.

الحل

يتعين علينا إضافة سطر آخر إلى استعلام CAML الخاص بنا:

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

يقوم FileRef بتمرير اسم المستند المؤهل بالكامل إلى مدير سير العمل، والذي - الآن سعيد تمامًا - يبدأ سير عمل العنصر.

كن حذرًا، يجب عليك تضمين مسار الخادم المطلق الكامل، مع حذف اسم الخادم الخاص بك (الموجود على سبيل المثال في خاصية ServerRelativePath الخاصة بـ SPItem).

استعلام 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 وسيقوم بإصدار مقالة MSDN حول هذا الموضوع.في الشهر المقبل، آمل أن تساعد هذه المقالة حول Stackoverflow المطورين في نفس الموقف.

شكرا للقراءة!

نصائح أخرى

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

أتمنى أن يساعدك هذا...

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

لقد رأيت نفس السلوك.ولكن بعد ذلك تحصل مشاركات مثل هذا, ، يوضح للأشخاص كيفية إنشاء واحدة يوميًا لإعداد تذكيرات عبر البريد الإلكتروني.

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