设想:
- 用户单击工作流上的命令
- 工作流自定义操作执行多项检查
- 工作流自定义操作根据结果在同一工作流上执行另一个命令
我到目前为止的代码是:
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 行上得到一个 Object not set to an instance error - 但没有有意义的堆栈跟踪或任何东西:(
我wf.GetCommands
在行中只是为了检查事情是否真的在我期望的地方,并且availableCommands
填充了一个很好的现有命令列表。
我检查了commandId
它是否有效并且存在。
Itm
不为空,并且是Content Item
工作流关联的 (我希望工作流在上下文中运行)。
我检查了用户上下文等是否有效,并且没有权限问题。
唯一的区别是我.aspx
在 sitecore 中执行的页面中运行此代码 - 希望,除非存在未正确设置的上下文项,否则我不会期望这会导致问题。