تأخير النشاط في مجال معالجة النطاق في الأحداث - ويندوز سير العمل SharePoint

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

سؤال

أحاول إنشاء سيناريو بعد:

  • يتم تعيين مهمة للمستخدم لإكمال
  • يتم إنشاء مهمة للمدير لإعادة تعيين مهمة المستخدم إذا لزم الأمر (لا تسأل، أرادوا ذلك بهذه الطريقة)
  • تذكير بالبريد الإلكتروني neeeds التي سيتم إرسالها عندما تقترب المهمة تاريخ استحقاق

لذلك، فكرت في استخدام EventHandlingScope لهذا:

  • أنا أستمع إلى تغيير المهمة في الفرع الرئيسي لنشاط EventSandlingScope،
  • الاستماع إلى تغيير المهمة إعادة تعيين في الفرع مدفوع الأحداث - وإذا تم تنشيط المهمة إعادة تعيين، قم بإعادة تعيين المهمة الأولى للمستخدم المحدد
  • في حدث آخر مدفوع، استخدم فرع نشاط تأخير وتحقق دوريا إذا كانت المهمة المعينة للمستخدم تقترب من تاريخ استحقاق وإرسال تذكير بريد إلكتروني

لذلك، أنا على الرغم من أن Eventhandlingscope سيكون جيدا لهذا، وذلك في الغالب، باستثناء المشكلة مع التأثير.

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

إذن، هل هذا هو السلوك المتوقع؟ لماذا لا تسقط حلقة التأخير؟ كيف يمكنني القيام بذلك بشكل مختلف؟ فكرتي مع CAG، ولكن هذا يبدو أكثر تعقيدا قليلا ...

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

Update2: لقد قمت بإعادة صياغة النص لجعله أكثر وضوحا

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

المحلول

الحل

ترتيب النشاط الأعمالي الذي يحل هذه المشكلة هو WhileActivity تحتوي على أ ListenActivity.

يتم إعطاء نشاط الاستماع 3 EventDrivenActivity الفروع. في الأول هو "فرع" مهمة المستخدم مكتملة "، والثاني هو" مدير تغيير المستخدم المعين "والثالث يحتوي على أ DelayActivity تليها منطق البريد الإلكتروني الخاص بك.

في نشاط الاستماع، يمكن لأي من الفروع إكمال نشاط الاستماع وعندما يقومون بإلغاء الأنشطة الأخرى في نشاط الاستماع.

ستحتاج إلى ضمان تعيين تسلسل "مهمة المستخدم المكتملة" بعض القيمة التي يمكن اختبارها بواسطة الحلقة أثناء خروج الحلقة أثناء حلقها عندما يكمل المستخدم مهمة.

عندما يقوم فرع بخلاف فرع "مهمة المستخدم المكتملة" المسؤولة عن إكمال ListenActivity سوف سير العمل حلقة العودة إلى ListenActivity وإعادة تنفيذ جميع الأنشطة الثلاثة التي يحركها الأحداث بما في ذلك الشخص الذي يحتوي على DelayActivity.

لاحظ أن هذا مختلف قليلا عن نهج EventHandlingScope لأن "الاستماع لمهمة المستخدم المكتملة" سيتم إلغاؤه وإعادة تنفيذه في حين أن EventHandlingScope غير ذلك لن يحدث. IMO هذا ترتيب أفضل لأنه يعني أن المستخدم الذي تم تحديده حاليا للقيام بالمهمة في بداية نشاط الاستماع مكفول في النهاية (لأنه إذا تم تغيير النشاط بأكمله تم تجاهله وبدأ واحد جديد ).

لماذا يطلق التأخير فقط مرة واحدة في enventhandlingscope

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

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

في حالة DelayActivity هناك بعض "حدث TIMER TIMED" الداخلي الذي يتم الاستماع إليه. عند إدخال التأخير أولا يتم إدخال المهلة هو الإعداد بحيث يطلق المؤقت النار في الوقت المناسب، ثم يستمع إلى ذلك الحدث. بمجرد قيامه بإعادة النطاق إلى الاستماع إلى "حدث مستقل"، لا يوجد إعادة تشغيل التعليمات البرمجية الأولي التي تقوم بإعداد المهلة، وبالتالي لا يوجد حدث آخر "حدث مستأجر" آخر.

نصائح أخرى

أعلم أنك لا ترغب في سماع ذلك، لكن ستكون أفضل حالا لإنشاء سير عمل بدلا من المعالج حيث تم تصميم سير العمل لمعالجة البعد الزمني أفضل بكثير لأنها "تشغيل طويل". المعالجات الحدث أكثر تحصيلا لحضور الحدث في الوقت المحدد يؤدي إليهم ثم يكملون إجراء. ليس ذلك فحسب، ولكن الحكم من ما تكتبه، إذا كانت المتطلبات هي بسيطة، فيمكنك إنشاء سير عمل SharePoint Designer حتى لا تضطر حتى إلى Crach Open Visual Studio.

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

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

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