Sitecore工作流审批状态查询

Sitecore工作流审批状态查询,sitecore,sitecore7,Sitecore,Sitecore7,我已经在sitecore项目中创建了工作流,在最终状态(批准)时,我只想自动发布到特定数据库。 所以,我应该在哪里进行更改以指向数据库 谢谢为了执行自动发布,您的最终状态应该包含一个工作流操作,它为您完成工作。您可以查看示例工作流(默认情况下随Sitecore提供)已批准状态。它包含有两个字段的子项“自动发布” 键入字符串: deep=0 Sitecore.Workflows.Simple.PublishAction,Sitecore.Kernel 设置实际上执行发布的类。您可以从该类继承并

我已经在sitecore项目中创建了工作流,在最终状态(批准)时,我只想自动发布到特定数据库。 所以,我应该在哪里进行更改以指向数据库


谢谢

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

键入字符串:

deep=0
Sitecore.Workflows.Simple.PublishAction,Sitecore.Kernel
设置实际上执行发布的类。您可以从该类继承并实现自己的行为,提供额外的参数等。我建议您使用dotPeek或Reflector并查找该类实现,以便您可以调整自己的代码

参数:

deep=0
..表示以递归方式发布子项

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

公共类发布操作
{
公共作废进程(WorkflowPipelineArgs args)
{
Item dataItem=args.dataItem;
Item innerItem=args.ProcessorItem.innerItem;
数据库[]目标=this.GetTargets(dataItem);
PublishManager.PublishItem(数据项、目标、新语言[1]
{
dataItem.Language
},(this.GetDeep(innerItem)?1:0!=0,0!=0);
}
私有bool GetDeep(项目actionItem)
{
返回actionItem[“deep”]=“1”| | WebUtil.ParseUrlParameters(actionItem[“parameters”])[“deep”]=“1”;
}
私有数据库[]GetTargets(项)
{
使用(新的SecurityDisabler())
{
Item obj=Item.Database.Items[“/sitecore/system/publishing targets”];
如果(obj!=null)
{
ArrayList ArrayList=新的ArrayList();
foreach(对象子对象中的BaseItem BaseItem)
{
字符串名称=baseItem[“目标数据库”];
如果(name.Length>0)
{
Database Database=Factory.GetDatabase(名称,false);
if(数据库!=null)
添加((对象)数据库);
其他的
Log.Warn(“PublishAction中的未知数据库:“+name,(object)this”);
}
}
将arrayList.ToArray(typeof(Database))作为数据库[]返回;
}
}
返回新数据库[0];
}
}

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

您可以查看示例工作流的自动发布操作。但通常,您可以创建类型为:
Sitecore.Workflows.Simple.PublishAction、Sitecore.Kernel
的工作流操作,并将参数设置为
deep=1&related=1&targets=somedb,web&alllanguages=1

但您指出了数据库或连接字符串的位置我已更新了答案,以便更清楚地了解其内部工作方式和目标的定义,请参见上文。谢谢,我们还可以在参数中指定目标数据库