我已经有一个模板A的内容项(项目),模板A最初没有设置任何工作流,我在模板的标准值中设置了一个新的工作流。
如果我转到内容项的工作流部分,只有“默认工作流”更新。"Workflow“和"State”字段是空的,即使我在工作流的属性中设置了“初始状态”,如下面的屏幕快照所示。因此,工作流流程不适用于该项。
但是,如果我使用模板已经设置的工作流创建新项,则可以根据其初始工作流设置看到所有已填充的工作流字段。因此,工作流过程是完美工作的。
我有许多没有工作流设置的页面,我将在它的模板中分配新的工作流。
我如何解决这个问题?

发布于 2015-03-26 18:33:53
我使用了Powershell脚本,它看起来像这样。它更新空字段并完美地工作。
##################################################################
## 1. Set default workflow state in template's standard value ##
## 2. Before running script, must set correct Context Item ##
##################################################################
function SetWorkflow($item)
{
## Update only items assigned __Default workflow
if ($item."__Default workflow" -eq "{A5BC37E7-ED96-4C1E-8590-A26E64DB55EA}") {
$item.__Workflow = "{A5BC37E7-ED96-4C1E-8590-A26E64DB55EA}";
$item."__Workflow state" = "{190B1C84-F1BE-47ED-AA41-F42193D9C8FC}";
}
}
## Update correct workflow information.
get-item . -Language * | foreach-object { SetWorkFlow($_) }
get-childitem . -recurse -Language * | foreach-object { SetWorkFlow($_) }
## Show Updated Result
get-item . -Language * | Format-Table Id, Name, Language, __Workflow, "__Workflow state", "__Default workflow"
get-childitem . -recurse -Language * | Format-Table Id, Name, Language, __Workflow, "__Workflow state", "__Default workflow"发布于 2015-03-26 05:02:23
当您在标准值项上设置默认工作流值时,它不会自动完成并将现有的项版本添加到特定的工作流状态。这是因为以前发布的任何内容都将成为未发布的,因为它将进入工作流的默认状态,这通常是一个草案状态。
下一次当您将一个版本添加到现在具有工作流的项(或者显式地或者通过“编辑”作为一个低级用户)时,它的状态应该按照您的预期设置为草案。
如果您需要将现有版本的项迁移到特定状态下的工作流中,那么您可能需要通过代码来实现这一点。
https://stackoverflow.com/questions/29263398
复制相似问题