现在我遇到了sitecore工作流程的问题。问题如下:
我的模板标准值已设置工作流和默认工作流字段集。工作流状态设置为草稿。但是,每次我从此模板创建项目时,它都不会继承工作流程部分字段,所有这些都是空的
如果我手动设置项目的工作流程和工作流程状态,它将按预期工作到最终状态。但是,如果内容作者编辑该项目,则会创建新版本,但仅保留工作流程字段值,而工作流程状态再次为空。
我做错了什么?为什么会这样?我正在使用sitecore 6.5.0
答案 0 :(得分:23)
模板的__Standard Values
应该只设置Default workflow
字段;不要在Workflow
项目上设置__Standard Values
字段,因为这暗示了__Standard Values
项目本身就在工作流程中!同样,不要在State
项上设置__Standard Values
字段,因为它表示__Standard Values
项目处于该状态!
您的工作流程项目上有一个Initial State
字段,用于定义项目所处的初始状态(假设该项目使用该工作流程)。
当您创建项目,并且该项目在__Standard Value
字段中包含Default Workflow
工作流程时,该项目的Workflow
字段设置与{{{1}相同1}} Default Workflow
的字段。项目所处的状态将是所述工作流程中定义的__Standard Values
。
答案 1 :(得分:3)
当您通过API创建项目时,您似乎必须明确地设置工作流程和状态:
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();
我假设当您通过UI执行此操作时,会有一些额外的管道在您使用内容编辑器等时为您执行此操作,您可以使用API绕过它。
事实上,这是SDN上的相关帖子: http://sdn.sitecore.net/Forum/ShowPost.aspx?PostID=45991