Sitecore 工作流程不工作

Sitecore Workflow Is Not Working

我已经有一个带有模板A的内容项(item)。 模板A一开始没有设置任何工作流,我在模板的标准值中设置了一个新的工作流。

如果我转到内容项的工作流程部分,只有 "Default workflow" 更新。字段 "Workflow" 和 "State" 为空,即使我在工作流的 属性 中设置了 "Initial State",如下图所示。因此,工作流过程不适用于该项目。

但是,如果我使用已设置工作流的模板创建新项目,我可以看到所有基于其初始工作流设置的填充工作流字段。所以,工作流程是完美的。

我有很多页面没有工作流设置,我正准备在其模板中分配新的工作流。

我该如何解决这个问题??????


当您在标准值项目上设置默认工作流值时,它不会自动通过并将现有项目版本添加到特定工作流状态。这是因为之前发布的任何内容都将变为未发布状态,因为它会进入工作流程的默认状态,通常是草稿状态。

下次您向现在具有工作流的项目添加版本时(明确地或由 "editing" 作为较低级别的用户),其状态应设置为您期望的草稿。

如果您需要将项目的现有版本迁移到处于特定状态的工作流中,您可能需要通过代码执行此操作。

我使用了 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"