Sitecore工作流审批状态查询

时间:2015-08-26 19:20:11

标签: sitecore sitecore7

我在sitecore项目和最终状态(Approval)中创建了工作流程我只想自动发布到特定数据库。 那么我应该在哪里进行更改以指向数据库。

由于

1 个答案:

答案 0 :(得分:1)

为了执行自动发布,您的最终状态应该包含一个工作流操作,为您完成工作。您可以查看示例工作流程(默认使用Sitecore) - 已批准状态。它包含子项自动发布,它有两个字段。

输入字符串:

Sitecore.Workflows.Simple.PublishAction, Sitecore.Kernel

设置实际上发布的类。您可以从该类继承并实现自己的行为,提供额外的参数等。我建议您使用dotPeek或Reflector并查找此类实现,以便您可以调整自己的代码。 / p>

<强>参数:

deep=0

..代表递归发布子项目。

更新:让我们看看示例工作流自动发布操作中的反编译类:

public class PublishAction
{
    public void Process(WorkflowPipelineArgs args)
    {
        Item dataItem = args.DataItem;
        Item innerItem = args.ProcessorItem.InnerItem;
        Database[] targets = this.GetTargets(dataItem);
        PublishManager.PublishItem(dataItem, targets, new Language[1]
  {
    dataItem.Language
  }, (this.GetDeep(innerItem) ? 1 : 0) != 0, 0 != 0);
    }

    private bool GetDeep(Item actionItem)
    {
        return actionItem["deep"] == "1" || WebUtil.ParseUrlParameters(actionItem["parameters"])["deep"] == "1";
    }

    private Database[] GetTargets(Item item)
    {
        using (new SecurityDisabler())
        {
            Item obj = item.Database.Items["/sitecore/system/publishing targets"];
            if (obj != null)
            {
                ArrayList arrayList = new ArrayList();
                foreach (BaseItem baseItem in obj.Children)
                {
                    string name = baseItem["Target database"];
                    if (name.Length > 0)
                    {
                        Database database = Factory.GetDatabase(name, false);
                        if (database != null)
                            arrayList.Add((object)database);
                        else
                            Log.Warn("Unknown database in PublishAction: " + name, (object)this);
                    }
                }
                return arrayList.ToArray(typeof(Database)) as Database[];
            }
        }
        return new Database[0];
    }
}
上面默认示例中的

GetTargets()方法会发布到 / sitecore / system / publishing targets 路径下指定的所有目标。如上所述,您可以使用自己的实现创建自己的类,并从工作流操作定义项中引用它。