Sitecore 如何在代码中执行工作流?
情景:Sitecore 如何在代码中执行工作流?,sitecore,sitecore6,sitecore-workflow,Sitecore,Sitecore6,Sitecore Workflow,情景: 用户单击工作流上的命令 工作流自定义操作执行许多检查 工作流自定义操作根据结果在同一工作流上执行另一个命令 到目前为止,我掌握的代码是: Database db = Factory.GetDatabase("master"); if (Request.QueryString["_id"] != null) { var itm = db.GetItem(new ID(Request.QueryString["_id"])); WorkflowCommand[] availabl
- 用户单击工作流上的命令
- 工作流自定义操作执行许多检查
- 工作流自定义操作根据结果在同一工作流上执行另一个命令
Database db = Factory.GetDatabase("master");
if (Request.QueryString["_id"] != null)
{
var itm = db.GetItem(new ID(Request.QueryString["_id"]));
WorkflowCommand[] availableCommands = wf.GetCommands(itm.Fields["__Workflow state"].Value);
wf.Execute(Request.QueryString["command"], itm, "Testing working flow new screens", false, new object[] { }); // Execute the workflow step.
}
但是,我在wf.Execute行上得到了一个未设置为实例错误的对象,但没有任何有意义的堆栈跟踪或任何内容:(
我输入了wf.GetCommands
行只是为了检查东西是否在我期望的地方,并且availableCommands
中填充了一个很好的现有命令列表
我已经检查了commandId
是否有效并存在
Itm
不为空,并且是工作流关联的内容项
(我希望工作流在上下文中运行)
我已检查用户上下文等是否有效,并且没有权限问题
唯一的区别是,我在sitecore中执行的
.aspx
页面中运行此代码-希望如此,除非有未正确设置的上下文项,否则我不会认为这会导致问题。工作流需要在具有内容数据库的SiteContext
中运行并启用工作流。在您的站点中执行此操作的最简单方法是使用SiteContextSwitcher
更改为“shell”站点
在WeBlog Sitecore模块的代码中可以找到这方面的示例
工作流需要在启用了ContentDatabase
和工作流的SiteContextSwitcher
内运行。在站点内执行此操作的最简单方法是使用SiteContextSwitcher
更改为“shell”站点
在WeBlog Sitecore模块的代码中可以找到这方面的示例
似乎是因为我在aspx页面中运行;调用GetWorkFlowState失败,因为Context.ContentDatabase为空。现在如何排序…似乎是因为我在aspx页面中运行;调用GetWorkFlowState失败,因为Context.ContentDatabase为空。现在如何排序。。。
using (new SiteContextSwitcher(SiteContextFactory.GetSiteContext("shell")))
{
wf.Execute(Request.QueryString["command"], itm, "Testing working flow new screens", false, new object[] { }); // Execute the workflow step.
}