執行工作流命令以更改工作流狀態
感謝這篇精彩的帖子
如果我們想模仿 Sitecore UI 行為並執行將改變工作流狀態的命令,我們需要使用 WorkflowProvider 來獲取分配給給定項的工作流例項,並使用選定的命令 ID 呼叫 Execute 方法。這將觸發在命令項節點下定義的所有操作,更改項的狀態並觸發在新狀態項節點下定義的所有自動操作:
public static WorkflowResult ExecuteCommand(Item item, string commandName, string comment)
{
IWorkflow workflow = item.Database.WorkflowProvider.GetWorkflow(item);
if (workflow == null)
{
return new WorkflowResult(false, "No workflow assigned to item");
}
WorkflowCommand command = workflow.GetCommands(item[FieldIDs.WorkflowState])
.FirstOrDefault(c => c.DisplayName == commandName);
if (command == null)
{
return new WorkflowResult(false, "Workflow command not found");
}
return workflow.Execute(command.CommandID, item, comment, false, new object[0]);
}