Annoying issue with sitecore workflows and standard value inheritance

白昼怎懂夜的黑 提交于 2019-12-18 13:09:12

问题


Right now i'm having a problem with sitecore workflow. The issue is as follows:

my template standard value has set the Workflow and Default Workflow fields set. The workflow state is set to draft. However, everytime i create an item from this template it is not inheriting the workflow section fields, all of them are empty

if i manually set workflow and workflow state for items, it works as expected up to the final state. However, if a content author edits the item, a new version is created but only the workflow field value is kept, while the workflow state is again empty.

what i'm doing wrong? why is this happening? I'm using sitecore 6.5.0


回答1:


The __Standard Values of your template should only have the Default workflow field set; do not set the Workflow field on the __Standard Values item as that insinuates that the __Standard Values item is itself in the workflow! Similarly, do not set the State field on the __Standard Values item as that is saying that the __Standard Values item is in that state!

Your Workflow item has an Initial State field on it that defines the initial state an item will be in (assuming the item uses that workflow).

When you create an item, and that item has a __Standard Value with a workflow in the Default Workflow field, then that item will have its Workflow field set the same as the Default Workflow field of its __Standard Values. The state the item is in will be the Initial State as defined on said workflow.




回答2:


When you create the item via the API you appear to have to specifically set the workflow and the state explicitly:

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(); 

I'm assuming that when you do it through the UI there are some extra pipelines that get processed that do this for you when using Content Editor etc, which you bypass by using the API.

In fact, here is a relevant post on SDN: http://sdn.sitecore.net/Forum/ShowPost.aspx?PostID=45991



来源:https://stackoverflow.com/questions/11127005/annoying-issue-with-sitecore-workflows-and-standard-value-inheritance

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!