5

ワークフローを構成しました。通常どおり「下書き」状態から開始します。そして、テンプレートの標準値のワークフローを構成しました。コンテンツエディターで完璧に機能します。(コンテンツエディターでアイテムを作成すると、アイテムを作成すると、アイテムにワークフローが割り当てられ、状態が「下書き」になります。)

しかし、上記のテンプレートでプログラムでアイテムを作成すると、ワークフローが割り当てられません。ワークフローを割り当てるにはどうすればよいですか? コードサンプルがあれば共有してください。

ありがとう。

Sitecore.Data.Items.TemplateItem template = this.MasterDatabase.GetItem("/sitecore/templates/user defined/sample types");
Sitecore.Data.Items.Item parent = this.MasterDatabase.GetItem(parentId); 

Sitecore.Data.Items.Item newItem;                
// Create new item and retrieve it
newItem = template.CreateItemFrom("sampleName", parent);

newItem.Editing.BeginEdit();

newItem.Name = StringFormatter.CreateItemNameFromID(this.newItem);
newItem.Fields["Title"].Value = "Sample Title"

newItem.Editing.EndEdit();
4

4 に答える 4

4

標準フィールドの問題を解決し、

newItem.Editing.BeginEdit();                    
newItem.Fields["__Workflow"].Value = "{4D1F00EF-CA5D-4F36-A51E-E77E2BAE4A24}"; //Set workflow
newItem.Fields["__Workflow state"].Value = "{7F39DF46-B4B9-4D08-A0D4-32DE6FD643D1}"; //Set   workflow state to Unposted.
newClassified.Editing.EndEdit();  
于 2012-11-29T12:34:04.800 に答える
2

私はこれに対する良い答えを探しました。新しいアイテムを作成していて、そのワークフローを開始したいと考えていました。jRobbins の回答は、アイテムの現在のワークフロー状態が null の場合に例外がスローされ、初期ワークフロー状態を設定する適切な方法が提供されなかったため、うまくいきませんでした。

以下は私のために働いた:

var workflow = Factory.GetDatabase("master").WorkflowProvider.GetWorkflow(workflowId);
workflow.Start(item);

これにより、新しいアイテムのワークフローが設定され、ワー​​クフローの状態が初期状態に設定されます。

于 2014-05-07T15:53:48.780 に答える
1

標準値にデフォルトのワークフローを設定したことを確認した後、上記のポスターのおかげで、次の組み合わせが完全に機能しました。

var workflowId = item.Fields["__Default workflow"].Value;
var workflow = Factory.GetDatabase("master").WorkflowProvider.GetWorkflow(workflowId);
workflow.Start(item);
于 2014-08-13T12:05:24.010 に答える