现在我遇到了 sitecore 工作流程的问题。问题如下:
我的模板标准值已设置工作流和默认工作流字段集。工作流状态设置为草稿。但是,每次我从这个模板创建一个项目时,它都不会继承工作流部分字段,它们都是空的
如果我为项目手动设置工作流和工作流状态,它会按预期工作直到最终状态。但是,如果内容作者编辑该项目,则会创建一个新版本,但仅保留工作流字段值,而工作流状态再次为空。
我做错了什么?为什么会这样?我正在使用 sitecore 6.5.0
现在我遇到了 sitecore 工作流程的问题。问题如下:
我的模板标准值已设置工作流和默认工作流字段集。工作流状态设置为草稿。但是,每次我从这个模板创建一个项目时,它都不会继承工作流部分字段,它们都是空的
如果我为项目手动设置工作流和工作流状态,它会按预期工作直到最终状态。但是,如果内容作者编辑该项目,则会创建一个新版本,但仅保留工作流字段值,而工作流状态再次为空。
我做错了什么?为什么会这样?我正在使用 sitecore 6.5.0
您的__Standard Values
模板应该只Default workflow
设置字段;不要Workflow
在项目上设置字段,__Standard Values
因为这暗示__Standard Values
项目本身就在工作流程中!同样,不要State
在项目上设置字段,__Standard Values
因为这表示__Standard Values
项目处于该状态!
您的工作流程项目上有一个Initial State
字段,用于定义项目将处于的初始状态(假设项目使用该工作流程)。
当您创建一个项目,并且该项目__Standard Value
在字段中具有工作流时Default Workflow
,该项目的字段设置将与其的字段Workflow
相同。项目所处的状态将与所述工作流程中定义的相同。Default Workflow
__Standard Values
Initial State
当您通过 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