2015-08-26 54 views

回答

1

为了进行自动发布,你的最终状态应该包含一个工作流操作,完成该工作适合你。你可以看看样本工作流程(默认带Sitecore) - 批准状态。它包含子项自动发布,它有两个字段。

类型的字符串:

Sitecore.Workflows.Simple.PublishAction, Sitecore.Kernel 

设置,其实做出版的类。你可以从这个类继承并实现你自己的行为,提供额外的参数等。我建议你采用dotPeek或Reflector并查找这个类实现,这样你可以调整自己的代码。

参数:

deep=0 

..stands递推发布子项。

更新:让我们对反编译的类来看看从工作流程示例自动发布操作:从上面默认例子

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 /系统/发布目标路径。正如我上面提到的,您可以使用自己的实现创建自己的类,并从工作流操作定义项中引用该类。

+0

但你在哪里指出,数据库或连接字符串 – Sukhjeevan

+0

我已经更新了答案带来更清楚地说明它是如何工作的内部和目标是定义,请参阅上文。 –

+0

谢谢马丁它为我制定了 – Sukhjeevan

1

您可以查看示例工作流的自动发布操作。但一般而言,您可以创建型工作流操作:Sitecore.Workflows.Simple.PublishAction, Sitecore.Kernel和设置参数为deep=1&related=1&targets=somedb,web&alllanguages=1

+0

谢谢,所以我们也可以指定目标数据库的参数 – Sukhjeevan