Sitecore默认工作流程不适用于项目

时间:2015-04-08 14:45:14

标签: sitecore sitecore-workflow

在我的工作中,我们使用Sitecore 7.2。我们在线有两种表单,可以将提交内容转换为sitecore树中的项目。这些项目需要由编辑器审阅/编辑,然后才能从“提交”文件夹拖动到实时网站上显示的文件夹中。

我们最初遇到的问题是这些项目不属于工作流程。因此,如果对它们进行了编辑,则不会触发发布作业。我创建了一个简单的工作流程,任何编辑/保存都会自动批准和发布项目。

我将其应用于模板A和模板B的标准值字段。使用模板A创建新项目时(无论是通过表单提交还是手动),都会创建项目并附加工作流程。

但是,使用模板B,永远不会附加工作流程。如果我手动将默认工作流添加到项目本身,它可以正常工作 - 但我需要在创建项目时添加它 - 或者在创建项目的新版本时添加。

有没有理由为项目模板的“__Standard Values”中添加的“默认工作流程”不会成为使用该模板的项目的一部分?

http://i.imgur.com/QE5JuyP.png

2 个答案:

答案 0 :(得分:3)

这是我上次遇到的问题。有些人说,即使我们将工作流程更新为现有项目,它也能正常工作,但它对其他一些项目并不起作用。

问题在于,即使您将默认工作流程设置为标准值,"工作流程"和"州"项目属性中的字段为空。所以,我所做的是使用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.
## Uncomment below two lines if you are ready to go for updating    
#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 :(得分:0)

I am facing the same issue. I do not see why my default workflow is not kicking in when locked for Editing or when newly created. If there is no other option then I think I have to go with @Jay's answer.

In addition to the above solution we might also want a check, to see if the Workflow State is Empty, in-order not to override the existing Workflow State (which is set manually).

EDIT: My Scenario: I installed a package with template first, then I installed another package with ONLY the Standard Values with Default Workflow set. I assume this caused the issue.

I re-packaged the template with standard values and Default Workflow set. Re-Installed the package by Overriding the existing templates. Now whenever I create a new Item, workflow is set properly. Hope this helps you.