10

现在我遇到了 sitecore 工作流程的问题。问题如下:

我的模板标准值已设置工作流和默认工作流字段集。工作流状态设置为草稿。但是,每次我从这个模板创建一个项目时,它都不会继承工作流部分字段,它们都是空的

如果我为项目手动设置工作流和工作流状态,它会按预期工作直到最终状态。但是,如果内容作者编辑该项目,则会创建一个新版本,但仅保留工作流字段值,而工作流状态再次为空。

我做错了什么?为什么会这样?我正在使用 sitecore 6.5.0

4

2 回答 2

23

您的__Standard Values模板应该只Default workflow设置字段;不要Workflow在项目上设置字段,__Standard Values因为这暗示__Standard Values项目本身就在工作流程中!同样,不要State在项目上设置字段,__Standard Values因为这表示__Standard Values项目处于该状态!

您的工作流程项目上有一个Initial State字段,用于定义项目将处于的初始状态(假设项目使用该工作流程)。

当您创建一个项目,并且该项目__Standard Value在字段中具有工作流时Default Workflow,该项目的字段设置将与其的字段Workflow相同。项目所处的状态将与所述工作流程中定义的相同。Default Workflow__Standard ValuesInitial State

于 2012-06-20T19:52:40.330 回答
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

于 2012-10-05T10:14:17.067 回答