2009-06-24 14 views
1

Ich habe einen Workflow, der auf einem Element in einer Liste ausgeführt wird. Der Workflow verfügt über eine OnWorkflowItemChanged-Aktivität, die sich innerhalb einer While-Aktivität befindet. Ich weiß, dass der Workflow in die While-Schleife eintritt. Wenn ich das Element über die Benutzeroberfläche aktualisiere, wird die OnWorkflowItemChanged-Aktivität ausgelöst. Wenn ich das Element jedoch programmgesteuert (über eine Konsolenanwendung) aktualisiere, wird die OnWorkflowItemChanged-Aktivität nicht nur ausgelöst, sondern es reagiert auch nicht mehr über die Benutzeroberfläche auf Aktualisierungen.Workflow reagiert nicht mehr, wenn Listenelement programmgesteuert aktualisiert wird

Hat jemand das schon mal gesehen? Gibt es eine Möglichkeit, das Listenelement programmgesteuert zu aktualisieren, sodass der Workflow sowohl auf das Ereignis reagiert als auch auf zukünftige Ereignisse reagiert?

edit: Es funktioniert gut, wenn ich den Listen-Web-Service verwenden, um das Element zu aktualisieren. Warum versaut es sich, wenn ich das Objektmodell verwende?

Antwort

0

Es sieht so aus, als ob die einzige Möglichkeit, Ereignisse auszulösen, der Lists Web Service ist.

0

Ich weiß, wenn Sie ein Listenelement über das Objektmodell in einem Ereignisempfänger aktualisieren, können Sie SPEventReceiverBase.DisableEventFiring() usw. aufrufen. SPEventReceiverBase.DisableEventFiring() Haben Sie das versucht, oder gibt es einen Workflow?

Hier ist ein Hack Ereignis deaktivieren auf Updates Brennen, die aus dem Inneren eines Ereignisempfängers nicht ausgelöst werden: link text

+0

DisableEventFiring() und EnableEventFiring() sind für Ereignisempfänger, um rekursive Aufrufe zu verhindern. Sie sind nicht für Workflows oder externen Code verfügbar. Ich sehe auch nicht, warum das Aufrufen der SPListItem.Update() -Methode das Ereignis firint zu Beginn deaktivieren würde - es sollte nicht. – zimdanen

+0

hat den Link hinzugefügt, den ich über – Chloraphil

+0

einfügen wollte. Ich habe versucht, es vor und nach dem Update auf EnableEventFiring zu setzen, aber es löst das Ereignis immer noch nicht aus oder antwortet nicht über die Benutzeroberfläche. item ["Entscheidung 1"] = "Concur"; SPEventManagerWrapper.EnableEventFiring(); item.Update(); SPEventManagerWrapper.EnableEventFiring(); – zimdanen

0

Yup zustimmen i das Problem ist, dass Ereignis bei nicht alle feuern. Ich habe festgestellt, dass wenn Sie IIS zurücksetzen, es zum ersten Mal funktioniert, aber danach gibt es kein Update.

Verwandte Themen