Sitecore工作流程 - 以草稿状态发布项目

时间:2015-01-07 16:52:18

标签: sitecore sitecore7 sitecore7.1 sitecore-workflow

我目前正在使用处于草稿工作流状态的sitecore项目。发生以下情况:

  • 创建将进入工作流草稿状态的项目
  • 从主数据库发布项目/将父项目(已选择子项目)发布到Web数据库,忽略发布警告提示
  • 该项目将显示在网络数据库中,但没有版本

这会导致我们的控件渲染项目但是使用标准值,因为没有版本。当然,我们可以添加item.Versions.Count>的检查。 0但我的问题是为什么会发生这种情况?

草稿工作流状态中的项目肯定不会以任何方式出现在Web数据库中吗?

使用的工作流程非常标准,没有自定义。状态和命令是:

  • 草案
    • 提交
  • 等待批准
    • 拒绝
    • 批准
      • 验证操作
  • 已批准
    • 自动发布

提前致谢。

4 个答案:

答案 0 :(得分:1)

我个人认为您应该检查版本计数。如果您计划支持多语言网站,则完全可以使用一种语言版本,而不是另一种语言版本(例如,未以西班牙语批准)。您希望控件能够处理该场景(或执行回退)。

当前语言的当前用户可能没有有效的版本回来是完全有效的。我希望Web控件的业务逻辑能够处理这些场景。

答案 1 :(得分:1)

要明确回答您的问题,会发生这种情况,因为该项不是null但没有版本。版本是项目的维度,它恰好是"空的"如果你没有版本。因此,您的代码获取了一个有效的非null项,但没有字段值,因为没有版本,因此您的控件不会填充数据。

这只会发生在新物品上。示例:创建一个项目,你有v1,它在草稿中。你"发布"这个项目。该项目转到Web数据库,但它的v1维度没有,因此您将留下一个没有版本的非null项目。

正如杰伊所说,解决方案是在查询项目时检查这一点。

答案 2 :(得分:1)

我相信您可以在配置中的每个站点节点上使用以下属性。

<site name="website" filterItems="true" ... />

如果将此设置为true无法解决问题,那么除了上述设置之外,您还可以在Sitecore.Pipelines.FilterItem.EnsureFilteredItem步骤之前添加以下管道步骤。

public class HideEmptyItem
{
    public void Process(FilterItemPipelineArgs args)
    {
        if ((Context.Site != null && Context.Site.DisplayMode == DisplayMode.Normal) && args.Item.Paths.Path.StartsWith("/sitecore/content/"))
        {
            try
            {
                Context.Site.DisableFiltering = true;
                if (args.Item.Database.GetItem(args.Item.ID, Context.Language).Versions.Count == 0)
                {
                    args.FilteredItem = null;
                }
            }
            finally
            {
                Context.Site.DisableFiltering = false;
            }
        }
    }
}

同时确保相应地设置以下内容,默认值为false;

<setting name="Publishing.PublishEmptyItems" value="false" />

我实际上遇到了这个问题但是以不同的方式。如果您使用发布限制,您最终可能会得到一个没有版本但仍可以发布的项目。项目最终没有任何版本的方式有很多种,而不仅仅是一个没有通过工作流推送的单个版本的新项目。上述修复实际上是由Sitecore支持提供的,并为我工作。

如果这对您不起作用,那么我会建议在发布项目时添加检查以查看它们是否有任何版本,但我相信这是上面的解决方案应该做的。

编辑:将属性从“hideEmptyItems”更改为“filterItems”并添加了进一步说明。

答案 3 :(得分:0)

首先,默认工作流程应设置为项目模板&#34; __标准值&#34;。
第二,工作流程与&#34; admin&#34;帐户不起作用。尝试其他帐户。