我已经有一个带有模板A的内容项(项目)。 模板A最初没有设置任何工作流程,我在模板的标准值中设置了新的工作流程。
如果我转到内容项的工作流程部分,则只有"默认工作流程"更新。字段"工作流"和"州"即使我设置了#34;初始状态"在工作流程的属性中,如下面的屏幕截图所示。因此,工作流程不适用于该项目。
但是,如果我使用已设置工作流程的模板创建新项目,我可以根据其初始工作流程设置查看所有已填充的工作流程字段。因此,工作流程非常有效。
我有许多没有工作流程设置的网页,我即将在其模板中分配新的工作流程。
我该如何解决这个问题???????
答案 0 :(得分:2)
我使用的是Powershell Script,它看起来像这样。 它会更新空字段并完美运行。
##################################################################
## 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"
答案 1 :(得分:1)
在标准值项目上设置默认工作流程值时,它不会自动执行并将现有项目版本添加到特定工作流程状态。这是因为之前发布的任何内容都将取消发布,因为它将进入工作流的默认状态,这通常是草稿状态。
下次将项目添加到现在具有工作流程的项目时(显式或通过“编辑”作为较低级别用户),应将其状态设置为草稿,如您所料。
如果您需要将现有版本的项目迁移到特定州的工作流程中,您可能需要通过代码执行此操作。