2012-06-20 9 views
8

Momentan habe ich ein Problem mit dem Sitecore-Workflow. Das Problem ist wie folgt:Ärgerhaftes Problem mit Sitecore-Workflows und Standardwertvererbung

Mein Vorlagenstandardwert hat die Workflow- und Standard-Workflow-Felder festgelegt. Der Workflow-Status ist auf Entwurf festgelegt. Jedes Mal, wenn ich ein Element aus dieser Vorlage erstelle, erbt es nicht die Felder des Workflow-Abschnitts, alle sind leer

Wenn ich Workflow- und Workflow-Status für Elemente manuell festlegen, funktioniert es wie erwartet bis zum endgültigen Zustand. Wenn jedoch ein Inhaltsautor das Element bearbeitet, wird eine neue Version erstellt, aber nur der Workflowfeldwert wird beibehalten, während der Workflowstatus wieder leer ist.

was mache ich falsch? Warum passiert dies? Ich verwende Sitecore 6.5.0

Antwort

20

Die __Standard Values Ihrer Vorlage sollte nur die Default workflow Feld festgelegt haben; Setzen Sie das Feld Workflow nicht auf das Element __Standard Values, da dies darauf hinweist, dass sich das Element __Standard Values selbst im Workflow befindet! In ähnlicher Weise, setzen Sie nicht das State Feld auf dem __Standard Values Artikel als das heißt, dass der __Standard Values Artikel in diesem Zustand ist!

Ihr Workflow-Artikel enthält ein Initial State-Feld, das den Anfangszustand definiert, in dem sich ein Artikel befindet (vorausgesetzt, der Artikel verwendet diesen Workflow).

Wenn Sie ein Element erstellen, und das Element hat mit einem Workflow im Default Workflow Feld __Standard Value, dann wird dieses Element hat sein Workflow Feld das gleiche wie der Default Workflow Bereich seiner __Standard Values gesetzt. Der Status des Artikels ist Initial State, wie in diesem Workflow definiert.

+1

Wir sind genau dies zu tun, und etwas sehen wir nicht herausfinden können: ein Element aus der Benutzeroberfläche erstellen, das funktioniert, wie Sie beschreiben, aber Das Erstellen aus Code (item.Add, der die Vorlage angibt, für die der Workflow __Standard Values ​​Default festgelegt ist, wobei Element ein Inhaltsordner ist), legt das erstellte Element nicht im Workflow fest (Feld Workflow bleibt leer). Wir sind ratlos, was das bewirken könnte, irgendeine Idee? – Legolas

2

Beim Erstellen der Artikel über die API Sie zu haben scheinen speziell um den Workflow zu setzen und den Staat ausdrücklich:

Item myItem = parentItem.Add("New item", myTemplate); 
myItem.Editing.BeginEdit(); 
// set any other fields you want here 
... 
// Now explicitly set the workflow and state here on your new item 
// (make sure you get the correct GUIDs by viewing raw values on your workflow and workflow state items)... 
myItem[FieldIDs.Workflow] = "{212BCCCB-8197-45C0-81CC-621E0553C25F}"; 
myItem[FieldIDs.WorkflowState] = "{E8228D86-D780-4F34-B372-6A4D29B67AF9}"; 
myItem.Editing.EndEdit(); 

Ich gehe davon aus, dass, wenn Sie es über die Benutzeroberfläche zu tun gibt es einige zusätzliche Pipelines die verarbeitet werden, die dies für Sie tun, wenn Sie den Inhalts-Editor usw. verwenden, den Sie mithilfe der API umgehen.

In der Tat, hier ist ein relevanter Beitrag am SDN: http://sdn.sitecore.net/Forum/ShowPost.aspx?PostID=45991

+0

Verwenden Sie diese Methode nicht mit hartcodierten Guids, überprüfen Sie diese Seite und sehen Sie sich die Antwort von jRobbins an, wie Sie sie richtig einstellen können. http://stackoverflow.com/questions/13528431/sitecore-assign-workflow-to-an-item-programmatically –

+1

@Martin Sie haben den Punkt verpasst. Der Code sollte nicht produktionsbereit sein - er diente lediglich Demonstrationszwecken. Vereinbart natürlich nicht ID-Codes usw. in prod-Code! Fakt ist, dass wenn Sie es über die Benutzeroberfläche tun, einige zusätzliche Pipelines verarbeitet werden, die dies für Sie tun, wenn Sie den Inhalts-Editor usw. verwenden. Kaum zu glauben, dass es sich lohnt, den – geedubb

+0

"richtigen" Weg zu einem Workflow bei http: //stackoverflow.com/questions/13528431/sitecore-assign-workflow-to-an-item-programmatically: Ich glaube nicht, dass der vorgeschlagene übermäßig komplizierte Code mit 4 (!) verschachtelten if-Anweisungen der "richtige" Weg sein sollte etwas tun. Darüber hinaus scheint die Frage nicht zu beantworten, wie einem Artikel ein Workflow und ein zufälliger Workflow-Status zugewiesen werden.Stattdessen verschiebt es das Element im Grunde in den nächsten Workflow-Status, wenn der nächste Status zufällig der gewünschte Status ist – eloycm